curl --request GET \
--url https://api.partoo.co/v2/reviews \
--header 'x-APIKey: <api-key>'import requests
url = "https://api.partoo.co/v2/reviews"
headers = {"x-APIKey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-APIKey': '<api-key>'}};
fetch('https://api.partoo.co/v2/reviews', 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.partoo.co/v2/reviews",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-APIKey: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.partoo.co/v2/reviews"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-APIKey", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.partoo.co/v2/reviews")
.header("x-APIKey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.partoo.co/v2/reviews")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-APIKey"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"page": 1,
"max_page": 10,
"count": 287,
"reviews": [
{
"key": "<string>",
"org_id": 42,
"id": 34,
"business_id": "5409c35a97bbc544d8e26737",
"partner": "google_my_business",
"partner_id": "accounts/114063712393225091258/locations/74805271119400652054",
"author_name": "Castorche",
"date": "2017-07-01T16:10:23.156000+02:00",
"update_date": "2017-08-01T19:15:54.256000+02:00",
"delete_date": "<string>",
"rating": 3,
"recommended": true,
"title": "<string>",
"content": "Magasin un peu vieillot , mais personnel très sympathique, nombreuses références en rayons , un très bon choix côté vin...",
"state": "treated",
"link": "<string>",
"comments": [
{
"id": 82938,
"partner_id": "accounts/114063712393225091258/locations/74805271119400652054",
"created": "2019-08-01T19:15:54.256000+02:00",
"author_name": "Castorche",
"content": "Merci ❤️",
"date": "2017-08-01T19:15:54.256000+02:00",
"update_date": "2017-08-01T19:15:54.256000+02:00",
"can_edit": true,
"review_id": 34,
"parent_id": 123,
"user_id": "123456789abcdef2f60c42ff",
"is_reply_suggestion": true,
"replies": "<array>"
}
],
"tags": [
{
"id": 25,
"label": "food",
"color": "#808080"
}
],
"media_links": [
"https://lh3.googleusercontent.com/gpms...",
"https://lh3.googleusercontent.com/gpms-cs-s/AB8u6HYwO..."
]
}
]
}{
"errors": {
"json": {}
}
}{
"errors": {
"authentication": "User not authenticated"
}
}{
"errors": {
"authorization": "Operation not allowed"
}
}Search for reviews
This endpoint lets you search for the reviews of your businesses.
To access the reviews of a business you need to have READ access on it.
The response is paginated (30 results per page).
By default, no state filter is applied: the response includes all reviews,
including deleted ones. Use state__in / state__notin to narrow the result.
curl --request GET \
--url https://api.partoo.co/v2/reviews \
--header 'x-APIKey: <api-key>'import requests
url = "https://api.partoo.co/v2/reviews"
headers = {"x-APIKey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-APIKey': '<api-key>'}};
fetch('https://api.partoo.co/v2/reviews', 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.partoo.co/v2/reviews",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-APIKey: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.partoo.co/v2/reviews"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-APIKey", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.partoo.co/v2/reviews")
.header("x-APIKey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.partoo.co/v2/reviews")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-APIKey"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"page": 1,
"max_page": 10,
"count": 287,
"reviews": [
{
"key": "<string>",
"org_id": 42,
"id": 34,
"business_id": "5409c35a97bbc544d8e26737",
"partner": "google_my_business",
"partner_id": "accounts/114063712393225091258/locations/74805271119400652054",
"author_name": "Castorche",
"date": "2017-07-01T16:10:23.156000+02:00",
"update_date": "2017-08-01T19:15:54.256000+02:00",
"delete_date": "<string>",
"rating": 3,
"recommended": true,
"title": "<string>",
"content": "Magasin un peu vieillot , mais personnel très sympathique, nombreuses références en rayons , un très bon choix côté vin...",
"state": "treated",
"link": "<string>",
"comments": [
{
"id": 82938,
"partner_id": "accounts/114063712393225091258/locations/74805271119400652054",
"created": "2019-08-01T19:15:54.256000+02:00",
"author_name": "Castorche",
"content": "Merci ❤️",
"date": "2017-08-01T19:15:54.256000+02:00",
"update_date": "2017-08-01T19:15:54.256000+02:00",
"can_edit": true,
"review_id": 34,
"parent_id": 123,
"user_id": "123456789abcdef2f60c42ff",
"is_reply_suggestion": true,
"replies": "<array>"
}
],
"tags": [
{
"id": 25,
"label": "food",
"color": "#808080"
}
],
"media_links": [
"https://lh3.googleusercontent.com/gpms...",
"https://lh3.googleusercontent.com/gpms-cs-s/AB8u6HYwO..."
]
}
]
}{
"errors": {
"json": {}
}
}{
"errors": {
"authentication": "User not authenticated"
}
}{
"errors": {
"authorization": "Operation not allowed"
}
}Authorizations
The authentication system on Partoo API is using API Key that should be put in the header of the request (the name of the header is x-APIKey). An api_key is linked to a user. This user's role will give you different access level to the API features.
Query Parameters
Filter by business ids. Use a comma-separated list to provide multiple ids.
"a1c9f37b4deca92f83b61d02,9f4e2a8c0d73b154e621bc97,c73b15e9fa42d60b3a8c21ef"
Excludes from the request all businesses provided
Business id
Filter by review's content
If set to true, the endpoint will return all the reviews without content.
Note: This is the content of the review and not the content of the reply.
true, false false
Filter by publisher
Publisher label
google_my_business, facebook, tripadvisor "google_my_business,facebook"
Filter only by Google ratings
1, 2, 3, 4, 5 "4,5"
Filter only by Tripadvisor ratings
1, 2, 3, 4, 5 "1,2"
Filter only by Facebook recommendation
true, false false
Filter by update_date
Return all the reviews whose update_date >= given_date.
For example : update_date__gte=2019-01-01T00:00:00 will return all reviews from the first January of 2019
until today.
Note : The update dates are stored in UTC.
"2017-08-01T00:00:00"
Filter by update_date
Return all the reviews whose update_date <= given_date.
For example : update_date__lte=2020-01-01T00:00:00 will return all reviews from the date of the first review
until the first january of 2020.
Note : The update dates are stored in UTC.
"2017-08-02T00:00:00"
Filter by state. Comma-separated list of review states.
Reply state
treated, not_treated, deleted "treated,not_treated"
Exclude reviews in the given states. Comma-separated list of review states.
Reply state
treated, not_treated, deleted "deleted"
Filter by Tag label
Will partially match given labels (ie foo will match reviews with tag food)
The label of the tag Must be <= 30 characters and cannot contain a comma (commas will be ignored)
"food,drink"
Filter only reviews without tags
true
Filter by keywords
Return all the reviews with not-nullable content, that contain the provided list of keywords.
Note: This is the content of the review and not the content of the reply.
The filter accepts both simple and composed words.
To indicate it's a composed keyword, add the + as separator.
For example:
keywords=bonjourreturns all reviews containing the keywordbonjourkeywords=good+servicereturns all reviews containing the combined keyword good service, without splitting the keyword. No reviews containing just good or just service will be returned.keywords=bonjour,good+service: returns all reviews that contain either just bonjour, either just good service or both keywords at the same time.
"bonjour,good+service"
When set to true, enriches review responses with associated customer media URLs from Google My Business. The media links will appear in the field media_links as an array of strings.
- If
with_media_linksis false (default): media_links will be an empty array[] - If
with_media_linksis true:- Reviews with associated photos: media_links will contain Google photo URLs
- Reviews without photos: media_links will be an empty array
[]
true
Page number.
Starts at 1. Any value lower than 1 will be considered as 1.
For the number of items per page, see the per_page query parameter.
Number of items to return per page. Currently limited to 100.
1 <= x <= 100A - sign in front of the value indicates a descending order.
update_date, -update_date "update_date"
Was this page helpful?