Skip to content
scrapeatlas.Dashboard

List a TikTok Shop store's products

Try in Playground

Read one page of a store's public product grid: the shop summary and twenty product cards in the storefront's order, continued with the caller-carried cursor.

GET/v1/tiktok/shop/productsx-api-key
x-api-keystringrequiredheader

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

Query parameters
5
seller_idstringquery

Store (seller) ID; provide either seller_id or url.

urlstringquery

Public store URL: https://www.tiktok.com/shop/store/{slug}/{seller_id} or https://shop.tiktok.com/us/store/{slug}/{seller_id}.

max 2048 chars

Examplehttps://www.tiktok.com/shop/store/example-wellness/7400000000000000001
cursorstringquery

Opaque continuation token from a previous response; omit for the first page.

sort_byenumdefault: "top"query

top, the storefront's ordering.

one of: top · default: "top"

regionenumdefault: "US"query

Storefront region, US (default).

one of: US · default: "US"

Response fields
112
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.

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.

shopInfo.seller_idstring

Always included.

shopInfo.sold_countinteger

Always included.

≥ 0

shopInfo.on_sell_product_countinteger

Always included.

≥ 0

shopInfo.review_countinteger

Always included.

≥ 0

shopInfo.global_seller_idstring

Always included.

shopInfo.global_sold_countstring

Always included.

shopInfo.followers_countstring

Always included.

shopInfo.video_countstring

Always included.

shopInfo.enable_followboolean

Always included.

shopInfo.shop_namestring

Always included.

Always included.

shopInfo.shop_logo.heightinteger

Always included.

≥ 0

shopInfo.shop_logo.widthinteger

Always included.

≥ 0

shopInfo.shop_logo.uristring

Always included.

shopInfo.shop_logo.url_liststring[]

Always included.

shopInfo.shop_ratingstring

Always included.

shopInfo.shop_linkstring

Always included.

absolute HTTPS URL

Always included.

shopInfo.background.is_defaultboolean

Always included.

Always included.

shopInfo.background.image.heightinteger

Always included.

≥ 0

shopInfo.background.image.widthinteger

Always included.

≥ 0

shopInfo.background.image.uristring

Always included.

shopInfo.background.image.url_liststring[]

Always included.

shopInfo.background.shop_background_typeinteger

Always included.

shopInfo.format_sold_countstring

Always included.

shopInfo.regionstring

Always included.

shopInfo.display_on_sell_product_countstring

Always included.

shopInfo.format_global_sold_countstring

Always included.

shopInfo.format_followers_countstring

Always included.

shopInfo.format_video_countstring

Always included.

Always included.

shopInfo.store_sub_score.scorenumber

Always included.

shopInfo.store_sub_score.typeinteger

Always included.

shopInfo.store_sub_score.score_percentagestring

Always included.

shopInfo.store_sub_score.high_light_tagintegeroptional

Optional.

shopInfo.store_sub_score.platform_rate_typeintegeroptional

Optional.

shopInfo.worst_ratingstringnullable

Always included.

shopInfo.best_ratingstringnullable

Always included.

shopInfo.creator_namestringnullable

Always included.

Always included.

shopInfo.shop_identity_label.label_typeinteger

Always included.

shopInfo.shop_identity_label.identity_label_textstring

Always included.

shopInfo.shop_sloganstringnullable

Always included.

shopInfo.descstringnullable

Always included.

Always included.

up to 20 items

products.product_idstring

Always included.

products.titlestring

Always included.

Always included.

products.image.heightinteger

Always included.

≥ 0

products.image.widthinteger

Always included.

≥ 0

products.image.uristring

Always included.

products.image.url_liststring[]

Always included.

Always included.

products.product_price_info.sku_idstringoptional

Optional.

products.product_price_info.symbol_positionintegeroptional

Optional.

products.product_price_info.show_currency_spacebooleanoptional

Optional.

products.product_price_info.currency_show_modeintegeroptional

Optional.

products.product_price_info.currency_namestring

Always included.

products.product_price_info.currency_symbolstring

Always included.

products.product_price_info.sale_price_decimalstring

Always included.

products.product_price_info.origin_price_decimalstringoptional

Optional.

products.product_price_info.sale_price_formatstring

Always included.

products.product_price_info.origin_price_formatstringoptional

Optional.

products.product_price_info.discount_formatstringoptional

Optional.

products.product_price_info.discount_decimalstringoptional

Optional.

products.product_price_info.reduce_price_formatstringoptional

Optional.

products.product_price_info.single_product_price_formatstringoptional

Optional.

products.product_price_info.single_product_price_decimalstringoptional

Optional.

products.product_price_info.sale_price_integer_part_formatstringoptional

Optional.

products.product_price_info.sale_price_decimal_part_formatstringoptional

Optional.

products.product_price_info.decimal_point_symbolstringoptional

Optional.

products.product_price_info.promotion_deduction_detailsobjectoptional

Optional.

products.product_price_info.raw_origin_price_decimalstringoptional

Optional.

products.product_price_info.raw_origin_price_formatstringoptional

Optional.

Always included.

products.rate_info.scorenumber

Always included.

products.rate_info.review_countstring | integer

Always included.

Always included.

products.sold_info.sold_countinteger

Always included.

≥ 0

Always included.

products.seller_info.seller_idstring

Always included.

products.seller_info.shop_namestringoptional

Optional.

Optional.

products.seller_info.shop_logo.heightinteger

Always included.

≥ 0

products.seller_info.shop_logo.widthinteger

Always included.

≥ 0

products.seller_info.shop_logo.uristring

Always included.

products.seller_info.shop_logo.url_liststring[]

Always included.

Always included.

products.seo_url.updated_atstringnullable

Always included.

products.seo_url.canonical_urlstring

Always included.

absolute HTTPS URL

products.seo_url.slugstring

Always included.

products.seo_url.typeinteger

Always included.

products.seo_url.versioninteger

Always included.

Optional.

products.brand_info.brand_namestring

Always included.

has_moreboolean

Whether the storefront reports more cards after this page.

cursorstringnullable

Opaque continuation token from a previous response; omit for the first page.

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.