GETapi.synup.com/api/v4/locations/{locationId}/reviews
Fetch all interactions
This API retrieves interactions for a specific location, supporting multiple filters to refine results.
Filtering Options:
- Date Range – Fetch interactions within a specified time frame.
- Interaction Type – Filter by reviews, social engagements, or directory interactions.
- Platform – Retrieve interactions from specific sources (e.g., Google, Facebook, Yelp).
- Response Status – Show only responded or unresponded interactions.
- Rating – Filter reviews by star ratings (if applicable).
- Keyword – Filter reviews whose content matches a search keyword.
Requires an API key. Send it as
Authorization: API <your-key> — see Getting started.Parameters
Path
| Name | Type | Required | Description |
|---|---|---|---|
locationId | string | required | Base64 encoded location ID |
Query
| Name | Type | Required | Description |
|---|---|---|---|
siteUrls | array | optional | Filter by source websites |
category | array | optional | Filter by interaction category |
startDate | string | optional | Start date for filtering (YYYY-MM-DD) |
endDate | string | optional | End date for filtering (YYYY-MM-DD) |
ratingFilters | array | optional | Filter by rating (1-5). Pass multiple values as an array. Example: [3,4] |
searchString | string | optional | Filter interactions by keyword. Returns only interactions whose content matches the keyword. Example: pizza |
before | string | optional | If specified, records after the cursor are returned |
after | string | optional | If specified, records before the cursor are returned |
first | string | optional | Specifies the number of records to fetch from the beginning |
last | string | optional | Specifies the number of records to fetch from the end |
Request
Request
curl -X GET 'https://api.synup.com/api/v4/locations/:locationId/reviews?siteUrls=&category=&startDate=&endDate=&ratingFilters=&searchString=&before=&after=&first=&last=' \
-H 'Authorization: API YOUR_API_KEY' \
-H 'Content-Type: application/json'const res = await fetch('https://api.synup.com/api/v4/locations/:locationId/reviews?siteUrls=&category=&startDate=&endDate=&ratingFilters=&searchString=&before=&after=&first=&last=', {
method: 'GET',
headers: {
Authorization: 'API YOUR_API_KEY',
'Content-Type': 'application/json',
},
});
const data = await res.json();import requests
res = requests.get(
"https://api.synup.com/api/v4/locations/:locationId/reviews?siteUrls=&category=&startDate=&endDate=&ratingFilters=&searchString=&before=&after=&first=&last=",
headers={
"Authorization": "API YOUR_API_KEY",
"Content-Type": "application/json",
},
)
data = res.json()req, _ := http.NewRequest("GET", "https://api.synup.com/api/v4/locations/:locationId/reviews?siteUrls=&category=&startDate=&endDate=&ratingFilters=&searchString=&before=&after=&first=&last=", nil)
req.Header.Set("Authorization", "API YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)Responses
| Status | Description |
|---|---|
200 | Interactions retrieved successfully |
400 | Bad Request - Invalid parameters |
404 | Location not found |
Example response
{
"data": {
"interactions": {
"pageInfo": {
"hasNextPage": false,
"hasPreviousPage": false,
"endCursor": null,
"total": null
},
"edges": [
{
"node": {
"id": "9990178a-f119-43da-adbe-e2facad5a870",
"source": "maps.google.com",
"authorName": "Dale Rohwedder",
"authorAvatar": "https://lh6.googleusercontent.com/-rwVBMk41wg0/AAAAAAAAAAI/AAAAAAAAADc/NamFETXVIRw/w36-h36-p-mo/photo.jpg",
"rating": 4,
"date": "2019-01-24T06:13:15.332985+00:00",
"category": "Review"
},
"cursor": "SW50ZXJhY3Rpb246OTk5MDE3OGEtZjExOS00M2RhLWFkYmUtZTJmYWNhZDVhODcw"
}
],
"totalCount": 1
}
}
}Response body
| Name | Type | Required | Description |
|---|---|---|---|
data | object | optional | |
data.interactions | object | optional | |
data.interactions.pageInfo | object | optional | |
data.interactions.pageInfo.hasNextPage | boolean | optional | Indicates if there are more pages of results |
data.interactions.pageInfo.hasPreviousPage | boolean | optional | Indicates if there are previous pages of results |
data.interactions.pageInfo.endCursor | string | optional | Cursor for pagination |
data.interactions.pageInfo.total | integer | optional | Total number of pages |
data.interactions.edges | array of object | optional | |
data.interactions.edges[].node | object | optional | |
data.interactions.edges[].node.id | string | optional | Unique identifier for the interaction |
data.interactions.edges[].node.source | string | optional | Source website of the interaction |
data.interactions.edges[].node.title | string | optional | Title of the interaction |
data.interactions.edges[].node.content | string | optional | Content of the interaction |
data.interactions.edges[].node.authorName | string | optional | Name of the author |
data.interactions.edges[].node.authorAvatar | string | optional | URL of author's avatar |
data.interactions.edges[].node.authorUrl | string | optional | URL of author's profile |
data.interactions.edges[].node.rating | integer | optional | Rating value (1-5) |
data.interactions.edges[].node.date | string | optional | Date and time of the interaction |
data.interactions.edges[].node.permalink | string | optional | Permanent URL to the interaction |
data.interactions.edges[].node.category | string | optional | Category of the interaction |
data.interactions.edges[].node.type | string | optional | Type of the interaction |
data.interactions.edges[].node.photoUrl | string | optional | URL of attached photo |
data.interactions.edges[].node.photoThumbnailUrl | string | optional | URL of photo thumbnail |
data.interactions.edges[].node.responded | boolean | optional | Whether the interaction has been responded to |
data.interactions.edges[].node.notes | string | optional | Additional notes |
data.interactions.edges[].node.responses | array of object | optional | Array of responses |
data.interactions.edges[].node.canRespond | boolean | optional | Whether responses are allowed |
data.interactions.edges[].node.totalResponses | integer | optional | Total number of responses |
data.interactions.edges[].cursor | string | optional | Cursor for pagination |
data.interactions.totalCount | integer | optional | Total number of interactions matching the filters |