TikTok Shop Products API
Store catalog with shopInfo (sold/followers/rating) + products priced with sold, rating, savings.
GET request to /v1/tiktok-shop/shop-products that responds with clean JSON and costs 2 credits. Pass cache=true for a free 24h cache hit; default is always fresh. Start with 100 free credits — no credit card.What is the TikTok Shop Products API?
Pass a TikTok Shop store URL and get that shop's public catalog as clean JSON — products and the store card from the same SSR call. Top-level shopInfo: sold + formatSold (e.g. 5.6M), reviews, followers, rating, productCount, videoCount, isOfficial + identityLabel (OFFICIAL SHOP), region, logo, storeScores[]. Each products[] row: id/url/slug, title, numeric price + originalPrice + discount + savings (unmasked — not TikTok's $3? strings), currency, sold, rating, reviews, image, seller{id,name,url}. Optional region (default US). Billing: flat 2 credits per call on native SSR (limit does not multiply credits — a 200-cap request that returns ~30 SSR rows still costs 2). Apify fallback (rare) scales ~2.8/result. No cursor/sort_by yet. Non-US coverage depends on TikTok exposing that shop in the selected region — empty results outside the US are often a platform limit, not a Captapi bug.
What you get
- shopInfo{sold,formatSold,followers,rating,productCount,isOfficial,…}
- Unmasked numeric price / originalPrice / discount / savings
- products with sold + rating + reviews always keyed
- SEO slug per product
- Flat 2 credits on native SSR
Platform limits
Honest ceilings from the upstream platform surface — not Captapi bugs. Unexpected truncation here is usually the platform, not us.
- Native soft-caps around ~30 products per store page. No cursor / sort_by (top|new_releases) yet — productCount on shopInfo shows how much of the catalog you are missing.
- shop_slogan is often omitted on US store SSR even when ScrapeCreators fills it.
- Non-US shop catalog coverage depends on TikTok exposing that shop in the selected region — some shops return empty outside the US even when they appear in shop search. Sorry: this is a TikTok exposure limit we document rather than hide.
Try it
Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).
Parameters
curl "https://api.captapi.com/v1/tiktok-shop/shop-products?url=https%3A%2F%2Fwww.tiktok.com%2Fshop%2Fstore%2Fgoli-nutrition%2F7495794203056835079" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."Edit the parameters and the code updates instantly. Switch languages and hit copy.
Example response
{
"success": true,
"data": {
"url": "https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079",
"region": "US",
"shopInfo": {
"id": "7495794203056835079",
"name": "Goli Nutrition",
"url": "https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079",
"logo": "https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/e7478d3e93d4487a9e772fa74e10f506~tplv-fhlh96nyum-resize-webp:300:300.webp?dr=12185&t=555f072d&ps=933b5bde&shp=905da467&shcp=a6e80448&idc=useast5&from=2422056039",
"sold": 5645819,
"formatSold": "5.6M",
"reviews": 401072,
"followers": 590436,
"rating": 4.6,
"productCount": 55,
"videoCount": 3919,
"identityLabel": "OFFICIAL SHOP",
"isOfficial": true,
"region": "US",
"storeScores": [
{
"score": 0.9935951457947075,
"scorePercentage": "99",
"type": 1
},
{
"score": 0,
"scorePercentage": "0",
"type": 2
}
]
},
"totalReturned": 5,
"products": [
{
"platform": "tiktok_shop",
"id": "1729527313880355335",
"url": "https://www.tiktok.com/shop/pdp/ashwagandha-gummies-by-goli-ksm-66-mixed-berry-vegan-non-gmo/1729527313880355335",
"title": "Goli Ashwagandha & Vitamin D Gummy - Mixed Berry, KSM-66, Vegan, Plant Based, Non-GMO, Gluten-Free & Gelatin Free. America's #1 Ashwagandha Brand",
"price": 14.98,
"originalPrice": 19,
"currency": "USD",
"discount": "21%",
"savings": "Saving $4.02",
"slug": "ashwagandha-gummies-by-goli-ksm-66-mixed-berry-vegan-non-gmo",
"rating": 4.5,
"reviews": 94492,
"sold": 1297377,
"image": "https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/2bc69aa9f6084480beee1bb4a8db3a69~tplv-fhlh96nyum-crop-webp:1500:1500.webp?dr=12190&t=555f072d&ps=933b5bde&shp=8dbd94bf&shcp=a6e80448&idc=useast5&from=2378011839",
"seller": {
"id": "7495794203056835079",
"name": "Goli Nutrition",
"url": "https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079"
}
},
{
"platform": "tiktok_shop",
"id": "1731194857673101831",
"url": "https://www.tiktok.com/shop/pdp/zero-sugar-best-seller-trio-goli-ashwagandha-gummies-vegan-non-gmo/1731194857673101831",
"title": "Zero Sugar Best Seller Trio - World's First 3-in-1 Pre, Post, Probiotic, Apple Cider Vinegar with Vitamin B12 and Probiotics To Address Bloating, Ashwagandha & L-Theanine, Vitamin D gummies. Gluten-Free, Vegan, Non-GMO & Gelatin-Free",
"price": 35.8,
"originalPrice": 105,
"currency": "USD",
"discount": "66%",
"savings": "Saving $69.20",
"slug": "zero-sugar-best-seller-trio-goli-ashwagandha-gummies-vegan-non-gmo",
"rating": 4.5,
"reviews": 45249,
"sold": 992721,
"image": "https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/d3ab128a9f65482d9d8d288ccd252d50~tplv-fhlh96nyum-crop-webp:3000:3000.webp?dr=12190&t=555f072d&ps=933b5bde&shp=8dbd94bf&shcp=a6e80448&idc=useast5&from=2378011839",
"seller": {
"id": "7495794203056835079",
"name": "Goli Nutrition",
"url": "https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079"
}
}
]
}
}Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Source. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.
Response structure
A successful call returns success, cached, creditsUsed, and a data object with the following fields:
Top-level fields
urlCanonical URL of the item.regionEcho of the region query parameter you sent (default US) — the market used for this catalog fetch. Not a creator country, not AI-inferred, and there is no regionSource here.totalReturnedNumber of items returned in this response.
Shop info
The shopInfo object contains:
idStable platform ID for the item.nameName of the item or account. On profile endpoints: deprecated alias of displayName (one release).urlCanonical URL of the item.logoLogo image URL.soldUnits sold (product row) or lifetime shop sold (inside shopInfo).formatSoldCompact shop sold string from TikTok (e.g. "5.6M").reviewsReview count (product or shop).followersFollower count.ratingStar rating (product or shop).productCountProduct count. Example: 55.videoCountPopulation video count when the source is authoritative (e.g. TikTok challenge/detail statsV2 on popular-hashtags, or a channel's uploaded-video total). Never a sample tally — sample sizes use sampleVideoCount / sampleSize.identityLabelIdentity label. Example: "OFFICIAL SHOP".isOfficialtrue when identityLabel indicates an official shop (e.g. "OFFICIAL SHOP").regionEcho of the region query parameter you sent (default US) — the market used for this catalog fetch. Not a creator country, not AI-inferred, and there is no regionSource here.storeScoresTikTok store sub-scores [{score, scorePercentage, type}].
Products
Each item in products contains:
platformAlways "tiktok_shop" on this endpoint (not youtube/instagram).idStable platform ID for the item.urlCanonical URL of the item.titleTitle of the item.priceCurrent promotion minimum sale price across SKUs at fetch time — same canonical rule as Shop Search and Product Details.originalPriceList/original price before discount (numeric when unmasked).currencyCurrency code.discountPercent off string (e.g. "21%").savingsHuman discount copy from TikTok (e.g. "Saving $4.02").slugSEO slug from seo_url.slug (also embedded in the product URL).ratingStar rating (product or shop).reviewsReview count (product or shop).soldUnits sold (product row) or lifetime shop sold (inside shopInfo).imageImage URL.sellerObject with id, name, url.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | TikTok Shop store URL, e.g. https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble. |
| region | string | No | Two-letter market region (default US). Non-US coverage depends on TikTok exposing that shop in the selected region — empty results outside the US are often a platform limit, not a Captapi bug. |
| limit | integer | No | Max items to return (default 20, max 200). Flat 2 credits per call. |
| cache | boolean | No | Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. Envelope includes cached + cachedAt on hits. |
Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs 2 credits. Pass cache=true for a free 24h cache hit; default is always fresh.
How it works
- 1. Sign up — get 100 free credits, no card required.
- 2. Create a key from your dashboard.
- 3. Send one request to
/v1/tiktok-shop/shop-productsand parse the JSON response.
Use cases
Competitor Store Intel
Read shopInfo sold/followers/rating alongside the priced catalog in one call.
Price & Discount Monitoring
Track numeric price/originalPrice/discount/savings without TikTok's masked $3? strings.
Official Shop Vetting
Check isOfficial / identityLabel before featuring a store in a campaign.
Catalog Sampling
Pull up to ~30 SSR products with sold + rating for assortment research (no cursor yet).
Frequently asked questions
What does the TikTok Shop Products API do?+
The TikTok Shop Products API lets you list items in bulk with metadata from a public TikTok Shop listing or product using one GET request to /v1/tiktok-shop/shop-products. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the TikTok Shop Products API cost?+
Each successful call costs 2 credits. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a TikTok Shop API key or OAuth?+
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Is the TikTok Shop Products API suitable for production use?+
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
More TikTok Shop APIs
Ready to use the TikTok Shop Products API?
Sign up, grab your key, and make your first call in 60 seconds.