curl --request POST \
--url https://api.birdeye.com/resources/v1/insight/sentiment/locationInfo \
--header 'Content-Type: application/json' \
--data '
{
"reviewSources": [
"Google",
"Facebook",
"CitySearch"
],
"ratings": [
"0",
"1",
"3",
"4",
"5"
],
"businessNumbers": [
172957184851864,
174436684666401
],
"startDate": "02/25/2025",
"endDate": "02/01/2026",
"hierarchyNodeData": [
{
"levelId": "Region",
"levelNames": [
"Region1",
"Region2"
]
}
],
"groupByLevel": "Region",
"userEmail": "example@birdeye.com"
}
'import requests
url = "https://api.birdeye.com/resources/v1/insight/sentiment/locationInfo"
payload = {
"reviewSources": ["Google", "Facebook", "CitySearch"],
"ratings": ["0", "1", "3", "4", "5"],
"businessNumbers": [172957184851864, 174436684666401],
"startDate": "02/25/2025",
"endDate": "02/01/2026",
"hierarchyNodeData": [
{
"levelId": "Region",
"levelNames": ["Region1", "Region2"]
}
],
"groupByLevel": "Region",
"userEmail": "example@birdeye.com"
}
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({
reviewSources: ['Google', 'Facebook', 'CitySearch'],
ratings: ['0', '1', '3', '4', '5'],
businessNumbers: [172957184851864, 174436684666401],
startDate: '02/25/2025',
endDate: '02/01/2026',
hierarchyNodeData: [{levelId: 'Region', levelNames: ['Region1', 'Region2']}],
groupByLevel: 'Region',
userEmail: 'example@birdeye.com'
})
};
fetch('https://api.birdeye.com/resources/v1/insight/sentiment/locationInfo', 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/insight/sentiment/locationInfo",
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([
'reviewSources' => [
'Google',
'Facebook',
'CitySearch'
],
'ratings' => [
'0',
'1',
'3',
'4',
'5'
],
'businessNumbers' => [
172957184851864,
174436684666401
],
'startDate' => '02/25/2025',
'endDate' => '02/01/2026',
'hierarchyNodeData' => [
[
'levelId' => 'Region',
'levelNames' => [
'Region1',
'Region2'
]
]
],
'groupByLevel' => 'Region',
'userEmail' => 'example@birdeye.com'
]),
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/insight/sentiment/locationInfo"
payload := strings.NewReader("{\n \"reviewSources\": [\n \"Google\",\n \"Facebook\",\n \"CitySearch\"\n ],\n \"ratings\": [\n \"0\",\n \"1\",\n \"3\",\n \"4\",\n \"5\"\n ],\n \"businessNumbers\": [\n 172957184851864,\n 174436684666401\n ],\n \"startDate\": \"02/25/2025\",\n \"endDate\": \"02/01/2026\",\n \"hierarchyNodeData\": [\n {\n \"levelId\": \"Region\",\n \"levelNames\": [\n \"Region1\",\n \"Region2\"\n ]\n }\n ],\n \"groupByLevel\": \"Region\",\n \"userEmail\": \"example@birdeye.com\"\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/insight/sentiment/locationInfo")
.header("Content-Type", "application/json")
.body("{\n \"reviewSources\": [\n \"Google\",\n \"Facebook\",\n \"CitySearch\"\n ],\n \"ratings\": [\n \"0\",\n \"1\",\n \"3\",\n \"4\",\n \"5\"\n ],\n \"businessNumbers\": [\n 172957184851864,\n 174436684666401\n ],\n \"startDate\": \"02/25/2025\",\n \"endDate\": \"02/01/2026\",\n \"hierarchyNodeData\": [\n {\n \"levelId\": \"Region\",\n \"levelNames\": [\n \"Region1\",\n \"Region2\"\n ]\n }\n ],\n \"groupByLevel\": \"Region\",\n \"userEmail\": \"example@birdeye.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/insight/sentiment/locationInfo")
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 \"reviewSources\": [\n \"Google\",\n \"Facebook\",\n \"CitySearch\"\n ],\n \"ratings\": [\n \"0\",\n \"1\",\n \"3\",\n \"4\",\n \"5\"\n ],\n \"businessNumbers\": [\n 172957184851864,\n 174436684666401\n ],\n \"startDate\": \"02/25/2025\",\n \"endDate\": \"02/01/2026\",\n \"hierarchyNodeData\": [\n {\n \"levelId\": \"Region\",\n \"levelNames\": [\n \"Region1\",\n \"Region2\"\n ]\n }\n ],\n \"groupByLevel\": \"Region\",\n \"userEmail\": \"example@birdeye.com\"\n}"
response = http.request(request)
puts response.read_body{
"totalCount": 2,
"dataPoints": [
{
"id": 149546078883527,
"name": "194 - Greywolf Veterinary Hospital",
"score": 96.2,
"mentions": 120
},
{
"id": 149546078886677,
"name": "The animal hospital",
"score": 90,
"mentions": 87
}
]
}{
"code": 2003,
"message": "userEmail is mandatory"
}{
"code": 1167,
"message": "API key is missing"
}{
"code": 2151,
"message": "Not a valid reseller/enterprise id."
}{
"code": 1027,
"message": "Invalid business number."
}Insight Sentiment Location Info
Insight Sentiment Location Info API retrieves location-wise sentiment scores and mention counts for specified business locations and date ranges.
curl --request POST \
--url https://api.birdeye.com/resources/v1/insight/sentiment/locationInfo \
--header 'Content-Type: application/json' \
--data '
{
"reviewSources": [
"Google",
"Facebook",
"CitySearch"
],
"ratings": [
"0",
"1",
"3",
"4",
"5"
],
"businessNumbers": [
172957184851864,
174436684666401
],
"startDate": "02/25/2025",
"endDate": "02/01/2026",
"hierarchyNodeData": [
{
"levelId": "Region",
"levelNames": [
"Region1",
"Region2"
]
}
],
"groupByLevel": "Region",
"userEmail": "example@birdeye.com"
}
'import requests
url = "https://api.birdeye.com/resources/v1/insight/sentiment/locationInfo"
payload = {
"reviewSources": ["Google", "Facebook", "CitySearch"],
"ratings": ["0", "1", "3", "4", "5"],
"businessNumbers": [172957184851864, 174436684666401],
"startDate": "02/25/2025",
"endDate": "02/01/2026",
"hierarchyNodeData": [
{
"levelId": "Region",
"levelNames": ["Region1", "Region2"]
}
],
"groupByLevel": "Region",
"userEmail": "example@birdeye.com"
}
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({
reviewSources: ['Google', 'Facebook', 'CitySearch'],
ratings: ['0', '1', '3', '4', '5'],
businessNumbers: [172957184851864, 174436684666401],
startDate: '02/25/2025',
endDate: '02/01/2026',
hierarchyNodeData: [{levelId: 'Region', levelNames: ['Region1', 'Region2']}],
groupByLevel: 'Region',
userEmail: 'example@birdeye.com'
})
};
fetch('https://api.birdeye.com/resources/v1/insight/sentiment/locationInfo', 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/insight/sentiment/locationInfo",
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([
'reviewSources' => [
'Google',
'Facebook',
'CitySearch'
],
'ratings' => [
'0',
'1',
'3',
'4',
'5'
],
'businessNumbers' => [
172957184851864,
174436684666401
],
'startDate' => '02/25/2025',
'endDate' => '02/01/2026',
'hierarchyNodeData' => [
[
'levelId' => 'Region',
'levelNames' => [
'Region1',
'Region2'
]
]
],
'groupByLevel' => 'Region',
'userEmail' => 'example@birdeye.com'
]),
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/insight/sentiment/locationInfo"
payload := strings.NewReader("{\n \"reviewSources\": [\n \"Google\",\n \"Facebook\",\n \"CitySearch\"\n ],\n \"ratings\": [\n \"0\",\n \"1\",\n \"3\",\n \"4\",\n \"5\"\n ],\n \"businessNumbers\": [\n 172957184851864,\n 174436684666401\n ],\n \"startDate\": \"02/25/2025\",\n \"endDate\": \"02/01/2026\",\n \"hierarchyNodeData\": [\n {\n \"levelId\": \"Region\",\n \"levelNames\": [\n \"Region1\",\n \"Region2\"\n ]\n }\n ],\n \"groupByLevel\": \"Region\",\n \"userEmail\": \"example@birdeye.com\"\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/insight/sentiment/locationInfo")
.header("Content-Type", "application/json")
.body("{\n \"reviewSources\": [\n \"Google\",\n \"Facebook\",\n \"CitySearch\"\n ],\n \"ratings\": [\n \"0\",\n \"1\",\n \"3\",\n \"4\",\n \"5\"\n ],\n \"businessNumbers\": [\n 172957184851864,\n 174436684666401\n ],\n \"startDate\": \"02/25/2025\",\n \"endDate\": \"02/01/2026\",\n \"hierarchyNodeData\": [\n {\n \"levelId\": \"Region\",\n \"levelNames\": [\n \"Region1\",\n \"Region2\"\n ]\n }\n ],\n \"groupByLevel\": \"Region\",\n \"userEmail\": \"example@birdeye.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/insight/sentiment/locationInfo")
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 \"reviewSources\": [\n \"Google\",\n \"Facebook\",\n \"CitySearch\"\n ],\n \"ratings\": [\n \"0\",\n \"1\",\n \"3\",\n \"4\",\n \"5\"\n ],\n \"businessNumbers\": [\n 172957184851864,\n 174436684666401\n ],\n \"startDate\": \"02/25/2025\",\n \"endDate\": \"02/01/2026\",\n \"hierarchyNodeData\": [\n {\n \"levelId\": \"Region\",\n \"levelNames\": [\n \"Region1\",\n \"Region2\"\n ]\n }\n ],\n \"groupByLevel\": \"Region\",\n \"userEmail\": \"example@birdeye.com\"\n}"
response = http.request(request)
puts response.read_body{
"totalCount": 2,
"dataPoints": [
{
"id": 149546078883527,
"name": "194 - Greywolf Veterinary Hospital",
"score": 96.2,
"mentions": 120
},
{
"id": 149546078886677,
"name": "The animal hospital",
"score": 90,
"mentions": 87
}
]
}{
"code": 2003,
"message": "userEmail is mandatory"
}{
"code": 1167,
"message": "API key is missing"
}{
"code": 2151,
"message": "Not a valid reseller/enterprise id."
}{
"code": 1027,
"message": "Invalid business number."
}Headers
e.g. application/json
e.g. [Required] Partner specific API key provided by Birdeye for data exchange.
e.g. [Required] User associated businessNumber.
Media type of the JSON request body.
Query Parameters
Zero-based index of the first record to return.
Number of records to return. Must be between 1 and 100 (default 10).
Field to sort results by.
name, sentiment-score Sort order. 0 = ascending, 1 = descending.
0, 1 Body
List of business numbers (max 100).
Start date in MM/DD/YYYY format.
End date in MM/DD/YYYY format.
Email of the user performing the request.
Review sources to include (e.g. Google, Facebook).
Rating values to filter (e.g. "1", "2", "3", "4", "5").
List of hierarchy nodes to filter by level.
Show child attributes
Show child attributes
The level to group results by (e.g. Region).