# Fixed reference example. Playground inputs do not update this sample.
curl --request GET \
--url 'https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2?filter_type=1&filter_value=6&page_start=1&product_id=1729408816995078528®ion=US&sort_rule=2' \
--header 'Authorization: Bearer <token>'curl --request GET \
--url https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2 \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"cache_message": "This response is cached and accessible via the URL below for 24 hours at no extra cost. The cache is for request tracing only — it doesn't affect the API's data freshness and won't be returned through the API again.",
"cache_message_zh": "本次响应已缓存,可通过下方 URL 直接查看,有效期 24 小时,访问缓存链接无额外费用。缓存仅用于请求溯源,不影响接口数据的时效性,也不会再次通过接口返回。",
"cache_url": "<string>",
"code": 200,
"data": "<unknown>",
"docs": "<string>",
"message": "Request successful. This request will incur a charge.",
"message_zh": "请求成功,本次请求将被计费。",
"params": {},
"request_id": "<string>",
"router": "",
"support": "Discord: https://discord.gg/aMEAS8Xsvz",
"time": "<string>",
"time_stamp": 123,
"time_zone": "America/Los_Angeles"
}tiktok web/fetch_product_reviews
Get product reviews V2
# Fixed reference example. Playground inputs do not update this sample.
curl --request GET \
--url 'https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2?filter_type=1&filter_value=6&page_start=1&product_id=1729408816995078528®ion=US&sort_rule=2' \
--header 'Authorization: Bearer <token>'curl --request GET \
--url https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2 \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"cache_message": "This response is cached and accessible via the URL below for 24 hours at no extra cost. The cache is for request tracing only — it doesn't affect the API's data freshness and won't be returned through the API again.",
"cache_message_zh": "本次响应已缓存,可通过下方 URL 直接查看,有效期 24 小时,访问缓存链接无额外费用。缓存仅用于请求溯源,不影响接口数据的时效性,也不会再次通过接口返回。",
"cache_url": "<string>",
"code": 200,
"data": "<unknown>",
"docs": "<string>",
"message": "Request successful. This request will incur a charge.",
"message_zh": "请求成功,本次请求将被计费。",
"params": {},
"request_id": "<string>",
"router": "",
"support": "Discord: https://discord.gg/aMEAS8Xsvz",
"time": "<string>",
"time_stamp": 123,
"time_zone": "America/Los_Angeles"
}code is 200.
Example
curl "https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2?product_id=1729408816995078528" \
-H "Authorization: Bearer YOUR_API_KEY"
Request contract
- Method and path: GET /apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2
- Availability: enabled
- Request URL template:
https://api.aisa.one/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2 - filter_type: query; optional
- filter_value: query; optional
- page_start: query; optional
- product_id: query; required
- region: query; optional
- sort_rule: query; optional
- Runtime facts: 85ae03121f63417c9ff9d57a0fd59fdc6386fd71e2dc732a002843e6d8979d87
{
"operationId": "get_tikhub_tiktok_shop_web_fetch_product_reviews_v2",
"method": "GET",
"path": "/apis/v1/tikhub/tiktok/shop/web/fetch_product_reviews_v2",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [
{
"description": "Filter type: 1=All, 2=With images or videos, 3=Verified purchase\n\nUsage: Review filter type, default 1\n - 1: All reviews; use filter_value to select all ratings or a specific rating\n - 2: Reviews containing images or videos; filter_value must be 1\n - 3: Verified-purchase reviews; filter_value must be 1",
"example": 1,
"in": "query",
"name": "filter_type",
"required": false,
"schema": {
"default": 1,
"description": "Filter type: 1=All, 2=With images or videos, 3=Verified purchase\n\nUsage: Review filter type, default 1\n - 1: All reviews; use filter_value to select all ratings or a specific rating\n - 2: Reviews containing images or videos; filter_value must be 1\n - 3: Verified-purchase reviews; filter_value must be 1",
"title": "Filter Type",
"type": "integer"
}
},
{
"description": "Filter value: For filter_type=1, 6=all and 5-1=star rating; use 1 for filter_type=2 or 3\n\nUsage: Used together with filter_type\n - When filter_type=1: 6=all ratings (default), 5=5-star, 4=4-star, 3=3-star, 2=2-star, 1=1-star\n - When filter_type=2 or 3: use 1",
"example": 6,
"in": "query",
"name": "filter_value",
"required": false,
"schema": {
"default": 6,
"description": "Filter value: For filter_type=1, 6=all and 5-1=star rating; use 1 for filter_type=2 or 3\n\nUsage: Used together with filter_type\n - When filter_type=1: 6=all ratings (default), 5=5-star, 4=4-star, 3=3-star, 2=2-star, 1=1-star\n - When filter_type=2 or 3: use 1",
"title": "Filter Value",
"type": "integer"
}
},
{
"description": "Page start\n\nUsage: Starting page number, default 1\n - When has_more=1 in response, use current page +1 for next page",
"example": 1,
"in": "query",
"name": "page_start",
"required": false,
"schema": {
"default": 1,
"description": "Page start\n\nUsage: Starting page number, default 1\n - When has_more=1 in response, use current page +1 for next page",
"title": "Page Start",
"type": "integer"
}
},
{
"description": "Product ID",
"example": "1729408816995078528",
"in": "query",
"name": "product_id",
"required": true,
"schema": {
"description": "Product ID",
"title": "Product Id",
"type": "string"
}
},
{
"description": "Region code: US, SG, MY, PH, TH, VN, ID, JP, or MX. GB and BR are unavailable. Unsupported regions return HTTP 200 with data.region_supported=false and supported_regions.",
"example": "US",
"in": "query",
"name": "region",
"required": false,
"schema": {
"default": "US",
"description": "Region code: US, SG, MY, PH, TH, VN, ID, JP, or MX. GB and BR are unavailable. Unsupported regions return HTTP 200 with data.region_supported=false and supported_regions.",
"title": "Region",
"type": "string"
}
},
{
"description": "Sort order: 1=Recommended, 2=Most recent\n\nUsage: Sort order, default 2\n - 1: Recommended\n - 2: Most recent",
"example": 2,
"in": "query",
"name": "sort_rule",
"required": false,
"schema": {
"default": 2,
"description": "Sort order: 1=Recommended, 2=Most recent\n\nUsage: Sort order, default 2\n - 1: Recommended\n - 2: Most recent",
"title": "Sort Rule",
"type": "integer"
}
}
],
"security": [
{
"bearerAuth": []
}
],
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "fixed_success",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.001,
"estimate_source": "profile_seed",
"evidence_source": "request_snapshot"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
Published reference price: $0.001 USD per successful request. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.- Default request reference estimate (USD): 0.001
- Cost contract: fixed_success
- Published reference multiplier: 1.0
- Settlement evidence source: request_snapshot
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Filter type: 1=All, 2=With images or videos, 3=Verified purchase
Usage: Review filter type, default 1 - 1: All reviews; use filter_value to select all ratings or a specific rating - 2: Reviews containing images or videos; filter_value must be 1 - 3: Verified-purchase reviews; filter_value must be 1
Filter value: For filter_type=1, 6=all and 5-1=star rating; use 1 for filter_type=2 or 3
Usage: Used together with filter_type - When filter_type=1: 6=all ratings (default), 5=5-star, 4=4-star, 3=3-star, 2=2-star, 1=1-star - When filter_type=2 or 3: use 1
Page start
Usage: Starting page number, default 1 - When has_more=1 in response, use current page +1 for next page
Product ID
Region code: US, SG, MY, PH, TH, VN, ID, JP, or MX. GB and BR are unavailable. Unsupported regions return HTTP 200 with data.region_supported=false and supported_regions.
Sort order: 1=Recommended, 2=Most recent
Usage: Sort order, default 2 - 1: Recommended - 2: Most recent
Response
Successful Response
Response Structure
{
"code": 0,
"message": "success",
"data": {
"reviews": [ // Review list (20 per page)
{
"review_id": "xxx",
"user": { // User info
"user_id": "xxx",
"nickname": "Username",
"avatar": "Avatar URL"
},
"rating": 5, // Rating (1-5 stars)
"content": "Review content",
"medias": [ // Media files (images/videos)
{
"type": "image",
"url": "Media URL"
}
],
"create_time": 0, // Create timestamp
"verified_purchase": true, // Is verified purchase
"product_info": {}, // Product info
"likes_count": 10, // Likes count
"seller_reply": {} // Seller reply
}
],
"has_more": 1, // Has more: 1=yes, 0=no
"page_start": 1, // Current page
"total_count": 500, // Total review count
"review_summary": { // Review summary
"average_rating": 4.8,
"star_distribution": { // Star distribution
"5": 400,
"4": 80,
"3": 15,
"2": 3,
"1": 2
}
}
}
}
Cache message (EN-US)
Cache message (ZH-CN)
The URL to access the cached result
HTTP status code
Endpoint-specific response payload. The official shared model does not declare a fixed type or field set. Use the operation's documented return fields or response example; an operation-specific schema, when present, describes the documented fields. Undocumented fields must be read from the actual response rather than assumed.
Link to the API Swagger documentation for this endpoint
Response message (EN-US)
Response message (ZH-CN)
The parameters used in the request
Unique request identifier
The endpoint that generated this response
Support message
The time the response was generated
The timestamp the response was generated
The timezone of the response time