Sign Up

Theme switcher

Welcome to Zembra API Documentation

Zembra provides a RESTful API that supports common HTTP verbs and returns JSON-formatted responses with common HTTP status codes.

You can use the sandbox token and endpoints for testing. The sandbox environment is isolated and will not impact your account balance. Nevertheless, the same rate limiting applies to both live and sandbox environments combined. The sandbox randomly returns dummy data representing all different expected responses from an endpoint. The sandbox performs the same set of validation the live box does, including slug validation and eligibility for services.

Default rate limiting is set to 100 requests per minute. This limit may vary based on your account settings. If unsure, contact your account manager or reach out to our support team.

Each response returned by the API has rate limiting info added to the headers:

  • X-RateLimit-Limit: 100 or -1 if no limit.
    The allocated rate limit to the account.
  • X-RateLimit-Remaining: < 100 or -1 if no limit.
    The number of remaining calls before hitting the rate limiting limit and start getting calls rejected until the counter is reset.

Zembra has made SDKs available in many coding languages to help you quickly get started consuming the API with minimum effort:

You can also download Postman then import this collection which includes calls the all Zembra API sandbox endpoints with a combination of all available parameters.

Was this section helpful?

What made this section unhelpful for you?

Base URL

Zembra Live API:

https://api.zembra.io

Zembra Sandbox API:

https://sandbox.zembra.io

Language Box

Was this section helpful?

What made this section unhelpful for you?

Accommodation

Fetch hotel and other properties availability, details, and quotes.

Account

Get account info

Batch

Submit one batch of up to 1,000 requests per service

Listing

Search, match, and get details for a specific listing

Reviews

Get reviews data as an instant snapshot of its current state without updates

Was this section helpful?

What made this section unhelpful for you?

Create Review Job

Creates a new job to pull review data from the requested review page. The response will also include the listing's information.

You can set your preferred level of monitoring:

  • None (default): This means that monitoring will not be enabled, i.e. reviews will not maintained up to date. We will return a fresh snapshot of the reviews without sourcing from our cached data. Data retention is set to 5 days. The cost per job is 50 credits + 1 credit per returned review. With this type of monitoring, you can set a sizeLimit and/or dateLimit (whichever comes first) to limit the number of returned reviews and consequently the cost. This type of jobs cannot be set for auto-renewal.
  • Basic: All the reviews are immediately made available once crawling is completed. Updates and fetching of new reviews is once every 30 days. The cost of this type of jobs is 75 credits + 3 credits per returned review. You can set this job to auto-renew. The cost of an auto-renewed job is 50 credits + 3 credits per returned new reviews. You do not get charged twice for an existing and previously returned review. You cannot set limits of any kind on this type of jobs. The original listing although it is included in the response, it is not guaranteed to be up to date. Edits, replies, deletions, restorations, and any changes affecting existing reviews are not guaranteed to be applied. The main purpose of this monitoring style is to ensure collecting new reviews on a monthly basis. This job remains active for 30 days.
  • Regular: All the reviews are immediately made available once crawling is completed. Updates and fetching of new reviews is once a day. The cost of this type of jobs is 125 credits + 3 credits per returned review. You can set this job to auto-renew. The cost of an auto-renewed job is 75 credits + 3 credits per returned new reviews. You do not get charged twice for an existing and previously returned review. You cannot set limits of any kind on this type of jobs. The original listing although it is included in the response, it is not guaranteed to be up to date. Edits, replies, deletions, restorations, and any changes affecting existing reviews are not guaranteed to be applied. The main purpose of this monitoring style is to ensure collecting new reviews on a daily basis. This job remains active for 30 days.
  • Full: The recommended monitoring level for online reputation management activities. The initial pull is processed through a priority queue to ensure minimum delay before delivery. Updates and fetching of new reviews are as frequent as the activity on the target listing with a guarantee of a maximum rest time of 8-12 hours (depends on the platform). The cost of this type of jobs is 150 credits + 1 credit per returned review. You can set this job to auto-renew. The cost of an auto-renewed job is 100 credits + 1 credit per returned reviews. You will be charged for all the reviews in each cycle because we are closely monitoring all the reviews. You will also receive updates for any affected existing review regardless of when it was initially pulled. You cannot set limits of any kind on this type of jobs. The original listing is kept up to date. This job remains active for 30 days.
Please note that all jobs with any kind of monitoring enabled will cause the pull of the entire set of reviews. Having a track of the reviews is crucial for our monitoring and collision detection process.
All monitoring jobs remain valid for 30 days. If you desire to change the monitoring level, you must cancel the existing job then create a new job with the new monitoring level. You will lose all the previous data and you will be charged again for the new job independently from the history.
There cannot be two active jobs with monitoring enabled. If you use a different slug for the same listing it will result in the same job being returned and no new job will be created.

The review fetching starts promptly after creation and data is made available a few seconds later.
If you have an endpoint listening to our webhook callback, expect the signal to be issued within a few seconds from the original request.

Header Parameters

Authorizationstring

Body Parameters

networkstring Required

Short name of the network. Used in the queries

Enum values:
agodaalternativetoangiapartmentsaptguideaptratingsapplemapsappstoreavvobbb
... 60 other enums
slugstring Required

The listing identifier as shown on the URL of the native site. It can be the full URL or a part of it. The slug pattern varies per network. Here is a list of acceptable slugs per network:

monitoringstring

The selected level of monitoring for a review job. Determines how often we fetch new reviews. Affects cost and other features like updating existing reviews and the original listing.

Default value
none
Enum values:
nonebasicregularfull
includeRawDataboolean

This boolean option controls whether we should include the raw data in the payload that we deliver to your webhook or not. The raw data may include additional information that is not parsed by default by the API in the standard format that applies to all networks. Examples of raw data can be reviews rating breakdown, or number of followers, etc. Including raw data may drive the size of the data to become considerably large. Some servers may reject POST requests with large payloads o...

Default value
false
internalIdstring

It helps you identify the record, particularly when you activate listeners and we send you a change notification via webhook. The value of this option can be updated at a later time.

Maximum
255
autoRenewboolean

Only available when monitoring is set to anything but none. When a job is created, it is set to expire after 30 days from the moment it was first requested. If you wish to continuously receive updates and never miss a review, you can set the job to automatically renew when it expires. This results in a new charge for the review page. In case of insufficient funds, the job is canceled and it does not restart even if you reload your balance. If we fail to ren...

sizeLimitinteger

Only available when monitoring is set to none or omitted. Indicates the maximum number of reviews to be retrieved from the original website. A minimum of 25 reviews to be returned is enforced. This field controls the charges applied to the job. If 100 reviews are requested, a maximum of 100 most recent reviews will be returned even if the page has more than 100 reviews. The account will be charged for no more than 100 reviews. If the page has less than the ...

dateLimitinteger

Only available when monitoring is set to none or omitted. Instructs the API to only collect reviews posted after and not older than the given timestamp in Unix format in seconds. For example, a Google listing may have thousands of reviews but you are only interested in those that were posted the last month. The pulling process will stop as soon as a collected review is older than the given limit. All older reviews are filtered out. The account is only charg...

Minimum
1262304000

Response

200
Object
Job created

Response Attributes

messagestring
datastring

Show child attributes

400
Object
Invalid parameter

Response Attributes

messagestring
401
Object
Invalid token used to authenticate the call

Response Attributes

messagestring
402
Object
Low balance

Response Attributes

messagestring
403
Object
The requested network is not enabled for your account. Contact your account manager or our support team to get it added to your list of enabled platforms.

Response Attributes

messagestring
404
Object
Not found

Response Attributes

messagestring
Was this section helpful?

What made this section unhelpful for you?

POST

/reviews

Select
1 2 3 4 5 6 7 8 9 10 11 12 curl --location 'https://api.zembra.io/reviews' \ --header 'Authorization: Bearer {token}' \ --data '{ "network": "google", "slug": "my-listing-slug", "monitoring": "full", "includeRawData": true, "internalId": "", "autoRenew": false, "sizeLimit": null, "dateLimit": null }'

Response

{
  "message": "Reviews fetching order received for Google: my-listing. Please allow a few minutes before requesting reviews.",
  "data": {
    "job": {
      "network": "google",
      "slug": "my-listing-slug",
      "jobId": "123e4567-e89b-12d3-a456-426614174000",
      "uid": "OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU",
      "monitoring": "full",
      "internalId": "",
      "requestedAt": "2023-01-01T00:00:00Z",
      "expiresAt": "2023-01-01T00:00:00Z",
      "includeRawData": false,
      "cost": 165,
      "active": true,
      "sizeLimit": 100,
      "dateLimit": 1734140315,
      "autoRenew": true,
      "renewed": false,
      "url": ""
    },
    "target": {
      "address": {
        "street": "5621 Main St",
        "city": "Mallorca",
        "region": "QC",
        "postalCode": "78128",
        "country": "US"
      },
      "aliases": [
        "my-listing-1",
        "my-first-listing"
      ],
      "categories": [
        "Restaurant",
        "Fast Food"
      ],
      "formattedAddress": "5621 Main St, Mallorca, QC 78128, US",
      "globalRating": 4.5,
      "id": "ChIJV9OJxsOq3oARnyGzSXY0ym8",
      "lastCrawled": "2023-01-01T00:00:00Z",
      "lastUpdated": "2023-01-01T00:00:00Z",
      "link": "https://my.zembratech.com/dashboard/review-page/insights/MWJmZTc5MDZjMzg5OGI3OGMyNjJiODNjOGJjMWI3Y2Q",
      "name": "My Google Business",
      "network": "google",
      "phone": "(210) 456-0987",
      "photos": [
        "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw-1.jpg",
        "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw-2.jpg"
      ],
      "priceRange": "$$$",
      "profileImage": "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw.jpg",
      "ratingBreakdown": {
        "overall": 8.4,
        "perCriteria": [
          {
            "criteria": "Overall",
            "rating": 8.4
          },
          {
            "criteria": "Cleanliness",
            "rating": 8.9
          },
          {
            "criteria": "Facilities",
            "rating": 8.3
          },
          {
            "criteria": "Location",
            "rating": 8.7
          },
          {
            "criteria": "Service",
            "rating": 8.7
          },
          {
            "criteria": "Value for money",
            "rating": 8.2
          }
        ],
        "ratingDistribution": [
          {
            "rating": "9+ Exceptional",
            "count": 135
          },
          {
            "rating": "8-9 Excellent",
            "count": 66
          },
          {
            "rating": "7-8 Very Good",
            "count": 32
          },
          {
            "rating": "6-7 Good",
            "count": 24
          },
          {
            "rating": "<6 Below Expectation",
            "count": 11
          }
        ]
      },
      "rawData": {},
      "reviewCount": {
        "native": {
          "total": 6320,
          "active": 5986,
          "hidden": 334
        },
        "available": {
          "total": 6320,
          "active": 5986,
          "hidden": 334
        }
      },
      "slug": "my-listing-slug",
      "url": "https://maps.google.com/?cid=16256511492469774330",
      "website": "https://my-business.com"
    }
  }
}
Was this section helpful?

What made this section unhelpful for you?

Get Reviews

Returns the list of reviews that were collected as requested in the review job. To retrieve a job, you must specify the jobId, uid, or the pair of network and slug. At least one of these params must be present in order to identify the record locally but not all. If you use the pair of network and slug then we will try to return the active monitoring job. If there is no job with monitoring enabled then we will return the most recent job without monitoring.

Header Parameters

Authorizationstring

Query Parameters

networkstring

Network this listing belongs to. This field is required if jobId and uid are missing and must be associated with field slug.

Enum values:
agodaalternativetoangiapartmentsaptguideaptratingsapplemapsappstoreavvobbb
... 60 other enums
slugstring

The slug associated with the listing. Using variants of the same slug might cause the API to return 404 Not Found if we do not have track of the alias. This field is required if jobId and uid are missing and must be associated with field network.

jobIdstring

The ID of the job that was returned at the time of creating the job. This field is required if uid and network + slug are missing.

Minimum
36
Maximum
36
uidstring

The UID of the listing that was returned at the time of creation. It persists over time and across accounts. This field is required if jobId and network + slug are missing.

Minimum
36
Maximum
43
fields[]array

List of review fields to be returned

Enum values:
authoreditsidisDeletedisHiddenlanguagephotosratingrawDatarecommendation
... 6 other enums
hasPhotosboolean

Only available if monitoring is enabled for the review job. If requested, only reviews with photos are returned. If set to false, only reviews without photos are returned. To include all reviews regardless of whether they have photos or not, omit this option.

hasRepliesboolean

Only available if monitoring is enabled for the review job. If requested, only reviews with replies are returned. If set to false, only reviews without replies are returned. To include all reviews regardless of whether they have replies or not, omit this option.

hasEditsboolean

Only available if monitoring is enabled for the review job. If requested, only reviews with edits are returned. Edits can be reported by the review platform, like with Yelp, or have been detected by our engines. If set to false, only reviews without edits are returned. To include all reviews regardless of whether they have edits or not, omit this option.

isHiddenboolean

Only available if monitoring is enabled for the review job. If true, only reviews that are kept hidden on the review platform are included, e.g. non-recommended reviews on Yelp. If false, only visible reviews are returned.

isRecommendedboolean

Only available if monitoring is enabled for the review job. If true, reviews considered as positive recommendation (recommended) are returned. If false, reviews considered as negative recommendation (not recommended) are included.

isDeletedboolean

Only available if monitoring is enabled for the review job. If true, only deleted reviews will be returned. This requires includeDeleted to be also set to true. If false, this will have the same effect if includeDeleted was not set or is set to false and will only return non-deleted reviews.

maxRatingnumber (float)

Only available if monitoring is enabled for the review job. Limits the highest rating of the returned reviews.

Minimum
1
Maximum
4.9
minRatingnumber (float)

Only available if monitoring is enabled for the review job. Limits the lowest rating of the returned reviews.

Minimum
1.1
Maximum
5
postedBeforestring (date)

Only available if monitoring is enabled for the review job. Setting this parameter restricts the result to contain only reviews that were posted before the specified date. The input format is UNIX timestamp.

postedAfterstring (date)

Only available if monitoring is enabled for the review job. Setting this parameter restricts the result to contain only reviews that were posted after the specified date. The input format is UNIX timestamp.

languagestring

Only available if monitoring is enabled for the review job. Return only reviews which language matches the given string.

Minimum
2
Maximum
3
includeDeletedboolean

Only available if monitoring is enabled for the review job. If requested, the result will include reviews that are detected by our engines as deleted, i.e. reviews that were live at some point then detected missing.

sortBystring

Only available if monitoring is enabled for the review job. Indicates the desired sorting attribute.

Default value
timestamp
Enum values:
timestampratingrecommendationhiddentextid
sortDirectionstring

Only available if monitoring is enabled for the review job. Indicates the desired sorting direction.

Default value
DESC
Enum values:
ASCDESC
limitinteger

Indicates the maximum number of reviews to be returned. If you do not set a limit and you do not change the default filters and the list of fields then all the reviews will be returned regardless of the size. In the event you change the filters and/or the list of fields and omit the limit then the default limit will be applied.

Maximum
1000
Default value
1000
offsetinteger

Helps with pagination. It indicates the offset to be applied to the set of reviews.

Minimum
1

Response

200
Object
Successfully returning the list of reviews for requested listing

Response Attributes

messagestring
dataobject

Standard output with reviews for a job

Show child attributes

206
Object
Partial Content

Response Attributes

messagestring
dataobject

Standard output with reviews for a job

Show child attributes

400
Object
Invalid parameter

Response Attributes

messagestring
401
Object
Invalid token used to authenticate the call

Response Attributes

messagestring
404
Object
Not found

Response Attributes

messagestring
Was this section helpful?

What made this section unhelpful for you?

GET

/reviews?network=google&slug=my-listing-slug&jobId=123e4567-e89b-12d3-a456-426614174000&uid=OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU&fields[]=&hasPhotos=true&hasReplies=true&hasEdits=true&isHidden=true&isRecommended=true&isDeleted=true&maxRating=&minRating=&postedBefore=2023-01-01&postedAfter=2023-01-01&language=&includeDeleted=true&sortBy=timestamp&sortDirection=DESC&limit=1000&offset=

Select
1 2 curl --location 'https://api.zembra.io/reviews?network=google&slug=my-listing-slug&jobId=123e4567-e89b-12d3-a456-426614174000&uid=OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU&hasPhotos=true&hasReplies=true&hasEdits=true&isHidden=true&isRecommended=true&isDeleted=true&postedBefore=2023-01-01&postedAfter=2023-01-01&includeDeleted=true&sortBy=timestamp&sortDirection=DESC&limit=1000' \ --header 'Authorization: Bearer {token}'

Response

{
  "message": "List of reviews for Google: my-listing",
  "data": {
    "job": {
      "network": "google",
      "slug": "my-listing-slug",
      "jobId": "123e4567-e89b-12d3-a456-426614174000",
      "uid": "OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU",
      "monitoring": "full",
      "internalId": "",
      "requestedAt": "2023-01-01T00:00:00Z",
      "expiresAt": "2023-01-01T00:00:00Z",
      "includeRawData": false,
      "cost": 165,
      "active": true,
      "sizeLimit": 100,
      "dateLimit": 1734140315,
      "autoRenew": true,
      "renewed": false,
      "url": ""
    },
    "target": {
      "address": {
        "street": "5621 Main St",
        "city": "Mallorca",
        "region": "QC",
        "postalCode": "78128",
        "country": "US"
      },
      "aliases": [
        "my-listing-1",
        "my-first-listing"
      ],
      "categories": [
        "Restaurant",
        "Fast Food"
      ],
      "formattedAddress": "5621 Main St, Mallorca, QC 78128, US",
      "globalRating": 4.5,
      "id": "ChIJV9OJxsOq3oARnyGzSXY0ym8",
      "lastCrawled": "2023-01-01T00:00:00Z",
      "lastUpdated": "2023-01-01T00:00:00Z",
      "link": "https://my.zembratech.com/dashboard/review-page/insights/MWJmZTc5MDZjMzg5OGI3OGMyNjJiODNjOGJjMWI3Y2Q",
      "name": "My Google Business",
      "network": "google",
      "phone": "(210) 456-0987",
      "photos": [
        "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw-1.jpg",
        "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw-2.jpg"
      ],
      "priceRange": "$$$",
      "profileImage": "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw.jpg",
      "ratingBreakdown": {
        "overall": 8.4,
        "perCriteria": [
          {
            "criteria": "Overall",
            "rating": 8.4
          },
          {
            "criteria": "Cleanliness",
            "rating": 8.9
          },
          {
            "criteria": "Facilities",
            "rating": 8.3
          },
          {
            "criteria": "Location",
            "rating": 8.7
          },
          {
            "criteria": "Service",
            "rating": 8.7
          },
          {
            "criteria": "Value for money",
            "rating": 8.2
          }
        ],
        "ratingDistribution": [
          {
            "rating": "9+ Exceptional",
            "count": 135
          },
          {
            "rating": "8-9 Excellent",
            "count": 66
          },
          {
            "rating": "7-8 Very Good",
            "count": 32
          },
          {
            "rating": "6-7 Good",
            "count": 24
          },
          {
            "rating": "<6 Below Expectation",
            "count": 11
          }
        ]
      },
      "rawData": {},
      "reviewCount": {
        "native": {
          "total": 6320,
          "active": 5986,
          "hidden": 334
        },
        "available": {
          "total": 6320,
          "active": 5986,
          "hidden": 334
        }
      },
      "slug": "my-listing-slug",
      "url": "https://maps.google.com/?cid=16256511492469774330",
      "website": "https://my-business.com"
    },
    "reviews": [
      {
        "id": "Xmog09hjWWds-po9R",
        "url": "https://www.yelp.com/biz/dckVzsMoCZ_hrhdw6-SchA?hrid=xA4n3r98l7eIJzjqeVjkZg",
        "text": "I loved my experience with this business. I recommend ☺",
        "edits": [
          {
            "id": "Xmog09hjWWds-po9R",
            "timestamp": "2023-01-01T00:00:00Z",
            "text": "I might need to update this review in the near future!",
            "language": "es",
            "translation": "I loved my experience with this business. I recommend ☺",
            "rating": 1.5,
            "recommendation": 1
          }
        ],
        "author": {
          "id": "e-bqL8cIPF6f7s6UsokjbA",
          "name": "Laurie S.",
          "photo": "https://s3-media0.fl.yelpcdn.com/photo/nn1d-LK19LkcEm_cMkrdrA/60s.jpg",
          "url": "https://www.yelp.com//user_details?userid=e-bqL8cIPF6f7s6UsokjbA",
          "location": "Mallorca"
        },
        "photos": [
          ""
        ],
        "rating": 3.5,
        "replies": [
          {
            "id": "e-bqL8cIPF6f7s6UsokjbA",
            "text": "Thank you so much for your heart warming review!",
            "timestamp": "2023-01-01T00:00:00Z",
            "author": {
              "id": "e-bqL8cIPF6f7s6UsokjbA",
              "name": "Laurie S.",
              "photo": "https://s3-media0.fl.yelpcdn.com/photo/nn1d-LK19LkcEm_cMkrdrA/60s.jpg",
              "url": "https://www.yelp.com//user_details?userid=e-bqL8cIPF6f7s6UsokjbA",
              "location": "Mallorca"
            }
          }
        ],
        "isHidden": false,
        "language": "es",
        "isDeleted": false,
        "timestamp": "2023-01-01T00:00:00Z",
        "translation": "I loved my experience with this business. I recommend ☺",
        "recommendation": 1,
        "rawData": {}
      }
    ],
    "returned": 100
  }
}
Was this section helpful?

What made this section unhelpful for you?

Update Review Job

Applies changes to an existing and active review job.

Header Parameters

Authorizationstring

Body Parameters

networkstring

Network this listing belongs to. This field is required if jobId and uid are missing and must be associated with field slug.

Enum values:
agodaalternativetoangiapartmentsaptguideaptratingsapplemapsappstoreavvobbb
... 60 other enums
slugstring

The slug associated with the listing. Using variants of the same slug might cause the API to return 404 Not Found if we do not have track of the alias. This field is required if jobId and uid are missing and must be associated with field network.

jobIdstring

The ID of the job that was returned at the time of creating the job. This field is required if uid and network + slug are missing.

Minimum
36
Maximum
36
uidstring

The UID of the listing that was returned at the time of creation. It persists over time and across accounts. This field is required if jobId and network + slug are missing.

Minimum
36
Maximum
43
includeRawDataboolean

Could be meaningless to update this value for a job without monitoring because by the time you attempt to update it the reviews are most likely already delivered to your webhook if it turned on.

Default value
false
autoRenewboolean

Applicable only if monitoring is enabled for the current job.

Default value
false
internalIdstring

Available for all kind of jobs.

Maximum
255

Response

200
Object
Successfully updated the settings of the review job

Response Attributes

messagestring
datastring

Show child attributes

400
Object
Invalid parameter

Response Attributes

messagestring
401
Object
Invalid token used to authenticate the call

Response Attributes

messagestring
403
Object
The requested network is not enabled for your account. Contact your account manager or our support team to get it added to your list of enabled platforms.

Response Attributes

messagestring
404
Object
Not found

Response Attributes

messagestring
Was this section helpful?

What made this section unhelpful for you?

PATCH

/reviews

Select
1 2 3 4 5 6 7 8 9 10 11 curl --location --request PATCH 'https://api.zembra.io/reviews' \ --header 'Authorization: Bearer {token}' \ --data '{ "network": "google", "slug": "my-listing-slug", "jobId": "123e4567-e89b-12d3-a456-426614174000", "uid": "OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU", "includeRawData": false, "autoRenew": true, "internalId": "" }'

Response

{
  "message": "Your review job has been successfully updated!",
  "data": {
    "job": {
      "network": "google",
      "slug": "my-listing-slug",
      "jobId": "123e4567-e89b-12d3-a456-426614174000",
      "uid": "OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU",
      "monitoring": "full",
      "internalId": "",
      "requestedAt": "2023-01-01T00:00:00Z",
      "expiresAt": "2023-01-01T00:00:00Z",
      "includeRawData": false,
      "cost": 165,
      "active": true,
      "sizeLimit": 100,
      "dateLimit": 1734140315,
      "autoRenew": true,
      "renewed": false,
      "url": ""
    }
  }
}
Was this section helpful?

What made this section unhelpful for you?

Trigger Reviews Fetch

Schedules an instant fetch job to pull reviews updates. The job is executed immediately. This helps instructing our engines to fetch reviews and return all new reviews and changes without waiting until the next scheduled crawl.

By default, we pull updates for recent reviews only, i.e. partial. A minimum wait time of 1 minute has to observed before requesting to fetch reviews again. For full scans, the minimum wait time is 5 minutes.

Header Parameters

Authorizationstring

Body Parameters

networkstring

Network this listing belongs to. This field is required if jobId and uid are missing and must be associated with field slug.

Enum values:
agodaalternativetoangiapartmentsaptguideaptratingsapplemapsappstoreavvobbb
... 60 other enums
slugstring

The slug associated with the listing. Using variants of the same slug might cause the API to return 404 Not Found if we do not have track of the alias. This field is required if jobId and uid are missing and must be associated with field network.

jobIdstring

The ID of the job that was returned at the time of creating the job. This field is required if uid and network + slug are missing.

Minimum
36
Maximum
36
uidstring

The UID of the listing that was returned at the time of creation. It persists over time and across accounts. This field is required if jobId and network + slug are missing.

Minimum
36
Maximum
43
typestring

The scope of the update. Type partial limits the scope to recent reviews and the cost is 15 credits. Type full force pulling all reviews and the cost is 50 credits.

Default value
partial
Enum values:
partialfull

Response

200
Object
Accepted fetch request for the given target

Response Attributes

messagestring
datastring

Show child attributes

400
Object
Invalid parameter

Response Attributes

messagestring
401
Object
Invalid token used to authenticate the call

Response Attributes

messagestring
403
Object
The requested network is not enabled for your account. Contact your account manager or our support team to get it added to your list of enabled platforms.

Response Attributes

messagestring
404
Object
Not found

Response Attributes

messagestring
Was this section helpful?

What made this section unhelpful for you?

PUT

/reviews

Select
1 2 3 4 5 6 7 8 9 curl --location --request PUT 'https://api.zembra.io/reviews' \ --header 'Authorization: Bearer {token}' \ --data '{ "network": "google", "slug": "my-listing-slug", "jobId": "123e4567-e89b-12d3-a456-426614174000", "uid": "OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU", "type": "partial" }'

Response

{
  "message": "Fetch reviews for my-business [Google] was accepted.",
  "data": {
    "job": {
      "network": "google",
      "slug": "my-listing-slug",
      "jobId": "123e4567-e89b-12d3-a456-426614174000",
      "uid": "OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU",
      "monitoring": "full",
      "internalId": "",
      "requestedAt": "2023-01-01T00:00:00Z",
      "expiresAt": "2023-01-01T00:00:00Z",
      "includeRawData": false,
      "cost": 165,
      "active": true,
      "sizeLimit": 100,
      "dateLimit": 1734140315,
      "autoRenew": true,
      "renewed": false,
      "url": ""
    },
    "target": {
      "address": {
        "street": "5621 Main St",
        "city": "Mallorca",
        "region": "QC",
        "postalCode": "78128",
        "country": "US"
      },
      "aliases": [
        "my-listing-1",
        "my-first-listing"
      ],
      "categories": [
        "Restaurant",
        "Fast Food"
      ],
      "formattedAddress": "5621 Main St, Mallorca, QC 78128, US",
      "globalRating": 4.5,
      "id": "ChIJV9OJxsOq3oARnyGzSXY0ym8",
      "lastCrawled": "2023-01-01T00:00:00Z",
      "lastUpdated": "2023-01-01T00:00:00Z",
      "link": "https://my.zembratech.com/dashboard/review-page/insights/MWJmZTc5MDZjMzg5OGI3OGMyNjJiODNjOGJjMWI3Y2Q",
      "name": "My Google Business",
      "network": "google",
      "phone": "(210) 456-0987",
      "photos": [
        "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw-1.jpg",
        "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw-2.jpg"
      ],
      "priceRange": "$$$",
      "profileImage": "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw.jpg",
      "ratingBreakdown": {
        "overall": 8.4,
        "perCriteria": [
          {
            "criteria": "Overall",
            "rating": 8.4
          },
          {
            "criteria": "Cleanliness",
            "rating": 8.9
          },
          {
            "criteria": "Facilities",
            "rating": 8.3
          },
          {
            "criteria": "Location",
            "rating": 8.7
          },
          {
            "criteria": "Service",
            "rating": 8.7
          },
          {
            "criteria": "Value for money",
            "rating": 8.2
          }
        ],
        "ratingDistribution": [
          {
            "rating": "9+ Exceptional",
            "count": 135
          },
          {
            "rating": "8-9 Excellent",
            "count": 66
          },
          {
            "rating": "7-8 Very Good",
            "count": 32
          },
          {
            "rating": "6-7 Good",
            "count": 24
          },
          {
            "rating": "<6 Below Expectation",
            "count": 11
          }
        ]
      },
      "rawData": {},
      "reviewCount": {
        "native": {
          "total": 6320,
          "active": 5986,
          "hidden": 334
        },
        "available": {
          "total": 6320,
          "active": 5986,
          "hidden": 334
        }
      },
      "slug": "my-listing-slug",
      "url": "https://maps.google.com/?cid=16256511492469774330",
      "website": "https://my-business.com"
    }
  }
}
Was this section helpful?

What made this section unhelpful for you?

Delete Review Job

Completely delete a job. This action is not reversible. In the scenario you re-request to create a job for the same review page, you will be charged a new fee like if the previous and deleted job had never existed. You will also immediately stop receiving updates. We will stop monitoring changes.

Header Parameters

Authorizationstring

Query Parameters

networkstring

Network this listing belongs to. This field is required if jobId and uid are missing and must be associated with field slug.

Enum values:
agodaalternativetoangiapartmentsaptguideaptratingsapplemapsappstoreavvobbb
... 60 other enums
slugstring

The slug associated with the listing. Using variants of the same slug might cause the API to return 404 Not Found if we do not have track of the alias. This field is required if jobId and uid are missing and must be associated with field network.

jobIdstring

The ID of the job that was returned at the time of creating the job. This field is required if uid and network + slug are missing.

Minimum
36
Maximum
36
uidstring Required

The UID of the listing that was returned at the time of creation. It persists over time and across accounts. This field is required if jobId and network + slug are missing.

Minimum
36
Maximum
43

Response

200
Object
Successfully canceled the job

Response Attributes

statusstring Required

The status parameter conveys the status of the API request, indicating whether it was successful or encountered an error.

Default value
SUCCESS
Enum values:
SUCCESSERROR
messagestring Required

The message parameter provides additional information or feedback related to the API request.

elapsedstring

The elapsed parameter indicates the time duration it took to process the API request.

400
Object
Invalid parameter

Response Attributes

messagestring
401
Object
Invalid token used to authenticate the call

Response Attributes

messagestring
403
Object
The requested network is not enabled for your account. Contact your account manager or our support team to get it added to your list of enabled platforms.

Response Attributes

messagestring
404
Object
Not found

Response Attributes

messagestring
Was this section helpful?

What made this section unhelpful for you?

DELETE

/reviews?network=google&slug=my-listing-slug&jobId=123e4567-e89b-12d3-a456-426614174000&uid=OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU

Select
1 2 curl --location --request DELETE 'https://api.zembra.io/reviews?network=google&slug=my-listing-slug&jobId=123e4567-e89b-12d3-a456-426614174000&uid=OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU' \ --header 'Authorization: Bearer {token}'

Response

{
  "status": "SUCCESS",
  "message": "Review job for [ApartmentRatings] <123123123123> successfully deleted!",
  "elapsed": "200 ms"
}
Was this section helpful?

What made this section unhelpful for you?

Get Review Jobs List

Returns the list of review jobs of the account. The result includes details about the job like requested time, internal ID, etc. The maximum number of returned jobs is 100 but you may use the limit and offset parameters for pagination.

Header Parameters

Authorizationstring

Query Parameters

networkstring

Returns jobs only from the requested network.

Enum values:
agodaalternativetoangiapartmentsaptguideaptratingsapplemapsappstoreavvobbb
... 60 other enums
slugstring

Filter results to only jobs with similar slug. Please see the description of slug in section [GET] /listing/{network}.

monitoringstring
Default value
none
Enum values:
nonebasicregularfull
internalIdstring

Filter results to only jobs with similar internal ID. This is the ID you set on the job that identifies it with your application. Please see the description of internalId in section [POST] /reviews.

Maximum
255
allboolean

By default, the API will return the active and unexpired records. Setting this input to true will allow returning deleted and expired records.

Default value
false
limitinteger

Maximum number of jobs to be returned. At most 100 jobs will be returned even if this parameter is set to a higher value.

Minimum
1
Maximum
100
Default value
100
offsetinteger

Helps with pagination. It controls the offset to be applied to the set of jobs.

Minimum
1
sortBystring

Indicates the desired sorting attribute.

Default value
timestamp
Enum values:
timestampnetworkinternalId
sortDirectionstring

Indicates the desired sorting direction.

Default value
DESC
Enum values:
ASCDESC

Response

200
Object
Successfully returning the list of jobs

Response Attributes

messagestring
datastring

Show child attributes

400
Object
Invalid parameter

Response Attributes

messagestring
401
Object
Invalid token used to authenticate the call

Response Attributes

messagestring
Was this section helpful?

What made this section unhelpful for you?

GET

/reviews/jobs?network=google&slug=my-listing-slug&monitoring=full&internalId=&all=true&limit=100&offset=&sortBy=timestamp&sortDirection=DESC

Select
1 2 curl --location 'https://api.zembra.io/reviews/jobs?network=google&slug=my-listing-slug&monitoring=full&all=true&limit=100&sortBy=timestamp&sortDirection=DESC' \ --header 'Authorization: Bearer {token}'

Response

{
  "message": "List of review jobs",
  "data": {
    "total": 890,
    "returned": 100,
    "jobs": [
      {
        "network": "google",
        "slug": "my-listing-slug",
        "jobId": "123e4567-e89b-12d3-a456-426614174000",
        "uid": "OTBmNTBlYzViMjM2NTU4MGVmNTUxMmQwMmY0YzZlNmU",
        "monitoring": "full",
        "internalId": "",
        "requestedAt": "2023-01-01T00:00:00Z",
        "expiresAt": "2023-01-01T00:00:00Z",
        "includeRawData": false,
        "cost": 165,
        "active": true,
        "sizeLimit": 100,
        "dateLimit": 1734140315,
        "autoRenew": true,
        "renewed": false,
        "url": ""
      }
    ]
  }
}
Was this section helpful?

What made this section unhelpful for you?

Social Media

Status

Return the status of each supported platform.