Retrieve Competitor Reviews
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{}{
"code": 1167,
"message": "API key is missing"
}{
"code": 1011,
"message": "Business id is invalid"
}{
"code": 89,
"message": "Rate limit exceeded"
}Competitor AI
Retrieve Competitor Reviews
POST
/
v1
/
competitors
/
review
Retrieve Competitor Reviews
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{}{
"code": 1167,
"message": "API key is missing"
}{
"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
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
application/json
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 response is of type object.

