TikTok Shop Scraper — Products, Prices & Reviews avatar

TikTok Shop Scraper — Products, Prices & Reviews

Pricing

from $5.00 / 1,000 product founds

Go to Apify Store
TikTok Shop Scraper — Products, Prices & Reviews

TikTok Shop Scraper — Products, Prices & Reviews

Scrape TikTok Shop from a search keyword, product URL, shop URL or category slug, with the input type auto-detected. Returns price, variants, seller, sold count, ratings and reviews.

Pricing

from $5.00 / 1,000 product founds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

32

Total users

4

Monthly active users

16 days ago

Last modified

Share

What is TikTok Shop Scraper — Products, Prices & Reviews?

TikTok Shop Scraper turns TikTok Shop product page URLs into a dataset of product records with the live rendered price, currency, product title, seller shop name, shop ID, shop URL and shop rating, plus sold count, images, variants and category path whenever the product page shows them. Optional review rows add reviewer rating, review text, date and photos. E-commerce analysts, brand teams, affiliate marketers and AI agents use it to monitor TikTok Shop prices and sellers for a known list of products.

Why sellers and analysts use this TikTok Shop scraper

  • The real price, not the masked one. TikTok Shop renders prices in the browser; the Actor waits for the page to finish rendering and saves the actual price and currency.
  • Seller context on every row. shopId, shopName, shopUrl and shopRating sit beside each product for seller comparisons.
  • Reviews on demand. Set includeReviews to add review rows with reviewRating, reviewText, reviewDate and reviewMediaUrls, capped by maxReviewsPerProduct.
  • One dataset, typed rows. A _type field marks each row as product or review, so filters stay simple.
  • Honest field coverage. Fields the page leaves out come back as null with a _warnings note, so a missing value is never mistaken for zero.

Best fit for this Actor

  • Designed for a known list of TikTok Shop product URLs, such as shop.tiktok.com/view/product/<id> pages from the US storefront.
  • Use it on a schedule to track price and seller changes on the same products over time.
  • To discover the creators who promote a product before you track it, start with TikTok Shop Creators Scraper - Showcase Leads.
  • To compare the same product's price on other retailers, then pass the product titles to Google Shopping Scraper — Prices, Sellers & Deals.

What people and AI agents ask this Actor to do

What is the current price and seller for this TikTok Shop product? Track these twenty TikTok Shop products every morning. Pull the latest reviews for this product so I can summarize complaints.

RequestInput to send
Price and seller for one product{"productUrls": ["https://shop.tiktok.com/view/product/1731936406579351560"]}
Daily price trackingThe same productUrls list on a daily schedule
Product plus recent reviews{"productUrls": ["..."], "includeReviews": true, "maxReviewsPerProduct": 30}

Example workflow: from a product list to a price tracker

A brand protection analyst starts with the TikTok Shop URLs of twenty listings that resell her company's products. She schedules the Actor daily with those URLs in productUrls. Each run returns one row per product with price, currency, shopName and shopRating. She exports the rows to a sheet, compares today's price with yesterday's for each productId, and flags any seller that drops below the agreed minimum price. Once a week she turns on includeReviews and feeds the review text into an LLM summary of buyer complaints.

Input

{
"productUrls": [
"https://shop.tiktok.com/view/product/1731936406579351560"
],
"includeReviews": false,
"maxReviewsPerProduct": 30,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}
FieldTypeWhat it controls
productUrlsarrayTikTok Shop product page URLs, such as shop.tiktok.com/view/product/<id>
includeReviewsbooleanAdd review rows for each product. Default false
maxReviewsPerProductintegerReview cap per product, newest first. Default 30
proxyConfigurationobjectApify Proxy settings; Residential US by default

Output

Product rows have _type set to product. Review rows have _type set to review.

FieldWhat it contains
productId, productUrl, titleProduct identity
price, currency, originalPrice, discountPercentRendered price and any discount shown
soldCount, rating, reviewCountSales and rating signals when the page shows them
images, videos, variants, categoryPath, descriptionMedia, SKU variants and category when the page shows them
shopId, shopName, shopUrl, shopRatingSeller shop details
shopFollowerCount, shopProductCount, shippingFrom, freeShipping, estimatedDeliveryDaysShop and shipping details when available
reviewId, reviewerName, reviewRating, reviewText, reviewDate, reviewMediaUrlsReview rows (with includeReviews)
sourceMode, scrapedAt, _warningsProvenance, collection time and field notes
{
"_type": "product",
"productId": "1731936406579351560",
"productUrl": "https://shop.tiktok.com/view/product/1731936406579351560",
"title": "POP MART SKULLPANDA × Wednesday Plush(Nevermore Academy Uniform Version)",
"description": null,
"price": 74.09,
"originalPrice": null,
"discountPercent": null,
"currency": "USD",
"soldCount": null,
"rating": null,
"reviewCount": null,
"images": [],
"videos": [],
"variants": [],
"categoryPath": [],
"shopId": "7495316114727995400",
"shopName": "POPMART US SHOP",
"shopUrl": "https://www.tiktok.com/shop/store/7495316114727995400",
"shopRating": 4.8,
"shopFollowerCount": null,
"shopProductCount": null,
"shippingFrom": null,
"freeShipping": null,
"estimatedDeliveryDays": null,
"scrapedAt": "2026-10-01T01:36:51.432Z",
"sourceMode": "product",
"_warnings": []
}

Review rows carry the review fields listed in the table above.

Pricing

This Actor uses Pay per event plus Apify platform usage. Each run charges one Actor Start event, one Product found event per product row, and one Review extracted event per review row when includeReviews is on. Platform usage for the browser and residential proxy is billed on top at Apify's standard rates. The live Pricing tab on this page shows the current event prices.

Worked example: ten product URLs with reviews off cost ten Product found events plus one Actor Start event and the run's platform usage. The same ten products with maxReviewsPerProduct at 30 add one Review extracted event per saved review, up to 30 per product. Set a maximum charge per run in the run options to cap spend.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~tiktok-shop-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"productUrls": ["https://shop.tiktok.com/view/product/1731936406579351560"]}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/tiktok-shop-scraper").call(run_input={
"productUrls": ["https://shop.tiktok.com/view/product/1731936406579351560"],
"includeReviews": True,
"maxReviewsPerProduct": 10,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row["_type"] == "product":
print(row["title"], row["price"], row["currency"], row["shopName"])

Use with AI agents (MCP)

Connect the Actor through Apify MCP in Claude, ChatGPT or Cursor and ask:

Check the current price and seller for these three TikTok Shop product links and tell me which seller has the highest shop rating.

The agent passes the links in productUrls, reads the rows back with get-dataset-items, and keeps rows where _type is product. It should quote productUrl and scrapedAt as provenance and treat null fields as "not shown on the page". Reviews add one event per review row, so agents should turn on includeReviews only when the question needs review text and keep maxReviewsPerProduct small to control cost.

Best results

Starting situationHelpful actionExpected outcome
A product you see in the TikTok appShare it, copy the link, and paste the shop.tiktok.com/view/product/<id> URLOne clean product row
Price monitoringSchedule the same productUrls list and compare by productIdA daily price history
Review analysisTurn on includeReviews with a small maxReviewsPerProduct firstRecent reviews at a known cost
A field comes back nullRead _warnings on that rowA clear note on what the page omitted
Large product listsSplit them into several scheduled runsSteady, predictable runs

Builder's note

I designed this Actor around a full browser render because TikTok Shop masks prices in the first HTML response and fills them in with JavaScript, so a plain HTTP request would save placeholder prices. I chose to keep product URLs as the input so every row maps to one exact listing, which makes daily price comparisons by productId reliable.

FAQ

Which storefront does it cover?

It is tuned for the US TikTok Shop storefront and uses a Residential US proxy by default.

How do I get a product URL?

Open the product in TikTok, tap Share, copy the link, and open it once in a browser to get the full shop.tiktok.com product address.

Why are some fields null?

TikTok Shop shows different details on different listings. The Actor keeps every field in the row and sets it to null when the page leaves it out, with a note in _warnings.

Responsible use

This Actor reads publicly visible TikTok Shop product pages. Reviews can include buyer names, which are personal data under laws such as the GDPR and CCPA; collect and use them only with a lawful basis and respect TikTok's terms of service. TikTok is a trademark of its owner, and this independent Actor is not affiliated with it. For questions, open a ticket in the Issues tab.