Skip to main content

How to Import Reviews Using the Shapo API

Import reviews from supported platforms into your Shapo workspace using the API

Written by Natan Abramov

Import reviews from supported platforms into your Shapo workspace using your API key.

The review import API is available on the Pro plan.

Before you begin

Get your API key from the Workspace settings page in Shapo. Keep your API key private. Call the API from your server, not from browser-side JavaScript.

Include these headers with every request:

Authorization: Bearer <YOUR API KEY> 
Content-Type: application/json

Import reviews

Send a POST request to:

https://api.shapo.io/testimonials/import

This example imports Google reviews rated 4 stars or higher. It also tags the reviews as Product A.

curl --request POST 'https://api.shapo.io/testimonials/import' \
--header 'Authorization: Bearer <YOUR API KEY>' \
--header 'Content-Type: application/json' \
--data-raw '{
"source": "google",
"placeId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
"minRating": 4,
"ignoreEmpty": true,
"tags": ["Product A"]
}'

Shapo creates missing tags automatically and attaches them to every imported review.

Request fields

  • source: Required. The platform to import from. Use one of the supported source values below.

  • id, placeId, url, or domain: Exactly one identifier is required. The correct field depends on the source.

  • token: Optional. A provider API token. Required only for sources noted below.

  • minRating: Optional. Import reviews with this rating or higher. Accepts an integer from 1 to 5. Default: 1.

  • ignoreEmpty: Optional. Set to true to skip reviews without text. Default: false.

  • importAll: Optional. Set to true to process a larger import in the background. Default: false.

  • translated: Optional. Set to true to use translated text when the source provides it. Default: false.

  • tags: Optional. An array of up to 10 tag names. Missing tags are created automatically.

Send exactly one primary identifier field per request.

Supported sources

Use the source value and identifier field shown below.

  • Google

    • source: google

    • Recommended field: placeId

    • Send a Google Place ID. You can also send a Google data ID or CID in id, or a Google Maps URL in url.

  • Etsy

    • source: etsy

    • Recommended field: url

    • Send an Etsy shop URL such as https://www.etsy.com/shop/SHOP_NAME.

  • Trustpilot

    • source: trustpilot

    • Recommended field: domain

    • Send the reviewed business domain, such as example.com. You can also send a Trustpilot review URL in url.

  • Realtor.com

    • source: realtorcom

    • Recommended field: url

    • Send a Realtor.com agent profile URL containing /realestateagents/.

  • Zillow

    • source: zillow

    • Recommended field: url

    • Send a Zillow agent profile URL containing /profile/.

  • Apple Podcasts

    • source: applePodcasts

    • Recommended field: url

    • Send the HTTPS Apple Podcasts show URL on podcasts.apple.com.

  • Product Hunt

    • source: producthunt

    • Recommended field: url

    • Send the Product Hunt product URL.

  • Capterra

    • source: capterra

    • Recommended field: url

    • Send the Capterra product URL.

  • Apple App Store

    • source: appstore

    • Recommended field: url

    • Send an App Store URL beginning with https://apps.apple.com/.

  • Google Play Store

    • source: playstore

    • Recommended field: url

    • Send an app URL beginning with https://play.google.com/store/apps/details.

  • Shopify App Store

    • source: shopify

    • Recommended field: url

    • Send a Shopify App Store URL containing apps.shopify.com.

  • AppSumo

    • source: appsumo

    • Recommended field: url

    • Send the AppSumo product URL.

  • Judge.me

    • source: judgeme

    • Recommended field: id

    • Send the shop domain in id and the Judge.me API token in token.

  • Stamped

    • source: stamped

    • Recommended field: id

    • Send the store domain or URL. Include token if the public endpoint is unavailable.

  • Reviews.io

    • source: reviewsio

    • Recommended field: url

    • Send the Reviews.io or Reviews.co.uk company review URL.

  • Udemy

    • source: udemy

    • Recommended field: url

    • Send a course URL containing udemy.com/course/.

  • Feefo

    • source: feefo

    • Recommended field: id

    • Send the Feefo merchant ID. You can also send the Feefo review URL in url.

  • G2

    • source: g2

    • Recommended field: id

    • Send the G2 product slug. You can also send the G2 product review URL in url.

  • Clutch

    • source: clutch

    • Recommended field: id

    • Send the Clutch provider slug. You can also send the Clutch profile URL in url.

  • TripAdvisor

    • source: tripadvisor

    • Recommended field: url

    • Send the full TripAdvisor review URL.

  • Shopper Approved

    • source: shopperApproved

    • Recommended field: id

    • Send the site ID in id and the provider API token in token.

  • Trustindex

    • source: trustindex

    • Recommended field: domain

    • Send the reviewed business domain. You can also send a Trustindex review URL in url.

  • ProductReview.com.au

    • source: productreview

    • Recommended field: url

    • Send the ProductReview.com.au listing URL.

Immediate import response

importAll defaults to false. The request waits while Shapo fetches and saves the first available batch.

Example response:

{
"source": "google",
"added": 18,
"exists": 2,
"failed": 0,
"tags": ["Product A"]
}
  • added: New reviews saved to the workspace.

  • exists: Reviews already present in the workspace.

  • failed: Reviews Shapo fetched but could not save.

Import reviews in the background

Set importAll to true to schedule a larger import:

curl --request POST 'https://api.shapo.io/testimonials/import' \
--header 'Authorization: Bearer <YOUR API KEY>' \
--header 'Content-Type: application/json' \
--data-raw '{
"source": "tripadvisor",
"url": "https://www.tripadvisor.com/Hotel_Review-g60763-d93450-Reviews.html",
"importAll": true,
"tags": ["New York Hotel"]
}'

Example response:

{
"processing": true,
"source": "tripadvisor",
"tags": ["New York Hotel"]
}

processing: true means Shapo accepted the request and will continue importing in the background.

The response does not include a job ID or completion callback. Use the GET testimonials API to check for imported reviews, optionally filtering by tag.

Rate limit

The default limit is 10 import requests per source, per workspace, per hour. Your workspace may have a custom limit.

Error responses

Errors contain an error field:

{   "error": "API key is invalid" }
  • 400 Bad Request: Invalid request fields or an unsupported source.

  • 403 Forbidden: Missing or invalid API key, or the workspace is not on the Pro plan.

  • 429 Too Many Requests: The hourly rate limit was reached.

Next step

Create a widget filtered by the same tag. See How to create a widget using the Shapo API.

Did this answer your question?