TikTok Shop · products
Search products from TikTok Shops bound to the connected marketing or official account. GET /api/v1/tiktok-shop/products accepts your x-api-key header. TikTok Shop Affiliate Creator API access requires provider activation, creator authorization, and applicable app review. Paid-use and retention clearance and live validation are outstanding. This owner-authorized route reads only an account connected by the caller; it does not perform arbitrary public lookup.
Request parameters
Search products from TikTok Shops bound to the connected marketing or official account. This owner-authorized API does not search arbitrary shops or creators.
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | Yes | TikTok username; must match the connected marketing or official account. |
region | string | No | Optional selection-region check against the connected account. |
query | string | Yes | Product title keyword. Mapped to TikTok Shop title_keyword. |
page | integer | No | The reference page parameter is accepted as 1 only; use cursor for native continuation pages. Default: 1. Range: 1–1. |
page_size | integer | No | Page size accepted by the official Get Shop Products API. Default: 20. Range: 1–20. |
sort_field | string | No | Optional TikTok Shop sort field. Allowed: PRODUCT_ID, PRICE, SALE. |
sort_order | string | No | Optional TikTok Shop sort order. Allowed: ASC, DESC. |
cursor | string | No | Opaque next_page_token from the previous TikTok Shop products page. |
freshness | string | No | 24h (default), 1h, 7d, or live. Accepted cache hits are free; live forces refresh except simultaneous requests may share newly fetched data. |
Code examples
Set SIGNALSHELF_BASE_URL and SIGNALSHELF_API_KEY on your server.
curl "$SIGNALSHELF_BASE_URL/api/v1/tiktok-shop/products?handle=handle&query=query" \
-H "x-api-key: $SIGNALSHELF_API_KEY"const response = await fetch(process.env.SIGNALSHELF_BASE_URL + "/api/v1/tiktok-shop/products?handle=handle&query=query", {
headers: { 'x-api-key': process.env.SIGNALSHELF_API_KEY },
});
const body = await response.json();
if (!response.ok) throw new Error(body.error.message);
console.log(body.data, body.meta);import os, requests
response = requests.get(
os.environ['SIGNALSHELF_BASE_URL'] + "/api/v1/tiktok-shop/products?handle=handle&query=query",
headers={'x-api-key': os.environ['SIGNALSHELF_API_KEY']},
timeout=30,
)
response.raise_for_status()
print(response.json())Response and pagination
Showcase responses include data.products and an opaque next_page_token. Shop Product Search is limited to products from shops bound to the connected marketing or official account.
This requires the exact connected TikTok Shop account and authorized scopes. Arbitrary creator and shop searches are unavailable; pass the source cursor unchanged when continuing a supported list.
The response contains data and meta. data includes platform, resource, sample:false, provider, and the public source payload. Lists return data.items; individual resources return data.data.
Shop lists use the provider next_page_token as an opaque cursor; no cursor is returned for Profile Region.
meta includes event_id, mode, cache, credits_charged, fetched_at, age_seconds, and duration_ms. A fresh successful result costs one credit; accepted cached results and failures cost zero.
Availability and failures
Implementation is not a continuous availability guarantee. Source rate limits, retention, deleted content, restrictions, and regional availability apply. This is an independent SignalShelf contract, not a drop-in competitor response format.
400: invalid parameters. 401: missing/revoked key. 402: insufficient credits. 404: missing public resource. 429: SignalShelf throttle. 502/503: upstream failure or rate limit, with credit restored.