cURL
curl --request GET \
--url 'https://api.keyapi.ai/v1/tiktok/shop/trends/analytics' \
--header 'Authorization: Bearer <YOUR_API_KEY>'import requests
response = requests.get(
'https://api.keyapi.ai/v1/tiktok/shop/trends/analytics',
params={},
headers={'Authorization': 'Bearer <YOUR_API_KEY>'}
)
print(response.json())const response = await fetch('https://api.keyapi.ai/v1/tiktok/shop/trends/analytics',
{
method: 'GET',
headers: { 'Authorization': 'Bearer <YOUR_API_KEY>' }
}
);
const data = await response.json();
console.log(data);HttpResponse<String> response = Unirest.get("https://api.keyapi.ai/v1/tiktok/shop/trends/analytics")
.header("Authorization", "Bearer <token>")
.asString();{
"code": 0,
"message": "success",
"data": [
{
"dt": "2025-06-01",
"seller_id": "7495821166040746573",
"total_crawl_product_cnt": 0,
"total_live_cnt": 0,
"total_live_ifl_cnt": 0,
"total_product_cnt": 1,
"total_sale_1d_cnt": 0,
"total_sale_cnt": 0,
"total_sale_gmv_1d_amt": 0,
"total_sale_gmv_amt": 0,
"total_video_cnt": 0,
"total_video_ifl_cnt": 0,
"user_id": ""
}
],
"requestId": "dc670d54-a58d-484c-9b5f-73b2aa324b9f"
}{
"code": 400,
"data": null,
"message": "Missing required parameter: handle"
}{
"code": 401,
"data": null,
"message": "apiKey is null"
}{
"code": 402,
"data": null,
"message": "apiKey quota is not enough"
}{
"code": 429,
"data": null,
"message": "qps limit exceeded"
}{
"code": 500,
"data": null,
"message": "Internal server error"
}TikTok Shop
Shop Trends -EchoTik
Retrieve historical trend snapshots for a TikTok Shop, showing GMV growth, product count changes, and sales volume over time.
GET
/
v1
/
tiktok
/
shop
/
trends
/
analytics
cURL
curl --request GET \
--url 'https://api.keyapi.ai/v1/tiktok/shop/trends/analytics' \
--header 'Authorization: Bearer <YOUR_API_KEY>'import requests
response = requests.get(
'https://api.keyapi.ai/v1/tiktok/shop/trends/analytics',
params={},
headers={'Authorization': 'Bearer <YOUR_API_KEY>'}
)
print(response.json())const response = await fetch('https://api.keyapi.ai/v1/tiktok/shop/trends/analytics',
{
method: 'GET',
headers: { 'Authorization': 'Bearer <YOUR_API_KEY>' }
}
);
const data = await response.json();
console.log(data);HttpResponse<String> response = Unirest.get("https://api.keyapi.ai/v1/tiktok/shop/trends/analytics")
.header("Authorization", "Bearer <token>")
.asString();{
"code": 0,
"message": "success",
"data": [
{
"dt": "2025-06-01",
"seller_id": "7495821166040746573",
"total_crawl_product_cnt": 0,
"total_live_cnt": 0,
"total_live_ifl_cnt": 0,
"total_product_cnt": 1,
"total_sale_1d_cnt": 0,
"total_sale_cnt": 0,
"total_sale_gmv_1d_amt": 0,
"total_sale_gmv_amt": 0,
"total_video_cnt": 0,
"total_video_ifl_cnt": 0,
"user_id": ""
}
],
"requestId": "dc670d54-a58d-484c-9b5f-73b2aa324b9f"
}{
"code": 400,
"data": null,
"message": "Missing required parameter: handle"
}{
"code": 401,
"data": null,
"message": "apiKey is null"
}{
"code": 402,
"data": null,
"message": "apiKey quota is not enough"
}{
"code": 429,
"data": null,
"message": "qps limit exceeded"
}{
"code": 500,
"data": null,
"message": "Internal server error"
}🪙1 creditper request
Copy for AI
🤖 Why Code When AI Can Do It For You?
Stop writing code like it’s 1970! Let AI do the heavy lifting - click the sparkles to copy a perfectly formatted prompt for ChatGPT, Claude, or your favorite AI assistant.
Authorizations
Query Parameters
Shop Id
Time range filter, yyyy-MM-dd format
Time range filter, yyyy-MM-dd format
Page numbers, starting from 1, maximum 100000
The maximum number of pages is 10.

