Endpoints by data type
Product reviews API
2 endpoints on 2 platforms return product reviews as the same Review object. Buyers’ reviews of one product, a page at a time: the stars, the text, the variant bought, photos, likes and whether the purchase is verified. A call costs from $0.002 to $0.02, each endpoint at its own price; a failed call is free.
Product reviews · on each platform
| Platform | Endpoint | Path | A page | Price |
|---|---|---|---|---|
| TikTok | TikTok Shop product reviews | GET /v1/tiktok/shop/products/reviews/list | 20 | $0.002 per call · about 20 reviews per page |
| Xiaohongshu (RedNote) | Xiaohongshu shop product reviews | GET /v1/xiaohongshu/shop/products/reviews/list | 12 | $0.02 per call · about 12 reviews per page |
from $0.002 to $0.02 a call, each endpoint at its own price. A call that fails costs nothing.
The object it returns: Review
Every endpoint above returns these fields with the same names and types. A field a platform does not show comes back null and is named in meta.unavailable.
| Field | Type | Meaning |
|---|---|---|
id | string | Review ID. |
product_id | string | ID of the product reviewed. |
rating | number | null | Stars, 1 to 5. |
text | string | Review text; empty when the buyer left only stars. |
published_at | string | null | When it was posted, ISO 8601 in UTC (a day for platforms that show only the date). |
author_name | string | null | Reviewer name as the shop shows it, often masked. |
variant | string | null | The variant bought. |
images | string[] | null | Photos attached to the review. |
likes | integer | null | Likes on the review. |
verified_purchase | boolean | null | Whether the shop marks it as a verified purchase. |
The same call on two platforms
Same parameters, same paging, same response shape. Only the path changes.
# TikTok
curl -G "https://api.okdata.online/v1/tiktok/shop/products/reviews/list" \
-H "Authorization: Bearer $OKDATA_API_KEY" \
--data-urlencode 'id=1732296652516463425'
# Xiaohongshu (RedNote)
curl -G "https://api.okdata.online/v1/xiaohongshu/shop/products/reviews/list" \
-H "Authorization: Bearer $OKDATA_API_KEY" \
--data-urlencode 'id=6441fb9a6cd6140001acf7b4'What people use it for
- Find the complaints that keep coming up in a competitor’s one- and two-star reviews.
- Check which variant buyers are happiest with.
- Feed reviews to a model to draft the FAQ on a product page.
Questions
- Can I get every review?
- Where the shop pages its reviews, follow the cursor until page.has_more is false. Xiaohongshu’s shop shows only a first page, so that endpoint returns one page per product.
- Why is the text of a review empty?
- The buyer left only stars. text is then an empty string, and rating still holds the stars they gave.
- Are reviewer names real?
- They are as the shop shows them, often masked. Treat author_name as a label, not as a way to identify the buyer.