curl --request POST \
--url https://api.birdeye.com/resources/v1/review/businessId/{businessId} \
--header 'Content-Type: application/json' \
--data '
{
"fromTimestamp": 1712986782000,
"toTimestamp": 1715578782000,
"updateFromDate": "04/01/2013",
"updateToDate": "05/3/2015",
"sources": [
"google",
"citysearch"
],
"ratings": [
1,
2,
3,
4,
5,
0
],
"searchStr": "test string",
"subBusinessIds": [
12345678,
1232111,
1231231321
],
"statuses": [
"all"
],
"allChild": "true",
"tags": [
"positive",
"negative"
],
"fetchExtraParams": false,
"needCustomerInfo": false,
"fetchAssitedByDetails": true
}
'import requests
url = "https://api.birdeye.com/resources/v1/review/businessId/{businessId}"
payload = {
"fromTimestamp": 1712986782000,
"toTimestamp": 1715578782000,
"updateFromDate": "04/01/2013",
"updateToDate": "05/3/2015",
"sources": ["google", "citysearch"],
"ratings": [1, 2, 3, 4, 5, 0],
"searchStr": "test string",
"subBusinessIds": [12345678, 1232111, 1231231321],
"statuses": ["all"],
"allChild": "true",
"tags": ["positive", "negative"],
"fetchExtraParams": False,
"needCustomerInfo": False,
"fetchAssitedByDetails": True
}
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({
fromTimestamp: 1712986782000,
toTimestamp: 1715578782000,
updateFromDate: '04/01/2013',
updateToDate: '05/3/2015',
sources: ['google', 'citysearch'],
ratings: [1, 2, 3, 4, 5, 0],
searchStr: 'test string',
subBusinessIds: [12345678, 1232111, 1231231321],
statuses: ['all'],
allChild: 'true',
tags: ['positive', 'negative'],
fetchExtraParams: false,
needCustomerInfo: false,
fetchAssitedByDetails: true
})
};
fetch('https://api.birdeye.com/resources/v1/review/businessId/{businessId}', 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/review/businessId/{businessId}",
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([
'fromTimestamp' => 1712986782000,
'toTimestamp' => 1715578782000,
'updateFromDate' => '04/01/2013',
'updateToDate' => '05/3/2015',
'sources' => [
'google',
'citysearch'
],
'ratings' => [
1,
2,
3,
4,
5,
0
],
'searchStr' => 'test string',
'subBusinessIds' => [
12345678,
1232111,
1231231321
],
'statuses' => [
'all'
],
'allChild' => 'true',
'tags' => [
'positive',
'negative'
],
'fetchExtraParams' => false,
'needCustomerInfo' => false,
'fetchAssitedByDetails' => true
]),
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/review/businessId/{businessId}"
payload := strings.NewReader("{\n \"fromTimestamp\": 1712986782000,\n \"toTimestamp\": 1715578782000,\n \"updateFromDate\": \"04/01/2013\",\n \"updateToDate\": \"05/3/2015\",\n \"sources\": [\n \"google\",\n \"citysearch\"\n ],\n \"ratings\": [\n 1,\n 2,\n 3,\n 4,\n 5,\n 0\n ],\n \"searchStr\": \"test string\",\n \"subBusinessIds\": [\n 12345678,\n 1232111,\n 1231231321\n ],\n \"statuses\": [\n \"all\"\n ],\n \"allChild\": \"true\",\n \"tags\": [\n \"positive\",\n \"negative\"\n ],\n \"fetchExtraParams\": false,\n \"needCustomerInfo\": false,\n \"fetchAssitedByDetails\": true\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/review/businessId/{businessId}")
.header("Content-Type", "application/json")
.body("{\n \"fromTimestamp\": 1712986782000,\n \"toTimestamp\": 1715578782000,\n \"updateFromDate\": \"04/01/2013\",\n \"updateToDate\": \"05/3/2015\",\n \"sources\": [\n \"google\",\n \"citysearch\"\n ],\n \"ratings\": [\n 1,\n 2,\n 3,\n 4,\n 5,\n 0\n ],\n \"searchStr\": \"test string\",\n \"subBusinessIds\": [\n 12345678,\n 1232111,\n 1231231321\n ],\n \"statuses\": [\n \"all\"\n ],\n \"allChild\": \"true\",\n \"tags\": [\n \"positive\",\n \"negative\"\n ],\n \"fetchExtraParams\": false,\n \"needCustomerInfo\": false,\n \"fetchAssitedByDetails\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/review/businessId/{businessId}")
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 \"fromTimestamp\": 1712986782000,\n \"toTimestamp\": 1715578782000,\n \"updateFromDate\": \"04/01/2013\",\n \"updateToDate\": \"05/3/2015\",\n \"sources\": [\n \"google\",\n \"citysearch\"\n ],\n \"ratings\": [\n 1,\n 2,\n 3,\n 4,\n 5,\n 0\n ],\n \"searchStr\": \"test string\",\n \"subBusinessIds\": [\n 12345678,\n 1232111,\n 1231231321\n ],\n \"statuses\": [\n \"all\"\n ],\n \"allChild\": \"true\",\n \"tags\": [\n \"positive\",\n \"negative\"\n ],\n \"fetchExtraParams\": false,\n \"needCustomerInfo\": false,\n \"fetchAssitedByDetails\": true\n}"
response = http.request(request)
puts response.read_body[
{
"reviewId": "1858537291",
"rating": 0,
"comments": "Ordered earlier today, delivered fast..exactly what I ordered..thank you so much!",
"title": null,
"reviewer": {
"firstName": "Sandy Rowe",
"lastName": "Johncox",
"nickName": "Sandy Rowe Johncox",
"thumbnailUrl": "https://ddjkm7n7lx.cloudfront.net/reviewer/dc42f6d8b2b84dc0b688c43e616.jpeg",
"facebookId": "638309687"
},
"reviewURL": "https://www.facebook.com/Imp-Flow-17565744/reviews",
"sourceType": "Facebook",
"inlineReplyEnabled": false,
"reviewDate": "Jan 20, 2014",
"response": "Thanks",
"responseDate": "Feb 18, 2014",
"recommended": 1
},
{
"reviewId": "73748574902",
"rating": 0,
"comments": "I am a long time customer and love Dieici. I am there at least once a week. I have never been disappointed with any service. I love all the girls. The customer service is beyond a 10. I also love the new addition Wish to the salon! Wish is a woman's clothing boutique. What could be better...beauty and fashion all in one spot!!! Dieci keeps getting better and better!",
"title": null,
"reviewer": {
"firstName": "Jennifer",
"lastName": "Bennett",
"nickName": "Jennifer Bennett",
"thumbnailUrl": "http://d2xt3xymj142xp.cloudfront.net/reviewer/9a070cf98f014f5d9b06987dcc9c48fe.jpeg",
"emailId": "jbennett@gmail.com",
"facebookId": null,
"city": "Cedar Knolls",
"state": " NJ"
},
"reviewUrl": "https://birdeye.com/imp-flower-15229573096",
"sourceType": "Direct Feedback",
"inlineReplyEnabled": true,
"reviewDate": "Jan 20, 2019",
"response": "Thanks",
"responseDate": "Feb 18, 2019",
"featured": 0,
"customerId": 7432167,
"extraParams": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
"assitedByUser": [
{
"firstName": "Steve",
"lastName": "M.",
"emailId": "steve@test.com",
"phoneNum": ""
},
{
"firstName": "Smith",
"lastName": "S.",
"emailId": "smith@test.com",
"phoneNum": ""
}
]
}
]{
"code": 1163,
"message": "Invalid start index value"
}{
"code": 1161,
"message": "Invalid API key"
}{
"code": 1011,
"message": "Business id is invalid"
}{
"code": 89,
"message": "Rate limit exceeded"
}Get
Get Reviews returns reviews for a business account with detailed review fields.
Behavior Note
- If
statusesis not provided, the API defaults to["published"], which returns featured reviews only.- Status mapping:
published= featured reviews,parked= non-featured reviews.- To fetch both featured and non-featured reviews, pass
statuses: ["published","parked"]orstatuses: ["all"]in the request body.ratingsfilters are applied only within the statuses selected for the request.
Note
- Deep Pagination with record window greater than 100k is not supported. Either reduce the sindex + count to be less than equal to 100k or use appropriate filters to narrow down your result set.
curl --request POST \
--url https://api.birdeye.com/resources/v1/review/businessId/{businessId} \
--header 'Content-Type: application/json' \
--data '
{
"fromTimestamp": 1712986782000,
"toTimestamp": 1715578782000,
"updateFromDate": "04/01/2013",
"updateToDate": "05/3/2015",
"sources": [
"google",
"citysearch"
],
"ratings": [
1,
2,
3,
4,
5,
0
],
"searchStr": "test string",
"subBusinessIds": [
12345678,
1232111,
1231231321
],
"statuses": [
"all"
],
"allChild": "true",
"tags": [
"positive",
"negative"
],
"fetchExtraParams": false,
"needCustomerInfo": false,
"fetchAssitedByDetails": true
}
'import requests
url = "https://api.birdeye.com/resources/v1/review/businessId/{businessId}"
payload = {
"fromTimestamp": 1712986782000,
"toTimestamp": 1715578782000,
"updateFromDate": "04/01/2013",
"updateToDate": "05/3/2015",
"sources": ["google", "citysearch"],
"ratings": [1, 2, 3, 4, 5, 0],
"searchStr": "test string",
"subBusinessIds": [12345678, 1232111, 1231231321],
"statuses": ["all"],
"allChild": "true",
"tags": ["positive", "negative"],
"fetchExtraParams": False,
"needCustomerInfo": False,
"fetchAssitedByDetails": True
}
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({
fromTimestamp: 1712986782000,
toTimestamp: 1715578782000,
updateFromDate: '04/01/2013',
updateToDate: '05/3/2015',
sources: ['google', 'citysearch'],
ratings: [1, 2, 3, 4, 5, 0],
searchStr: 'test string',
subBusinessIds: [12345678, 1232111, 1231231321],
statuses: ['all'],
allChild: 'true',
tags: ['positive', 'negative'],
fetchExtraParams: false,
needCustomerInfo: false,
fetchAssitedByDetails: true
})
};
fetch('https://api.birdeye.com/resources/v1/review/businessId/{businessId}', 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/review/businessId/{businessId}",
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([
'fromTimestamp' => 1712986782000,
'toTimestamp' => 1715578782000,
'updateFromDate' => '04/01/2013',
'updateToDate' => '05/3/2015',
'sources' => [
'google',
'citysearch'
],
'ratings' => [
1,
2,
3,
4,
5,
0
],
'searchStr' => 'test string',
'subBusinessIds' => [
12345678,
1232111,
1231231321
],
'statuses' => [
'all'
],
'allChild' => 'true',
'tags' => [
'positive',
'negative'
],
'fetchExtraParams' => false,
'needCustomerInfo' => false,
'fetchAssitedByDetails' => true
]),
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/review/businessId/{businessId}"
payload := strings.NewReader("{\n \"fromTimestamp\": 1712986782000,\n \"toTimestamp\": 1715578782000,\n \"updateFromDate\": \"04/01/2013\",\n \"updateToDate\": \"05/3/2015\",\n \"sources\": [\n \"google\",\n \"citysearch\"\n ],\n \"ratings\": [\n 1,\n 2,\n 3,\n 4,\n 5,\n 0\n ],\n \"searchStr\": \"test string\",\n \"subBusinessIds\": [\n 12345678,\n 1232111,\n 1231231321\n ],\n \"statuses\": [\n \"all\"\n ],\n \"allChild\": \"true\",\n \"tags\": [\n \"positive\",\n \"negative\"\n ],\n \"fetchExtraParams\": false,\n \"needCustomerInfo\": false,\n \"fetchAssitedByDetails\": true\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/review/businessId/{businessId}")
.header("Content-Type", "application/json")
.body("{\n \"fromTimestamp\": 1712986782000,\n \"toTimestamp\": 1715578782000,\n \"updateFromDate\": \"04/01/2013\",\n \"updateToDate\": \"05/3/2015\",\n \"sources\": [\n \"google\",\n \"citysearch\"\n ],\n \"ratings\": [\n 1,\n 2,\n 3,\n 4,\n 5,\n 0\n ],\n \"searchStr\": \"test string\",\n \"subBusinessIds\": [\n 12345678,\n 1232111,\n 1231231321\n ],\n \"statuses\": [\n \"all\"\n ],\n \"allChild\": \"true\",\n \"tags\": [\n \"positive\",\n \"negative\"\n ],\n \"fetchExtraParams\": false,\n \"needCustomerInfo\": false,\n \"fetchAssitedByDetails\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/review/businessId/{businessId}")
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 \"fromTimestamp\": 1712986782000,\n \"toTimestamp\": 1715578782000,\n \"updateFromDate\": \"04/01/2013\",\n \"updateToDate\": \"05/3/2015\",\n \"sources\": [\n \"google\",\n \"citysearch\"\n ],\n \"ratings\": [\n 1,\n 2,\n 3,\n 4,\n 5,\n 0\n ],\n \"searchStr\": \"test string\",\n \"subBusinessIds\": [\n 12345678,\n 1232111,\n 1231231321\n ],\n \"statuses\": [\n \"all\"\n ],\n \"allChild\": \"true\",\n \"tags\": [\n \"positive\",\n \"negative\"\n ],\n \"fetchExtraParams\": false,\n \"needCustomerInfo\": false,\n \"fetchAssitedByDetails\": true\n}"
response = http.request(request)
puts response.read_body[
{
"reviewId": "1858537291",
"rating": 0,
"comments": "Ordered earlier today, delivered fast..exactly what I ordered..thank you so much!",
"title": null,
"reviewer": {
"firstName": "Sandy Rowe",
"lastName": "Johncox",
"nickName": "Sandy Rowe Johncox",
"thumbnailUrl": "https://ddjkm7n7lx.cloudfront.net/reviewer/dc42f6d8b2b84dc0b688c43e616.jpeg",
"facebookId": "638309687"
},
"reviewURL": "https://www.facebook.com/Imp-Flow-17565744/reviews",
"sourceType": "Facebook",
"inlineReplyEnabled": false,
"reviewDate": "Jan 20, 2014",
"response": "Thanks",
"responseDate": "Feb 18, 2014",
"recommended": 1
},
{
"reviewId": "73748574902",
"rating": 0,
"comments": "I am a long time customer and love Dieici. I am there at least once a week. I have never been disappointed with any service. I love all the girls. The customer service is beyond a 10. I also love the new addition Wish to the salon! Wish is a woman's clothing boutique. What could be better...beauty and fashion all in one spot!!! Dieci keeps getting better and better!",
"title": null,
"reviewer": {
"firstName": "Jennifer",
"lastName": "Bennett",
"nickName": "Jennifer Bennett",
"thumbnailUrl": "http://d2xt3xymj142xp.cloudfront.net/reviewer/9a070cf98f014f5d9b06987dcc9c48fe.jpeg",
"emailId": "jbennett@gmail.com",
"facebookId": null,
"city": "Cedar Knolls",
"state": " NJ"
},
"reviewUrl": "https://birdeye.com/imp-flower-15229573096",
"sourceType": "Direct Feedback",
"inlineReplyEnabled": true,
"reviewDate": "Jan 20, 2019",
"response": "Thanks",
"responseDate": "Feb 18, 2019",
"featured": 0,
"customerId": 7432167,
"extraParams": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
"assitedByUser": [
{
"firstName": "Steve",
"lastName": "M.",
"emailId": "steve@test.com",
"phoneNum": ""
},
{
"firstName": "Smith",
"lastName": "S.",
"emailId": "smith@test.com",
"phoneNum": ""
}
]
}
]{
"code": 1163,
"message": "Invalid start index value"
}{
"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.
Media type of the JSON request body.
Path Parameters
Id of the Business.
Query Parameters
Start index of the reviews. Refer API note for max permissible value.
Number of reviews to query. Refer API note for max permissible value.
Include Reviews whose auto-crawling is blocked e.g. PressGaney
Body
Review date start in UTC format.
Review date end in UTC format, eg if toDate is 04/01/2013, reviews of date 04/01/2013 is excluded .
Review start date in milliseconds, pass either fromDate or fromTimestamp.
Review end date in milliseconds, pass either endDate or toTimestamp.
Review updated date start in UTC format.
Review updated date end in UTC format.
Aggregation source name Note: use "our_website" to filter reviews posted on Birdeye platform or use "direct_feedback" for direct feedback.
Review rating Possible values 0,1,2,3,4,5.
String that is contained by review.
BusinessIds under enterprise account.
Review status filter. Valid values are "published", "parked", and "all". If omitted, default is "published" only (featured reviews). "published" refers to featured reviews and "parked" refers to non-featured reviews.
Get review from all child ignoring merge reviews flag configured at parent/child relationship level.
Reviews with assigned tags
To fetch custom field(s) associated with the customer attributed to the review [if any].
To fetch customer information associated with the reviewer [if attributed].
To retrieve employees associated with the review [if mapped].
Response
OK
Id of the review.
Overall rating for the review, in case of direct feedback and facebook recommendations it will be 0. For Facebook recommendations, value will be 1, Non recommended review will have value set as 0.
User comment.
Reviewer details
Show child attributes
Show child attributes
Source of the review if it is an aggregated review.
Review url
Review posted date.
Review response text.
Response date.
If true, you can post replies through the dashboard.
Whether a review reply is supported via Birdeye API or not.
Customer's Id attributed with this review (if any).
Key value pair of custom field(s) associated with the customer attributed to the review (if any)
Employees associated with the review
Show child attributes
Show child attributes