# TikTok Shop (/docs/tiktokshop) TikTok Shop product search, listing detail, product reviews, whole-shop catalogues, and creator showcases TikTok Shop is TikTok's commerce surface. These endpoints return product, review and seller data without touching the social graph, so they stay separate from the [TikTok social API](/docs/tiktok.md). Base URL: `/v1/tiktokshop/...` Every endpoint is 1 credit. Listings are addressed by their TikTok Shop `url` or by `product_id`, and every list endpoint returns a `product_id` you can carry straight into `product` and `product/reviews` without re-resolving a URL. Region coverage differs per endpoint. `user/showcase` accepts `region=US` only. `product` accepts US, GB, ID, MY, TH, SG, VN and PH. Any other value on those calls returns a `400` before billing, at 0 credits. ## Quickstart ### Search for products `search` is the entry point when you have nothing but a keyword, and it accepts the full region list. ```bash title="cURL" curl "https://www.socialcrawl.dev/v1/tiktokshop/search?query=phone%20case®ion=US" \ -H "x-api-key: YOUR_API_KEY" ``` ### Read a listing and its reviews Both take either the listing URL or the `product_id` a list endpoint already gave you, so there is no need to re-resolve. ```bash title="cURL" curl "https://www.socialcrawl.dev/v1/tiktokshop/product?url=https://www.tiktok.com/shop/pdp/PRODUCT" \ -H "x-api-key: YOUR_API_KEY" curl "https://www.socialcrawl.dev/v1/tiktokshop/product/reviews?product_id=1729382476598" \ -H "x-api-key: YOUR_API_KEY" ``` ## Search | Endpoint | Credits | What it returns | Key parameters | | --------------------------- | ------- | ---------------------------------------------------- | ---------------------------------------------- | | `GET /v1/tiktokshop/search` | 1 | Matching products with price, rating and seller info | `query` (required), `cursor`, `page`, `region` | ## Products and reviews | Endpoint | Credits | What it returns | Key parameters | | ------------------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- | | `GET /v1/tiktokshop/product` | 1 | Full listing detail: description, price and discount, rating, review count, brand, specifications, stock, shipping and delivery, seller detail, images | `url` or `product_id` (one required), `region` | | `GET /v1/tiktokshop/product/reviews` | 1 | A listing's reviews with rating, text, author, buyer country and timestamp, plus the product's full review count in `data.total` | `url` or `product_id` (one required), `cursor`, `page`, `region` | ## Shops and creators | Endpoint | Credits | What it returns | Key parameters | | ---------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | `GET /v1/tiktokshop/products` | 1 | Everything one shop sells: title, cover images, URL, price, sold count, review count, rating, plus the shop's own name, rating, follower count and region | `url` (required), `cursor`, `sort_by`, `region` | | `GET /v1/tiktokshop/user/showcase` | 1 | The products a creator has pinned to their own showcase, as the same canonical product object `products` returns | `handle` (required), `cursor`, `region` | `sort_by` on `products` takes `top` (best-selling, the default) or `new_releases`. `user/showcase` is the endpoint that connects a creator to what they actually sell. ```bash title="cURL" curl "https://www.socialcrawl.dev/v1/tiktokshop/products?url=https://www.tiktok.com/shop/store/STORE&sort_by=top" \ -H "x-api-key: YOUR_API_KEY" curl "https://www.socialcrawl.dev/v1/tiktokshop/user/showcase?handle=charlidamelio®ion=US" \ -H "x-api-key: YOUR_API_KEY" ``` ## Regions `search`, `products` and `product/reviews` accept the same sixteen two-letter codes: `US`, `GB`, `DE`, `FR`, `IT`, `ID`, `MY`, `MX`, `PH`, `SG`, `ES`, `TH`, `VN`, `BR`, `JP` and `IE`. Use `GB` for the United Kingdom, not `UK`. Any other value is rejected with a `400` before billing, naming the codes that are accepted. A shop is only reachable from its own market, so a GB storefront needs `region=GB` on `products`; asking for it as `US` returns a `404`. `product` accepts `US`, `GB`, `ID`, `MY`, `TH`, `SG`, `VN` and `PH`. `user/showcase` still accepts `US` only. To work with a listing in a market `product` does not serve, find it with `search` scoped by `region` and read its reviews with `product/reviews` by `product_id`. ## All endpoints ## Platform notes **Product lookups now resolve in GB, ID, MY, TH, SG, VN and PH as well as US.** Other regions on `product` return a `400` before billing. A showcase is still served from the US only: a showcase whose products are listed only outside the US can return an empty list at 0 credits, and any region other than `US` on `user/showcase` is a `400` before billing. **Every list endpoint paginates.** All four take the universal `cursor`: pass back `pagination.next_cursor` until `has_more` is false. `products` and `product/reviews` used to stop after one page, so a walk that predates 07/09/2026 will now keep going and reach the whole catalogue or the whole review corpus. Two of them also report the corpus size up front: `data.total` on `products` is the shop's on-sale product count, and on `product/reviews` it is the product's full review count. Reaching the end of a review walk returns a `404` at 0 credits, which is the normal terminator, not an error. **A handle TikTok does not have returns a `404`, at 0 credits.** `user/showcase` used to answer an empty list, which was impossible to tell apart from a creator who promotes nothing. A creator who exists but promotes nothing still returns `200` with an empty list. **`search` and `user/showcase` return the same product object `products` does.** Before 07/09/2026 `search` returned the raw upstream row. Before 10/09/2026 `user/showcase` returned each product as a post, so likes and views were null. If you integrated against either old shape, read the [changelog](/changelog) before upgrading. Search-only signals (seller trust label, shipping origin, promotion badges, category breadcrumb, demo video) live under `product.ext.tiktokshop`. Showcase stamps the handle you asked for on `product.ext.tiktokshop.creator_handle`. **The legacy paths still resolve.** `/v1/tiktok/shop/*` and `/v1/tiktok/user/showcase` continue to work for backward compatibility, but new integrations should use `/v1/tiktokshop/...`. ## Next steps - [Pagination](/docs/pagination.md): The universal cursor, and which endpoints here use it. - [Credits](/docs/credits.md): What each tier costs, and which failures are refunded. - [API reference](/docs/api-reference.md): Every TikTok Shop parameter and response field. - [TikTok](/docs/tiktok.md): The social side: profiles, videos, comments and search. - [Amazon](/docs/amazon.md): Product, review and competing seller data for amazon.com.