TikTok Shop Search API
TikTok Shop keyword search — priced products with sold, rating/reviews, originalPrice/discount, seller id.
GET request to /v1/tiktok-shop/shop-search 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 Search API?
Search TikTok Shop by keyword and get products as clean JSON: id, url, title, price + originalPrice/discount/savings, currency, sold, rating + reviews (always keyed; null when the PDP has no score yet), image, and seller{id,name,url}. top-level region is an echo of the region query param you sent (default US) — market selection, not a creator country and not AI-inferred. price uses the same canonical rule as Product Details: TikTok's promotion minimum sale price across SKUs at fetch time (promos can move between calls). Flat 2 credits per call. Pass cache=true for the 24h shared cache.
What you get
- rating + reviews always keyed on every hit
- originalPrice + discount + savings (same price rule as Product Details)
- seller{id,name,url}
- region = request param echo (not AI / no regionSource)
- Flat 2 credits
Platform limits
Honest ceilings from the upstream platform surface — not Captapi bugs. Unexpected truncation here is usually the platform, not us.
- Native path hydrates each hit via PDP SSR (Shop search HTML is WAF-gated). rating/reviews come from the PDP review_model — new products often have null until TikTok publishes a score.
- No page/cursor yet — soft-cap is whatever the SERP+hydrate window returns (limit max 200; you usually get fewer).
- TikTok promotion prices are point-in-time; the same product_id can show a different sale price minutes later on Search vs Product Details.
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-search?q=phone%20case" \
-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": {
"query": "phone case",
"region": "US",
"totalReturned": 5,
"products": [
{
"platform": "tiktok_shop",
"id": "1732313842426745420",
"url": "https://shop.tiktok.com/us/pdp/plum-polka-dot-cute-phone-case-for-iphone-x-17-tough-stylish/1732313842426745420?source=product_detail&enter_method=url_semantic_301",
"title": "Plum Polka Dot Cute Phone Case for iPhone - Durable & Stylish",
"price": 12.68,
"originalPrice": 21.2,
"currency": "USD",
"discount": "40%",
"sold": 532,
"image": "https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/db875350dd404f64bb4b6bc79ae26a09~tplv-fhlh96nyum-crop-webp:1290:1290.webp?dr=12190&t=555f072d&ps=933b5bde&shp=8dbd94bf&shcp=607f11de&idc=useast5&from=2378011839",
"seller": {
"id": "7495626050433419852",
"name": "Anthony Z Sierra Store",
"url": "https://www.tiktok.com/shop/store/Anthony%20Z%20Sierra%20Store/7495626050433419852"
},
"rating": 4.8,
"reviews": 2493,
"savings": null
},
{
"platform": "tiktok_shop",
"id": "1731098552908944370",
"url": "https://shop.tiktok.com/us/pdp/trendy-pink-ed-hardy-tough-phone-cases-impact-resistant-wireless-charging-shock-absorption/1731098552908944370?source=product_detail&enter_method=url_semantic_301",
"title": "Trendy Pink Ed Hardy Inspired Tough Phone Cases, Phone Durable, Gift, Accessories Top Trendy Phone Cases Phone Cover Hard Case Tough 2-piece Phone Case",
"price": 22.54,
"originalPrice": 24.09,
"currency": "USD",
"discount": "6%",
"sold": 512,
"image": "https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/cc79ccfd6a324d548de31cb761b6c3c4~tplv-fhlh96nyum-crop-webp:794:794.webp?dr=12190&t=555f072d&ps=933b5bde&shp=8dbd94bf&shcp=e1be8f53&idc=useast5&from=2378011839",
"seller": {
"id": "7496126292994264050",
"name": "Timeless Teapot Creations",
"url": "https://www.tiktok.com/shop/store/timeless-teapot-creations/7496126292994264050"
},
"rating": 4.6,
"reviews": 48,
"savings": "Saving $1.55"
}
]
}
}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
queryThe search query you sent.regionEcho of the region query parameter you sent (default US) — the market used for this search. Not a creator country, not AI-inferred, and there is no regionSource on this endpoint.totalReturnedNumber of items returned in this response.
Products
Each item in products contains:
platformPlatform identifier for this response (matches the endpoint's platform).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 (promotion_product_price.min_price). Same rule as Product Details — TikTok may change promos between calls.originalPricePre-discount price when TikTok exposes an origin price or seller deduction; null when there is no promo. Same rule as Product Details.currencyCurrency code.discountPercent off vs originalPrice when a promo exists (e.g. "55%"); null otherwise.soldUnits sold for this product (product_model.sold_count) — not the shop's aggregate sold.imagePrimary product image URL (TikTok Shop search has no separate thumbnail field).sellerSeller shop card: id, name, and store url — not a content author.ratingProduct star score from the PDP when TikTok exposes one; null when the product has no reviews yet.reviewsProduct review count from the PDP when exposed; null when unknown/zero with no score.savingsSavings.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| q | string | Yes | Product search query (min 2 characters), e.g. phone case. |
| region | string | No | Two-letter market region for the search (default US). Echoed on the response as data.region — not a creator home country. |
| 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-searchand parse the JSON response.
Use cases
Product Discovery
Find TikTok Shop listings by keyword with price, sold, and rating in one call.
Promo & Price Screening
Filter hits by originalPrice/discount/savings before opening a PDP.
Quality Ranking
Sort or threshold on rating/reviews without a second Product Details hop.
Seller Follow-up
Take seller.id / seller.url into Shop Products for the full store catalog.
Frequently asked questions
What does the TikTok Shop Search API do?+
The TikTok Shop Search API lets you search and return matching results from a public TikTok Shop query using one GET request to /v1/tiktok-shop/shop-search. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the TikTok Shop Search 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 Search 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 Search API?
Sign up, grab your key, and make your first call in 60 seconds.