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, ordomain: 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 from1to5. Default:1.ignoreEmpty: Optional. Set totrueto skip reviews without text. Default:false.importAll: Optional. Set totrueto process a larger import in the background. Default:false.translated: Optional. Set totrueto 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:googleRecommended field:
placeIdSend a Google Place ID. You can also send a Google data ID or CID in
id, or a Google Maps URL inurl.
Etsy
source:etsyRecommended field:
urlSend an Etsy shop URL such as
https://www.etsy.com/shop/SHOP_NAME.
Trustpilot
source:trustpilotRecommended field:
domainSend the reviewed business domain, such as
example.com. You can also send a Trustpilot review URL inurl.
Realtor.com
source:realtorcomRecommended field:
urlSend a Realtor.com agent profile URL containing
/realestateagents/.
Zillow
source:zillowRecommended field:
urlSend a Zillow agent profile URL containing
/profile/.
Apple Podcasts
source:applePodcastsRecommended field:
urlSend the HTTPS Apple Podcasts show URL on
podcasts.apple.com.
Product Hunt
source:producthuntRecommended field:
urlSend the Product Hunt product URL.
Capterra
source:capterraRecommended field:
urlSend the Capterra product URL.
Apple App Store
source:appstoreRecommended field:
urlSend an App Store URL beginning with
https://apps.apple.com/.
Google Play Store
source:playstoreRecommended field:
urlSend an app URL beginning with
https://play.google.com/store/apps/details.
Shopify App Store
source:shopifyRecommended field:
urlSend a Shopify App Store URL containing
apps.shopify.com.
AppSumo
source:appsumoRecommended field:
urlSend the AppSumo product URL.
Judge.me
source:judgemeRecommended field:
idSend the shop domain in
idand the Judge.me API token intoken.
Stamped
source:stampedRecommended field:
idSend the store domain or URL. Include
tokenif the public endpoint is unavailable.
Reviews.io
source:reviewsioRecommended field:
urlSend the Reviews.io or Reviews.co.uk company review URL.
Udemy
source:udemyRecommended field:
urlSend a course URL containing
udemy.com/course/.
Feefo
source:feefoRecommended field:
idSend the Feefo merchant ID. You can also send the Feefo review URL in
url.
G2
source:g2Recommended field:
idSend the G2 product slug. You can also send the G2 product review URL in
url.
Clutch
source:clutchRecommended field:
idSend the Clutch provider slug. You can also send the Clutch profile URL in
url.
TripAdvisor
source:tripadvisorRecommended field:
urlSend the full TripAdvisor review URL.
Shopper Approved
source:shopperApprovedRecommended field:
idSend the site ID in
idand the provider API token intoken.
Trustindex
source:trustindexRecommended field:
domainSend the reviewed business domain. You can also send a Trustindex review URL in
url.
ProductReview.com.au
source:productreviewRecommended field:
urlSend 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.
