TikTok Shop Store Products
tiktok.shop.products
List the products in a US TikTok Shop store, with price, discount, rating and units sold.
At a glance
- Endpoint ID
tiktok.shop.products- Price
- 0.75 credits per call; failed calls are free
- Runs for up to
- 45 seconds
Request
Send the endpoint ID as capability and its fields as input. Set UPSCRAPE_API_KEY to your key first.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "tiktok.shop.products", "input": { "url": "https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "tiktok.shop.products", "input": { "url": "https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "tiktok.shop.products", "input": { "url": "https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
Input
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
url |
string | yes | The store's TikTok Shop link. | https://www.tiktok.com/shop/store/goli-nutritio… |
cursor |
string | no | Pass cursor from the last response, with the same store, to get the next page. | |
region |
string | no | The Shop region. US is supported. | US |
Response
A finished call answers with HTTP 200; the data is in results[0].data, and billing.credits_charged is what it cost. A call still running after the wait answers 202: see jobs and results.
This is results[0].data from a real run:
{ "has_more": true, "result_count": 20, "products": [ { "title": "Goli Ashwagandha & Vitamin D Gummy - Mixed Berry, KSM-66, Vegan, Plant Based, Non-GMO, Gluten-Free & Gelatin Free. America's #1 Ashwagandha…", "sale_price": "19.47", "rating": 4.5, "review_count": "94408", "currency": "USD", "discount": "21%", "original_price": "24.7", "product_id": "1729527313880355335", "shop_name": "Goli Nutrition", "sold_count": 1303982, "url": "https://shop.tiktok.com/us/pdp/ashwagandha-gummies-by-goli-ksm-66-mixed-berry-vegan-non-gmo/1729527313880355335" }, { "title": "Goli Zero Sugar Best Seller Trio – Daily Gut & Wellness Support with Pre, Post & Probiotics, Apple Cider Vinegar, Ashwagandha & L-Theanine …", "sale_price": "49.37", "rating": 4.5, "review_count": "48548", "currency": "USD", "discount": "33%", "original_price": "74.1", "product_id": "1731194857673101831", "shop_name": "Goli Nutrition", "sold_count": 1031219, "url": "https://shop.tiktok.com/us/pdp/zero-sugar-best-seller-trio-goli-ashwagandha-gummies-vegan-non-gmo/1731194857673101831" } ]}
Fields
| Field | Type | What it is | Example |
|---|---|---|---|
products[].title |
string | The product's title. | Goli Ashwagandha & Vitamin D Gummy - Mixed Berry, KSM-66, Vegan… |
products[].sale_price |
string | The price the product sells for now, in the currency shown. | 19.47 |
products[].original_price |
string | The price before the discount, when there is one. | 24.7 |
products[].discount |
string | The discount TikTok Shop shows, when there is one. | 21% |
products[].rating |
number | The product's average star rating. | 4.5 |
products[].review_count |
string | How many reviews the product has. | 94408 |
products[].sold_count |
integer | How many units TikTok Shop shows as sold. | 1,303,982 |
products[].currency |
string | The currency of the prices. | USD |
products[].product_id |
string | TikTok Shop's ID for the product. | 1729527313880355335 |
products[].shop_name |
string | The shop that sells it. | Goli Nutrition |
products[].url |
string | The product's page on TikTok Shop. | https://shop.tiktok.com/us/pdp/ashwagandha-gummies-by-goli-ksm-… |
has_more |
boolean | Whether more products are available. | true |
products |
array | The shop's products. | 20 records |
result_count |
integer | How many results this answer holds. | 20 |
If a call fails
A failed call costs nothing. The response carries an error.code you can branch on; Errors and retries lists every code and which ones to retry.
Other TikTok endpoints
tiktok.collection.videosCollection videostiktok.comment.repliesComment repliestiktok.feed.trendingTrending feedtiktok.hashtag.postsHashtag videostiktok.live.getLive room detailtiktok.music.infoSong detailtiktok.music.postsSong videostiktok.post.getVideo detailtiktok.profile.getUser profile detailtiktok.search.suggestionsSuggestions searchtiktok.shop.product.getShop product detailtiktok.shop.reviewsShop product reviewstiktok.shop.searchShop product searchtiktok.user.followersUser followerstiktok.user.followingUser followingtiktok.user.liveUser live statustiktok.user.videosUser videostiktok.video.commentsVideo commentstiktok.video.transcriptVideo transcript
Something missing or unclear? Ask the team that builds the TikTok endpoints.