Switching from Tiktok Shop Scraper to TikTok Shop Scraper
TikTok Shop Scraper (arcadium/tiktok-shop-products) reads input written for pratikdani/tiktok-shop-scraper: 2 of its 2 input fields work as they are. Field list from its public input schema (build 0.1.38, 2026-10-31); prices and run results from the public Apify API, 2026-11-02.
Their fields that work as they are
| Their field | Type | Note |
|---|---|---|
url | string | As is |
region | string | US or GB. |
Side by side: their input, our rows
Input written for pratikdani/tiktok-shop-scraper, pasted unchanged:
{
"url": "https://shop.tiktok.com/view/product/1732417183133045688",
"region": "GB"
}One row from arcadium/tiktok-shop-products (README example; long text shortened):
{
"rowType": "product",
"platform": "tiktok-shop",
"productId": "1729397565453996295",
"detailLevel": "full",
"region": "US",
"url": "https://shop.tiktok.com/us/pdp/tongue-scraper-2-pack-by-gurunanda-u-shaped-stainless-steel-with-case/1729397565453996295",
"title": "GuruNanda Tongue Scraper (2 Pack) with Travel Case, 420 Medical-grade Stainless Steel Tongue Cleaner",
"brand": "Gurunanda",
"currency": "USD",
"price": 19.49,
"priceText": "$19.49",
"soldCount": 54204,
"rating": 4.6,
"reviewCount": 3715,
"ratingCounts": {
"1": 134,
"2": 56,
"3": 175,
"4": 503,
"5": 2847
},
"categories": [
"Beauty & Personal Care",
"Nasal & Oral Care"
],
"promotions": [
"Free shipping"
],
"variants": [
{
"skuId": "1729397565454061831",
"options": {
"Specifications": "Default"
},
"price": 19.49,
"stock": 826,
"purchaseLimit": 200,
"available": true
}
],
"totalStock": 826,
"shipping": {
"freeShipping": true,
"fee": 0,
"originalFee": 5.99,
"deliveryMinDays": 4,
"deliveryMaxDays": 7,
"fulfilledByTikTok": true,
"shipFrom": "local"
},
"seller": {
"sellerId": "7495134783373216007",
"name": "GuruNanda LLC",
"rating": 4.5,
"soldCount": 6413926,
"productCount": 129,
"followers": 278606,
"badge": "OFFICIAL SHOP",
"businessName": "GuruNanda LLC"
},
"aiKeywords": [
"tongue scraper",
"stainless steel tongue cleaner"
],
"topReviews": [
{
"rating": 5,
"text": "It's really good; it removes all the dirt, I give it a 10/10.",
"createdAt": "2026-07-24T21:15:52.471Z",
"variant": "Default",
"country": "US",
"verifiedPurchase": true,
"incentivized": false,
"imageCount": 6
}
],
"source": "product",
"scrapedAt": "2026-10-22T10:34:19.179Z"
}Output fields: rowType, platform, productId, detailLevel, region, url, title, description, brand, currency, price, maxPrice, originalPrice, discountPercent, priceText, soldCount, rating, reviewCount, ratingCounts, categories, categoryId, promotions, images, hasVideo, videoDurationSec, specifications, variants, totalStock, inStock, shipping, seller, aiTitle, aiKeywords, topReviews, source, input, sourceRank, scrapedAt, code, message. The rows use these names, not the other actor’s.
Price
| Actor | Pricing model | Charged per | Per 1,000, Free plan | Per 1,000, lowest plan |
|---|---|---|---|---|
| arcadium/tiktok-shop-products | Pay per event | Product | $22.50 | $13.50 |
| pratikdani/tiktok-shop-scraper | Pay per event | result | $25.00 | $15.00 |
Live Apify prices on 2026-11-02, in USD, for each actor’s main charged event. Start fees and platform usage are not included. Units differ: compare what one charged row contains. The Store page of each actor is the current source.
Common issues: failed or timed-out runs
| Actor | Runs, last 30 days | Failed | Timed out |
|---|---|---|---|
| arcadium/tiktok-shop-products | under 50 runs | - | - |
| pratikdani/tiktok-shop-scraper | 3,790 | 0.0% | 0.0% |
Apify’s public run statistics for each actor, last 30 days to 2026-11-02: FAILED and TIMED-OUT runs as a share of all runs. Shown from 50 runs. A failed run can also come from a bad input. Here an input that cannot be read comes back as a free error row with a code, and the other inputs still arrive.
How to switch
In the Apify Store
- Open arcadium/tiktok-shop-products and sign in to Apify.
- On the Input tab, switch the editor to JSON and paste the input you used for pratikdani/tiktok-shop-scraper.
- Start the run. Set a maximum cost per run in the run options if you want a hard cap.
Over the API
Change the actor ID in the URL from pratikdani~tiktok-shop-scraper to arcadium~tiktok-shop-products; the body stays the same.
curl -X POST "https://api.apify.com/v2/acts/arcadium~tiktok-shop-products/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url":"https://shop.tiktok.com/view/product/1732417183133045688","region":"GB"}'
In n8n
In the Apify node, change the actor to arcadium/tiktok-shop-products and keep the input JSON. With an HTTP Request node:
{
"nodes": [
{
"name": "Run arcadium/tiktok-shop-products",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
0,
0
],
"parameters": {
"method": "POST",
"url": "https://api.apify.com/v2/acts/arcadium~tiktok-shop-products/run-sync-get-dataset-items",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"url\":\"https://shop.tiktok.com/view/product/1732417183133045688\",\"region\":\"GB\"}",
"options": {
"timeout": 300000
}
}
}
],
"connections": {}
}
From an AI assistant (MCP)
Add the actor as a tool on Apify’s MCP server; an agent can pass the same input fields.
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=arcadium/tiktok-shop-products",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}