Skip to content
scrapeatlas.Dashboard

Get a TikTok Shop product

Try in Playground

Read a public product page and its detail feed: identity, categories, seller summary, title, gallery, description blocks, specifications, sold count, unmasked sale and list prices, sale properties, every SKU with stock, price and package, the selected delivery option, rating and review counts, the embedded reviews with the rating histogram, the shop summary, availability and the seller's business compliance line.

GET/v1/tiktok/productx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
3
product_idstringquery

TikTok Shop product ID (15-22 digits); provide either product_id or url.

Example1729000000000000001
urlstringquery

Public product URL: https://www.tiktok.com/shop/pdp/{slug}/{id}, https://www.tiktok.com/shop/pdp/{id}, https://shop.tiktok.com/us/pdp/{slug}/{id} or https://www.tiktok.com/view/product/{id}.

max 2048 chars

regionenumdefault: "US"query

Storefront region, US (default).

one of: US · default: "US"

Response fields
214
requestIdstring

Request correlation UUID.

Upstream calls made (document reads and JSON feed calls, retries included), decoded bytes delivered to the parser and elapsed milliseconds.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsinteger

Always included.

≥ 0

successboolean

True when usable public data is returned; inspect status and coverage for omissions.

statusenum

success, partial, failed or challenged. HTTP 200 can be partial.

one of: success, partial

sourceUrlstring

Canonical public storefront URL the response describes.

absolute HTTPS URL

fetchedAtstring

UTC retrieval timestamp.

Complete means every supported field was read; warnings name each cap or fallback.

coverage.sourceenum

Always included.

one of: public_page, public_api

coverage.completeboolean

Always included.

coverage.warningsenum[]

Always included.

product_idstring

TikTok Shop product ID (15-22 digits); provide either product_id or url.

seller_idstring

Seller (shop) ID of the product.

Always included.

categories.category_idstring

Always included.

categories.levelinteger

Always included.

categories.is_leafboolean

Always included.

categories.parent_idstring

Always included.

categories.category_namestring

Always included.

categories.name_keystring

Always included.

Seller summary from the page's shop block: seller_id, name, avatar image, product_count and rating (string). Null when the page omits the shop block.

seller.seller_idstring

Always included.

seller.namestring

Always included.

Always included.

seller.avatar.heightinteger

Always included.

≥ 0

seller.avatar.widthinteger

Always included.

≥ 0

seller.avatar.uristring

Always included.

seller.avatar.url_liststring[]

Always included.

seller.product_countintegernullable

Always included.

seller.ratingstringnullable

Always included.

Always included.

product_base.titlestring

Always included.

Always included.

product_base.images.heightinteger

Always included.

≥ 0

product_base.images.widthinteger

Always included.

≥ 0

product_base.images.uristring

Always included.

product_base.images.url_liststring[]

Always included.

product_base.descriptionobject[]nullable

Always included.

Product properties as name/value pairs (several values joined with a bare comma, as the app page prints them).

product_base.specifications.namestring

Always included.

product_base.specifications.valuestring

Always included.

product_base.sold_countintegernullable

Units sold as a number, or null when unpublished.

product_base.category_namestringnullable

Always included.

product_base.category_idstringnullable

Always included.

The product's minimum-price record from the detail feed (same shape as card prices), as the web storefront prices it; null with prices_unavailable when the feed did not answer.

product_base.product_price_info.sku_idstringoptional

Optional.

product_base.product_price_info.symbol_positionintegeroptional

Optional.

product_base.product_price_info.show_currency_spacebooleanoptional

Optional.

product_base.product_price_info.currency_show_modeintegeroptional

Optional.

product_base.product_price_info.currency_namestring

Always included.

product_base.product_price_info.currency_symbolstring

Always included.

product_base.product_price_info.sale_price_decimalstring

Always included.

product_base.product_price_info.origin_price_decimalstringoptional

Optional.

product_base.product_price_info.sale_price_formatstring

Always included.

product_base.product_price_info.origin_price_formatstringoptional

Optional.

product_base.product_price_info.discount_formatstringoptional

Optional.

product_base.product_price_info.discount_decimalstringoptional

Optional.

product_base.product_price_info.reduce_price_formatstringoptional

Optional.

product_base.product_price_info.single_product_price_formatstringoptional

Optional.

product_base.product_price_info.single_product_price_decimalstringoptional

Optional.

product_base.product_price_info.sale_price_integer_part_formatstringoptional

Optional.

product_base.product_price_info.sale_price_decimal_part_formatstringoptional

Optional.

product_base.product_price_info.decimal_point_symbolstringoptional

Optional.

product_base.product_price_info.promotion_deduction_detailsobjectoptional

Optional.

product_base.product_price_info.raw_origin_price_decimalstringoptional

Optional.

product_base.product_price_info.raw_origin_price_formatstringoptional

Optional.

Always included.

sale_props.prop_idstring

Always included.

sale_props.prop_namestring

Always included.

sale_props.has_imageboolean

Always included.

Always included.

sale_props.sale_prop_values.prop_value_idstring

Always included.

sale_props.sale_prop_values.prop_valuestring

Always included.

Always included.

sale_props.sale_prop_values.image.heightinteger

Always included.

≥ 0

sale_props.sale_prop_values.image.widthinteger

Always included.

≥ 0

sale_props.sale_prop_values.image.uristring

Always included.

sale_props.sale_prop_values.image.url_liststring[]

Always included.

Always included.

up to 1000 items

skus.sku_idstring

Always included.

skus.sku_namestring

Always included.

Always included.

skus.sku_sale_props.prop_idstring

Always included.

skus.sku_sale_props.prop_namestring

Always included.

skus.sku_sale_props.prop_value_idstring

Always included.

skus.sku_sale_props.prop_valuestring

Always included.

skus.sale_prop_value_idsstring

Always included.

skus.stockintegernullable

Always included.

skus.warehouse_idstringnullable

Always included.

skus.sku_statusinteger

Always included.

skus.stock_statusintegernullable

Always included.

Always included.

skus.price_info.sku_idstringoptional

Optional.

skus.price_info.symbol_positionintegeroptional

Optional.

skus.price_info.show_currency_spacebooleanoptional

Optional.

skus.price_info.currency_show_modeintegeroptional

Optional.

skus.price_info.currency_namestring

Always included.

skus.price_info.currency_symbolstring

Always included.

skus.price_info.sale_price_decimalstring

Always included.

skus.price_info.origin_price_decimalstringoptional

Optional.

skus.price_info.sale_price_formatstring

Always included.

skus.price_info.origin_price_formatstringoptional

Optional.

skus.price_info.discount_formatstringoptional

Optional.

skus.price_info.discount_decimalstringoptional

Optional.

skus.price_info.reduce_price_formatstringoptional

Optional.

skus.price_info.single_product_price_formatstringoptional

Optional.

skus.price_info.single_product_price_decimalstringoptional

Optional.

skus.price_info.sale_price_integer_part_formatstringoptional

Optional.

skus.price_info.sale_price_decimal_part_formatstringoptional

Optional.

skus.price_info.decimal_point_symbolstringoptional

Optional.

skus.price_info.promotion_deduction_detailsobjectoptional

Optional.

skus.price_info.raw_origin_price_decimalstringoptional

Optional.

skus.price_info.raw_origin_price_formatstringoptional

Optional.

Always included.

skus.image.heightinteger

Always included.

≥ 0

skus.image.widthinteger

Always included.

≥ 0

skus.image.uristring

Always included.

skus.image.url_liststring[]

Always included.

Always included.

skus.package.weightnumbernullable

Always included.

skus.package.lengthnumbernullable

Always included.

skus.package.widthnumbernullable

Always included.

skus.package.heightnumbernullable

Always included.

Selected delivery option: delivery_option, delivery_name, free_shipping, shipping_fee (price_val and currency), original_shipping_val, logistics_service_id, delivery_min_days and delivery_max_days. Fields the page masks are null.

logistic.delivery_optionintegernullable

Always included.

logistic.delivery_namestringnullable

Always included.

logistic.free_shippingbooleannullable

Always included.

Always included.

logistic.shipping_fee.price_valstring

Always included.

logistic.shipping_fee.currencystring

Always included.

logistic.original_shipping_valstringnullable

Always included.

logistic.logistics_service_idstringnullable

Always included.

logistic.delivery_min_daysintegernullable

Always included.

logistic.delivery_max_daysintegernullable

Always included.

Overall product rating and review count.

product_detail_review.product_ratingnumbernullable

Always included.

product_detail_review.review_countintegernullable

Always included.

Embedded reviews block: has_more, total_reviews (string), product_reviews (same shape as the reviews endpoint) and review_ratings (review_count, overall_score, rating_result histogram keyed 1-5). Null with reviews_unavailable when the page omits it.

review_info.has_moreboolean

Always included.

review_info.total_reviewsstring

Always included.

Always included.

up to 10 items

review_info.product_reviews.review_idstring

Always included.

review_info.product_reviews.product_idstring

Always included.

review_info.product_reviews.sku_idstringoptional

Optional.

review_info.product_reviews.reviewer_idstringoptional

Optional.

review_info.product_reviews.review_ratinginteger

Always included.

1 – 5

review_info.product_reviews.review_timestring

Always included.

review_info.product_reviews.is_verified_purchaseboolean

Always included.

review_info.product_reviews.is_incentivized_reviewboolean

Always included.

review_info.product_reviews.product_namestringoptional

Optional.

review_info.product_reviews.reviewer_namestring

Always included.

review_info.product_reviews.reviewer_avatar_urlstringoptional

Optional.

absolute HTTPS URL

review_info.product_reviews.review_textstring

Always included.

review_info.product_reviews.display_image_urlstringoptional

Optional.

absolute HTTPS URL

review_info.product_reviews.review_imagesstring[]optional

Optional.

review_info.product_reviews.sku_specificationstringoptional

Optional.

review_info.product_reviews.review_countrystringoptional

Optional.

Always included.

review_info.review_ratings.review_countstring

Always included.

review_info.review_ratings.overall_scorenumber

Always included.

review_info.review_ratings.rating_resultobject

Always included.

The storefront's shop summary exactly as published: seller_id, sold_count, on_sell_product_count, review_count, global_seller_id, global_sold_count, followers_count and video_count (decimal strings), enable_follow, shop_name, shop_logo, shop_rating (string), shop_link, background, formatted counts (format_sold_count, format_followers_count, format_video_count, format_global_sold_count, display_on_sell_product_count), region, store_sub_score (type 1 positive feedback, 2 ships in 48h, 3 replies in 24h; score, score_percentage string), worst_rating, best_rating, creator_name, shop_identity_label (label_type and text, e.g. OFFICIAL SHOP), shop_slogan and desc (null when absent). Null when the document omits it.

shop_info.seller_idstring

Always included.

shop_info.sold_countinteger

Always included.

≥ 0

shop_info.on_sell_product_countinteger

Always included.

≥ 0

shop_info.review_countinteger

Always included.

≥ 0

shop_info.global_seller_idstring

Always included.

shop_info.global_sold_countstring

Always included.

shop_info.followers_countstring

Always included.

shop_info.video_countstring

Always included.

shop_info.enable_followboolean

Always included.

shop_info.shop_namestring

Always included.

Always included.

shop_info.shop_logo.heightinteger

Always included.

≥ 0

shop_info.shop_logo.widthinteger

Always included.

≥ 0

shop_info.shop_logo.uristring

Always included.

shop_info.shop_logo.url_liststring[]

Always included.

shop_info.shop_ratingstring

Always included.

shop_info.shop_linkstring

Always included.

absolute HTTPS URL

Always included.

shop_info.background.is_defaultboolean

Always included.

Always included.

shop_info.background.image.heightinteger

Always included.

≥ 0

shop_info.background.image.widthinteger

Always included.

≥ 0

shop_info.background.image.uristring

Always included.

shop_info.background.image.url_liststring[]

Always included.

shop_info.background.shop_background_typeinteger

Always included.

shop_info.format_sold_countstring

Always included.

shop_info.regionstring

Always included.

shop_info.display_on_sell_product_countstring

Always included.

shop_info.format_global_sold_countstring

Always included.

shop_info.format_followers_countstring

Always included.

shop_info.format_video_countstring

Always included.

Always included.

shop_info.store_sub_score.scorenumber

Always included.

shop_info.store_sub_score.typeinteger

Always included.

shop_info.store_sub_score.score_percentagestring

Always included.

shop_info.store_sub_score.high_light_tagintegeroptional

Optional.

shop_info.store_sub_score.platform_rate_typeintegeroptional

Optional.

shop_info.worst_ratingstringnullable

Always included.

shop_info.best_ratingstringnullable

Always included.

shop_info.creator_namestringnullable

Always included.

Always included.

shop_info.shop_identity_label.label_typeinteger

Always included.

shop_info.shop_identity_label.identity_label_textstring

Always included.

shop_info.shop_sloganstringnullable

Always included.

shop_info.descstringnullable

Always included.

The storefront's availability reason code (0 when purchasable), or null.

availability.reasoninteger

Always included.

Seller business name and address as published on the page, or null.

businessCompliance.business_namestring

Always included.

businessCompliance.business_addressstring

Always included.

HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.

Error codes
13
HTTPfailure.codeMeaning
400invalid_requestMissing, duplicate, ambiguous or unsupported parameters, unsupported URL forms, regions, sorts or cursors.
401unauthorizedInvalid API key.
404not_foundUnknown or removed product, or a store the storefront does not serve.
429upstream_rate_limitedTikTok Shop rate limited the request.
502upstream_challengedTikTok Shop answered its Security Check page, an HTTP 401/403, or refused the session's feed call (status challenged).
502unsafe_redirectTikTok Shop redirected outside the requested product or store (for example to a regional storefront or the login page).
502unsupported_pageLayout, identity or feed-envelope checks failed, or a non-HTML document was served.
502response_too_largeThe upstream response exceeded 4 MiB.
502payload_too_complexThe embedded JSON exceeded parsing limits.
502request_limitThe upstream call budget was exhausted.
502upstream_errorNetwork failure, an unexpected upstream status after one retry, or an unexpected feed code.
503busyAll retrieval slots are occupied.
504timeoutThe 40-second deadline elapsed.