Product page
The full SDUI product detail page the app renders: SKUs, prices, inventory, shipping, coupons and seller stats.
Upstream
/api/v2/shop/sdui_pdp/get/api/v1/shop/item/product_info/getExclusiveEvery planParameters
| Name | Type | Description |
|---|---|---|
product_idproduct_id or url | string | The TikTok Shop product ID. e.g. 1729487391071113352 |
urlproduct_id or url | string | A Shop product link. |
region | string | Two-letter country code for egress and storefront. e.g. US |
city | string | A city in that region. See the supported cities list. e.g. miami |
Pricing
| Plan | Per call | Per 1,000 calls |
|---|---|---|
| Starter | 25 credits | $2.90 |
| Growth | 25 credits | $1.98 |
| Scale | 25 credits | $1.45 |
Response fields
| Field | Type | Description |
|---|---|---|
status_code | integer | Upstream TikTok mobile status code (0 indicates success). |
product_id | string | TikTok Shop product identifier. |
title | string | Decoded title value. |
region | string | Two-letter ISO 3166-1 country code associated with the item or context. |
city | string | City-level egress or location identifier. |
currency | string | Decoded currency value. |
status | string | Current lifecycle or health status. |
price_range | object | Structured price range metadata. |
price_range.min | string | Decoded min value. |
price_range.max | string | Decoded max value. |
price_range.original | string | Decoded original value. |
price_range.discount_pct | integer | Decoded discount pct value. |
sold_count | integer | Total sold count. |
rating | number | Decoded rating value. |
review_count | integer | Total review count. |
skus | object[] | Purchasable SKU variants with per-variant price, stock and sale attributes. |
skus[].sku_id | string | Unique sku identifier. |
skus[].price | string | Formatted and numeric price breakdown with currency. |
skus[].original_price | string | Decoded original price value. |
skus[].stock | integer | Decoded stock value. |
skus[].sku_name | string | Decoded sku name value. |
skus[].props | object | Structured props metadata. |
logistics | object | Shipping origin, carrier tier, fee and estimated delivery window. |
logistics.free_shipping | boolean | Whether free shipping is enabled or true. |
logistics.free_shipping_threshold | string | Decoded free shipping threshold value. |
logistics.shipping_fee | string | Decoded shipping fee value. |
logistics.eta_days | integer[] | Decoded eta days value. |
logistics.warehouse_region | string | Decoded warehouse region value. |
Responses
A 200 returns JSON with stable field names. Every response carries x-credits-cost, x-credits-tier and x-credits-remaining. Errors return a JSON body with a stable code and cost 0 credits. Error codes
import { TikUltra } from 'tikultra'
const client = new TikUltra({ apiKey: process.env.TIKULTRA_KEY })
const res = await client.shop.pdp({ product_id: '1729487391071113352' })
console.log(res.creditsCost, res.data){
"status_code": 0,
"product_id": "1729487391071113352",
"title": "Low-profile mechanical keyboard 75% CNC Aluminum",
"region": "US",
"city": "miami",
"currency": "USD",
"status": "active",
"price_range": {
"min": "79.99",
"max": "89.99",
"original": "109.00",
"discount_pct": 27
},
"sold_count": 18204,
"rating": 4.8,
"review_count": 2941,
"skus": [
{
"sku_id": "1729384756192837462",
"price": "79.99",
"original_price": "109.00",
"stock": 412,
"sku_name": "Tactile Brown / Space Grey",
"props": {
"switch": "Tactile Brown",
"color": "Space Grey"
}
},
{
"sku_id": "1729384756192837463",
"price": "89.99",
"original_price": "119.00",
"stock": 195,
"sku_name": "Silent Linear / Anodized Silver",
"props": {
"switch": "Silent Linear",
"color": "Silver"
}
}
],
"logistics": {
"free_shipping": true,
"free_shipping_threshold": "35.00",
"shipping_fee": "0.00",
"eta_days": [
3,
6
],
"warehouse_region": "California, US",
"cod_supported": false,
"return_policy": "Free 30-day returns"
},
"promotion_vouchers": [
{
"voucher_id": "vch_save10_us",
"code": "SAVE10",
"label": "10% off orders over $50",
"discount_type": "percentage",
"discount_value": 10,
"min_spend": "50.00",
"claimable": true
},
{
"voucher_id": "vch_newbuyer_5",
"code": "SHOPNEW5",
"label": "$5 off first TikTok Shop order",
"discount_type": "fixed",
"discount_value": 5,
"min_spend": "25.00",
"claimable": true
}
],
"seller": {
"seller_id": "7495298225862576264",
"name": "Acme Studio Shop",
"shop_score": 4.8,
"product_count": 28,
"sold_count": 42910,
"response_rate_pct": 99,
"ship_on_time_pct": 98.4,
"positive_review_pct": 97.2
},
"component_tree": {
"protocol_version": "sdui_v2",
"page_name": "pdp_main",
"sections": [
{
"component_id": "header_media_carousel",
"type": "oec_pdp_header",
"media_count": 6,
"has_video": true
},
{
"component_id": "price_flash_banner",
"type": "oec_pdp_price",
"flash_sale_active": true,
"ends_at": 1794455200
},
{
"component_id": "sku_prop_selector",
"type": "oec_pdp_sku",
"prop_groups": [
"switch",
"color"
],
"total_skus": 2
},
{
"component_id": "logistics_promise",
"type": "oec_pdp_logistics",
"carrier_tier": "tiktok_fulfilled_us",
"guarantee_badge": "On-time delivery guarantee"
},
{
"component_id": "voucher_strip",
"type": "oec_pdp_coupons",
"voucher_count": 2
},
{
"component_id": "seller_trust_card",
"type": "oec_pdp_seller",
"star_shop": true,
"score": 4.8
},
{
"component_id": "buyer_review_digest",
"type": "oec_pdp_reviews",
"featured_tags": [
"Great sound (418)",
"Fast shipping (290)",
"Solid aluminum (205)"
]
}
]
},
"log_pb": {
"impr_id": "202611120200419F8E7D6C5B4A3210"
}
}More in Shop · Products
GET/v1/shop/reviewsProduct reviews25 crGET/v1/shop/recommendationsProduct recommendations25 crGET/v1/shop/same-shopMore from this shop25 crGET/v1/shop/promotionsPromotions25 crGET/v1/shop/translationProduct translation25 cr
Ready to build?
Start with 2,500 free credits and test every public endpoint, then pick a plan.