TikTok Shop
GET /v1/tiktok-shop/product-details

TikTok Shop Product Details API

PDP — price/originalPrice/discount, images[], skus[] with per-variant stock + saleProps, seller id/url, categories (2 credits).

2 credits per request
TL;DR
PDP — price/originalPrice/discount, images[], skus[] with per-variant stock + saleProps, seller id/url, categories (2 credits). The TikTok Shop Product Details API (TikTok Shop) is a single authenticated GET request to /v1/tiktok-shop/product-details 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 Product Details API?

Pass a TikTok Shop product URL and get the PDP as clean JSON from the same SSR product_info blob TikTok ships: title, rich description, numeric price + originalPrice + discount + savings (when a seller deduction exists), currency, sold, stock (sum of SKUs), rating/reviews, images[] gallery, categories[{id,name}], saleProperties[] (Color/Size axes), and skus[{id,stock,price,warehouseId,saleProps[]}]. seller includes id, name, url, rating, productCount, and logo when present. Flat 2 credits — same as Shop Products. region (default US) selects the market when the primary path misses. relatedVideos[] (affiliate creator bridge) and seller.tiktokUrl are not in US PDP SSR today — returned when an upstream path provides them; use Product Reviews for sample review text.

What you get

  • Flat 2 credits
  • originalPrice / discount / savings always keyed (null when no promo)
  • skus[] with per-variant stock + saleProps (e.g. Phone Models)
  • images[] gallery + categories[{id,name}]
  • seller{id,name,url,rating,productCount,logo}

Platform limits

Honest ceilings from the upstream platform surface — not Captapi bugs. Unexpected truncation here is usually the platform, not us.

  • relatedVideos[] (creator↔product affiliate bridge) is not embedded in US PDP SSR — Captapi returns it only when an upstream path provides it. ScrapeCreators documents US-only coverage for that block.
  • seller.tiktokUrl / tiktokId are often absent from PDP SSR (shop catalog shopInfo is richer for store-level signals).
  • Sample review text lives on Product Reviews — not duplicated here.

Try it

Open in Playground

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

Sign in to run live
curl "https://api.captapi.com/v1/tiktok-shop/product-details?url=https%3A%2F%2Fshop.tiktok.com%2Fus%2Fpdp%2Ftrendy-pink-ed-hardy-tough-phone-cases-impact-resistant-wireless-charging-shock-absorption%2F1731098552908944370%3Fsource%3Dproduct_detail%26enter_method%3Durl_semantic_301" \
  -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": {
    "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",
    "description": "Protect your phone in style with this tough phone case. This lightweight phone case is impact resistant and comes with the perfect surface in vivid detail as well as crisp color. Compatible with iPhone X, 11, 12, 13, 14, 15, 16 & more - check our available sizes.\n• 2-piece design with impact resistance and shock dispersion.\n• Materials: polycarbonate (shell), TPU (lining).\n• Interior rubber liner for extra protection (appearance may vary across phone models.\n• Supports wireless charging (not including MagSafe)\n• Lexan plastic: Developed by GE Plastics, this material is extremely strong, durable and impact resistant\n• Lay-flat bezel: Protects the screen from small scratches\n• Flexible rubber liner: Absorbs shock from impacts\n• Glossy Finish: Full color decoration with glossy finish\n• UV protected: Excellent resistance to outdoor weathering, long-term optical quality.\n• Glossy Finish: Full color decoration with glossy finish",
    "price": 22.54,
    "originalPrice": 24.09,
    "currency": "USD",
    "discount": "6%",
    "savings": "Saving $1.55",
    "rating": 4.6,
    "reviews": 48,
    "sold": 512,
    "stock": 2692,
    "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,
      "productCount": 85,
      "logo": "https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/587383daaf8a4eaaa4dfb4c8f2b5944f~tplv-fhlh96nyum-resize-png:300:300.png?dr=12184&t=555f072d&ps=933b5bde&shp=905da467&shcp=6ce186a1&idc=useast5&from=2422056039"
    },
    "skus": [
      {
        "id": "1731098558045590514",
        "stock": 84,
        "price": 22.54,
        "originalPrice": null,
        "status": "1",
        "warehouseId": "7495541999400830766",
        "purchaseLimit": null,
        "saleProps": [
          {
            "propName": "Phone Models",
            "propValue": "iPhone 16 E"
          }
        ]
      },
      {
        "id": "1731098558045656050",
        "stock": 51,
        "price": 22.54,
        "originalPrice": null,
        "status": "1",
        "warehouseId": "7495541999400830766",
        "purchaseLimit": null,
        "saleProps": [
          {
            "propName": "Phone Models",
            "propValue": "iPhone 16"
          }
        ]
      }
    ],
    "images": [
      "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",
      "https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/4fe011977a9d4350ba9d7acf0e502f52~tplv-fhlh96nyum-crop-webp:794:794.webp?dr=12190&t=555f072d&ps=933b5bde&shp=8dbd94bf&shcp=e1be8f53&idc=useast5&from=2378011839"
    ],
    "saleProperties": [
      {
        "id": "7494493199692793646",
        "name": "Phone Models",
        "values": [
          {
            "id": "7474656136961246982",
            "name": "iPhone 16 E"
          },
          {
            "id": "7495574204532655878",
            "name": "iPhone 16"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": "601739",
        "name": "Phones & Electronics"
      },
      {
        "id": "909064",
        "name": "Mobile Phone Accessories"
      }
    ],
    "region": "US"
  }
}

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

  • platformAlways tiktok_shop for this endpoint.
  • idStable platform ID for the item.
  • urlCanonical URL of the item.
  • titleTitle of the item.
  • descriptionDescription text.
  • priceCurrent promotion minimum sale price across SKUs (promotion_product_price.min_price.sale_price_decimal). Canonical across Shop Search / Shop Products / Product Details — point-in-time; TikTok promos can move between calls.
  • originalPriceList / pre-discount price when TikTok exposes a seller deduction or origin price; null when the PDP has no promo.
  • currencyCurrency code.
  • discountPercent off string (e.g. "13%") when originalPrice > price; null otherwise.
  • savingsHuman discount copy (e.g. "Saving $3.60") when a promo exists.
  • ratingAverage rating.
  • reviewsNumber of reviews.
  • soldUnits sold.
  • stockSum of available_quantity across skus[] (use skus[].stock for per-variant inventory).
  • imageImage URL.
  • imagesProduct gallery image URLs from the PDP (not a single OG thumbnail).
  • regionEcho of the region query parameter (default US) used for Apify fallback market selection. Native SSR follows the product URL's market. Not a creator country and not AI-inferred.

Seller

The seller 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.
  • ratingAverage rating.
  • productCountProduct count. Example: 85.
  • logoLogo image URL.

Skus

Each item in skus contains:

  • idStable platform ID for the item.
  • stockSum of available_quantity across skus[] (use skus[].stock for per-variant inventory).
  • priceCurrent promotion minimum sale price across SKUs (promotion_product_price.min_price.sale_price_decimal). Canonical across Shop Search / Shop Products / Product Details — point-in-time; TikTok promos can move between calls.
  • originalPriceList / pre-discount price when TikTok exposes a seller deduction or origin price; null when the PDP has no promo.
  • statusStatus value for this endpoint (see the field note on this page for enum meaning).
  • warehouseIdWarehouse id. Example: "7495541999400830766".
  • purchaseLimitPurchase limit.
  • salePropsArray of objects with propName, propValue.

Sale properties

Each item in saleProperties contains:

  • idStable platform ID for the item.
  • nameName of the item or account. On profile endpoints: deprecated alias of displayName (one release).
  • valuesArray of objects with id, name.

Categories

Each item in categories contains:

  • idStable platform ID for the item.
  • nameName of the item or account. On profile endpoints: deprecated alias of displayName (one release).

Parameters

NameTypeRequiredDescription
urlstringYesTikTok Shop product URL, e.g. 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.
regionstringNoTwo-letter market region for the secondary fetch path (default US). Primary SSR uses the product URL's market; empty/partial non-US results are often a TikTok exposure limit.
cachebooleanNoSet 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.

Using an AI agent? This endpoint is the MCP tool tiktok_shop_product_details via @captapi/mcp. Set it up →

How it works

  1. 1. Sign up — get 100 free credits, no card required.
  2. 2. Create a key from your dashboard.
  3. 3. Send one request to /v1/tiktok-shop/product-details and parse the JSON response.

Use cases

Variant Stock Tracking

Watch skus[].stock + saleProps so you know which Color/Size is actually depleting.

Price & Promo Truth

Read price/originalPrice/discount/savings on the PDP — same commerce fields as the catalog row.

Assortment & Categories

Use categories[] and saleProperties[] to classify SKUs without scraping the storefront UI.

Seller Join

Take seller.id / seller.url into Shop Products for the full store catalog.

Frequently asked questions

What does the TikTok Shop Product Details API do?+

The TikTok Shop Product Details API lets you fetch full metadata and key stats from a public TikTok Shop listing or product using one GET request to /v1/tiktok-shop/product-details. It returns clean JSON — no OAuth or infrastructure setup required.

How many credits does the TikTok Shop Product Details 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 Product Details 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 Product Details API?

Sign up, grab your key, and make your first call in 60 seconds.