curl --request POST \
--url https://api.birdeye.com/resources/v1/competitors/review \
--header 'Content-Type: application/json' \
--data '
{
"businessNumbers": [],
"fromDate": "04/01/2024",
"toDate": "08/03/2025",
"sources": [],
"brandIds": [],
"competitorLocationIds": []
}
'import requests
url = "https://api.birdeye.com/resources/v1/competitors/review"
payload = {
"businessNumbers": [],
"fromDate": "04/01/2024",
"toDate": "08/03/2025",
"sources": [],
"brandIds": [],
"competitorLocationIds": []
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
businessNumbers: [],
fromDate: '04/01/2024',
toDate: '08/03/2025',
sources: [],
brandIds: [],
competitorLocationIds: []
})
};
fetch('https://api.birdeye.com/resources/v1/competitors/review', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.birdeye.com/resources/v1/competitors/review",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'businessNumbers' => [
],
'fromDate' => '04/01/2024',
'toDate' => '08/03/2025',
'sources' => [
],
'brandIds' => [
],
'competitorLocationIds' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.birdeye.com/resources/v1/competitors/review"
payload := strings.NewReader("{\n \"businessNumbers\": [],\n \"fromDate\": \"04/01/2024\",\n \"toDate\": \"08/03/2025\",\n \"sources\": [],\n \"brandIds\": [],\n \"competitorLocationIds\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.birdeye.com/resources/v1/competitors/review")
.header("Content-Type", "application/json")
.body("{\n \"businessNumbers\": [],\n \"fromDate\": \"04/01/2024\",\n \"toDate\": \"08/03/2025\",\n \"sources\": [],\n \"brandIds\": [],\n \"competitorLocationIds\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/competitors/review")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"businessNumbers\": [],\n \"fromDate\": \"04/01/2024\",\n \"toDate\": \"08/03/2025\",\n \"sources\": [],\n \"brandIds\": [],\n \"competitorLocationIds\": []\n}"
response = http.request(request)
puts response.read_body[
{
"businessLocations": [
{
"businessId": 100031493,
"name": "Dieci Lifestyle Spa1",
"alias": "ST",
"businessNumber": 157984189025195,
"phone": "(973) 716-0102",
"address": "90 W Mount Pleasant Ave"
}
],
"competitorLocation": "C1",
"competitorBrand": "B1",
"source": "Google",
"rating": 4,
"reviewComment": "Great experience",
"reviewerName": "Allen",
"reviewDate": "2024-07-01",
"reply": "Thanks for the review"
},
{
"businessLocations": [
{
"businessId": 100033957,
"name": "Raghav_l",
"businessNumber": 159116903548016,
"phone": "(202) 555-0175"
}
],
"competitorLocation": "Dental Dreams",
"competitorBrand": "Dental Dreams - 60620",
"source": "Yelp",
"rating": 5,
"reviewComment": "Excellent service!",
"reviewerName": "Maria",
"reviewDate": "2024-07-03",
"reply": "We appreciate your feedback!"
}
]{
"code": 1161,
"message": "Invalid API key"
}{
"code": 1011,
"message": "Business id is invalid"
}{
"code": 89,
"message": "Rate limit exceeded"
}Retrieve Competitor Reviews
This API retrieves competitor review data for specified business numbers and date ranges.
curl --request POST \
--url https://api.birdeye.com/resources/v1/competitors/review \
--header 'Content-Type: application/json' \
--data '
{
"businessNumbers": [],
"fromDate": "04/01/2024",
"toDate": "08/03/2025",
"sources": [],
"brandIds": [],
"competitorLocationIds": []
}
'import requests
url = "https://api.birdeye.com/resources/v1/competitors/review"
payload = {
"businessNumbers": [],
"fromDate": "04/01/2024",
"toDate": "08/03/2025",
"sources": [],
"brandIds": [],
"competitorLocationIds": []
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
businessNumbers: [],
fromDate: '04/01/2024',
toDate: '08/03/2025',
sources: [],
brandIds: [],
competitorLocationIds: []
})
};
fetch('https://api.birdeye.com/resources/v1/competitors/review', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.birdeye.com/resources/v1/competitors/review",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'businessNumbers' => [
],
'fromDate' => '04/01/2024',
'toDate' => '08/03/2025',
'sources' => [
],
'brandIds' => [
],
'competitorLocationIds' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.birdeye.com/resources/v1/competitors/review"
payload := strings.NewReader("{\n \"businessNumbers\": [],\n \"fromDate\": \"04/01/2024\",\n \"toDate\": \"08/03/2025\",\n \"sources\": [],\n \"brandIds\": [],\n \"competitorLocationIds\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.birdeye.com/resources/v1/competitors/review")
.header("Content-Type", "application/json")
.body("{\n \"businessNumbers\": [],\n \"fromDate\": \"04/01/2024\",\n \"toDate\": \"08/03/2025\",\n \"sources\": [],\n \"brandIds\": [],\n \"competitorLocationIds\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/competitors/review")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"businessNumbers\": [],\n \"fromDate\": \"04/01/2024\",\n \"toDate\": \"08/03/2025\",\n \"sources\": [],\n \"brandIds\": [],\n \"competitorLocationIds\": []\n}"
response = http.request(request)
puts response.read_body[
{
"businessLocations": [
{
"businessId": 100031493,
"name": "Dieci Lifestyle Spa1",
"alias": "ST",
"businessNumber": 157984189025195,
"phone": "(973) 716-0102",
"address": "90 W Mount Pleasant Ave"
}
],
"competitorLocation": "C1",
"competitorBrand": "B1",
"source": "Google",
"rating": 4,
"reviewComment": "Great experience",
"reviewerName": "Allen",
"reviewDate": "2024-07-01",
"reply": "Thanks for the review"
},
{
"businessLocations": [
{
"businessId": 100033957,
"name": "Raghav_l",
"businessNumber": 159116903548016,
"phone": "(202) 555-0175"
}
],
"competitorLocation": "Dental Dreams",
"competitorBrand": "Dental Dreams - 60620",
"source": "Yelp",
"rating": 5,
"reviewComment": "Excellent service!",
"reviewerName": "Maria",
"reviewDate": "2024-07-03",
"reply": "We appreciate your feedback!"
}
]{
"code": 1161,
"message": "Invalid API key"
}{
"code": 1011,
"message": "Business id is invalid"
}{
"code": 89,
"message": "Rate limit exceeded"
}Headers
e.g. application/json
e.g. [Required] Partner specific API key provided by Birdeye for data exchange.
e.g. [Required] User assosiated businessNumber
Media type of the JSON request body.
Query Parameters
The starting index for pagination (0-based). Default is 0.
Number of records to return per page (max recommended: 100). Default is 25.
Sort order: 0 = Ascending, 1 = Descending order of review date. Default is 1.
Body
Location numbers of enterprise locations. If empty all valid enterprise locations will be selected.
Start date for the analysis period.
End date for the analysis period.
Aggregation sources.
Filter by specific competitor brand id.
Filter by specific competitor location IDs.
Response
OK
The list of business locations being analyzed
Show child attributes
Show child attributes
The name of the competitor location where the review was left
The brand name or identifier of the competitor
The review platform/source where the review was published
The star rating given by the reviewer (1-5 scale)
The actual text content of the review written by the customer
The name of the person who wrote the review
The date when the review was published (YYYY-MM-DD format)
The business owner's response to the review (if any)