TikTok Shop Product Details API
PDP — price (sku_min when guest min is *), sold vs stock, seller id/url, images[].
Pass a TikTok Shop product URL and get the PDP as clean JSON. Price is the field this endpoint exists for: promotion_product_price.min_price.sale_price_decimal first, then per-SKU sale prices when the guest min is masked as *, then product_price_info, then a slower fallback path (native title without a price is not a finished call). priceStatus is extracted | region_restricted | not_extracted — region_restricted means TikTok shipped * / a region-locked shell (try another region); not_extracted means no path returned a number (retrying will not help). currency only when an amount exists. originalPrice + discountPercent + savingsAmount when a seller deduction exists. sold is per-product sold_info.sold_count (or the fallback path's product-level 'stock' when skus[] is empty — that number is units sold, the opposite of inventory). stock is the sum of SKU available_quantity and is omitted when TikTok does not expose variant qty. seller includes id, name, store url, rating, productCount, and logo — id/url come from seller_model and store URLs in the PDP HTML, not only product_model.seller_id. images[] are Shop CDN URLs; t=555f072d is a build token identical across the gallery, not an expiry — mediaUrlsExpireAt is present and null. Accepts www /pdp/{id} and shop.tiktok.com/view/product/{id}?region=BR — the id is the path segment; region / oec_region on the TikTok URL wins over the API default US. An unresolved product is HTTP 404 at 0 credits (never a 200 empty shell with priceStatus=not_extracted). Flat 2 credits when the product exists. relatedVideos[] and seller.tiktokUrl are not in US PDP SSR today.
Request
- Base URL: https://api.captapi.com
- URL: https://api.captapi.com/v1/tiktok-shop/product-details
- Auth: one of:
- HTTP bearer
- API key in header X-API-Key
Query parameters
TikTok Shop product URL, e.g. https://shop.tiktok.com/view/product/1731410956394792439?region=BR or https://www.tiktok.com/shop/pdp/1731098552908944370. 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.
Two-letter market region (default US). A region= or oec_region= query on the product URL wins over this default so a BR share URL is not fetched as US. Echoed as data.region.
Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.
Response
Success. The data object for this endpoint.
Changes
No recorded changes to this operation across all 3 revisions of this API.