TikToktiktok.shop.products.get
TikTok Shop product detail API
One TikTok Shop product by ID or link: title, price and discount, units sold, rating, number of reviews, all images, and the shop with its rating and followers.
GEThttps://api.okdata.online/v1/tiktok/shop/products/get
Price
One call costs $0.002 and returns one product. 1,000 lookups cost $2.00. Failed calls are not charged.
Parameters
| Name | Type | Description |
|---|---|---|
id | string | The product ID. Give id or url. |
url | string | A share link or page URL; the ID is read from it. |
country | string | Shop region as an ISO country code; US by default and the most complete. |
view | stringcompactstandardfull | How much of each object comes back. full adds platform-specific fields under ext. |
fields | string | Comma-separated fields to keep, to save tokens. |
Give id or url; one is enough. cursor, view and fields work the same on every endpoint: how requests work.
Returned fields
The item is a Product.
| Field | Type | Description |
|---|---|---|
id | string | Product ID in the shop. |
url | string | Product page. |
title | string | Product title. |
price | number | null | Current price (the lowest variant), in the currency given. |
original_price | number | null | List price before discount, where shown. |
currency | string | null | ISO 4217 currency code. |
sold | integer | null | Units sold, as the shop shows it. |
rating | number | null | Average stars, 0 to 5. |
reviews | integer | null | Number of reviews. |
images | string[] | null | Product image URLs. |
shop | ShopRef | Who sells it. |
ext | object | Platform-specific extras. Only returned with view=full. |
Request
curl -G "https://api.okdata.online/v1/tiktok/shop/products/get" \
-H "Authorization: Bearer $OKDATA_API_KEY" \
--data-urlencode 'id=1732296652516463425'import os
import requests
resp = requests.get(
"https://api.okdata.online/v1/tiktok/shop/products/get",
headers={"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"},
params={"id": "1732296652516463425"},
timeout=60,
)
body = resp.json()
if body["code"] != "ok":
raise RuntimeError(f"{body['code']}: {body['message']} (charged: {body['charged']})")
row = body["data"]["item"]
print(row["price"], row["currency"], row["sold"], row["title"][:60])
print("cost: $" + body["meta"]["billing"]["amount"])const url = new URL('https://api.okdata.online/v1/tiktok/shop/products/get');
url.searchParams.set('id', "1732296652516463425");
const res = await fetch(url, {
headers: {
Authorization: `Bearer ${process.env.OKDATA_API_KEY}`,
},
});
const body = await res.json();
if (body.code !== 'ok') throw new Error(`${body.code}: ${body.message}`);
const row = body.data.item;
console.log(row.price, row.currency, row.sold, row.title.slice(0, 60));
console.log('cost: $' + body.meta.billing.amount);{
"name": "call",
"arguments": {
"endpoint": "tiktok.shop.products.get",
"params": {
"id": "1732296652516463425"
}
}
}Or ask an agent that has the MCP server connectedUse TikTok Shop product detail and show the price range and the five best sellers, with links.
Response
{
"code": "ok",
"request_id": "0f6c2a8e-4b1d-4e0a-9a51-3c7d2b9e1f20",
"data": {
"item": {
"id": "1732296652516463425",
"url": "https://www.tiktok.com/shop/pdp/1732296652516463425",
"title": "Fanttik Cafein 11 Portable Espresso Machine",
"price": 181.99,
"original_price": 207.99,
"currency": "USD",
"sold": 2092,
"rating": 4.7,
"reviews": 214,
"images": [
"https://cdn.example.com/product/1.jpg"
],
"shop": {
"id": "7495128284160625473",
"name": "Fanttik",
"url": null
}
}
},
"warnings": [],
"meta": {
"capability": "tiktok.shop.products.get",
"billing": {
"amount": "0.002",
"currency": "USD",
"balance_after": "9.998"
},
"unavailable": {},
"cached": false,
"replayed": false,
"fetched_at": "2026-11-11T08:00:00Z"
}
}Try it
This sends a real call to https://api.okdata.online and is billed as usual: at most $0.002. Failed calls are free. Your key goes only to that address and is never stored on this site.
Questions
How much does the TikTok Shop product detail API cost?
One call costs $0.002 and returns one product. 1,000 lookups cost $2.00. Failed calls are not charged.
Can I pass a share link instead of an ID?
Yes. Put the link in url and okdata reads the ID from it. Short share links work too.
Do I need a TikTok account, cookies or a QR login?
No. You send only your okdata API key. The data is public data from TikTok; nothing is fetched with your own TikTok account.
Am I charged when a call fails?
No. Every error response says charged: false, except a timeout, which says charged: null until the outcome is known. Resend with the same Idempotency-Key and you are never charged twice.
What if TikTok does not show a field?
The field is null, and meta.unavailable names it with the reason: platform (the platform never shows it) or capability (we cannot fetch it yet).
Answers that use this endpoint
More TikTok endpoints
- TikTok video searchtiktok.videos.searchPost[]$0.002/call
- TikTok video detailtiktok.videos.getPost$0.002/call
- TikTok video commentstiktok.videos.comments.listComment[]$0.002/call
- TikTok account profiletiktok.users.getAccount$0.002/call
- TikTok Ads Library searchtiktok.ads.searchAd[]$0.004/call
- TikTok Creative Center top adstiktok.creative_center.ads.searchAd[]$0.002/call
- TikTok Shop product searchtiktok.shop.products.searchProduct[]$0.004/call
- TikTok Shop product reviewstiktok.shop.products.reviews.listReview[]$0.002/call