TikTok Shop Product Scraper — Prices, Sales & Stock avatar

TikTok Shop Product Scraper — Prices, Sales & Stock

Pricing

from $3.00 / 1,000 product scrapeds

Go to Apify Store
TikTok Shop Product Scraper — Prices, Sales & Stock

TikTok Shop Product Scraper — Prices, Sales & Stock

Collect supported TikTok Shop product and search data with available price, sales and stock signals. Bulk export: JSON, CSV, Excel and API. PPE: $3/1K products; start fee, usage extra.

Pricing

from $3.00 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Apivault Labs

Apivault Labs

Maintained by Community

Actor stats

0

Bookmarked

61

Total users

12

Monthly active users

13 hours ago

Last modified

Share

TikTok Shop product intelligence hero

Export public TikTok Shop product details from product URLs or IDs into CSV, JSON or Excel. The verified mode collects observed prices, displayed sales, ratings, seller details and SKU stock when exposed. No TikTok login is required. Direct requests may use Apify residential proxies, whose usage is charged separately.

MCP and AI agents

Use this Actor to inspect public TikTok Shop products by ID or product URL. Use a separate small keyword run for discovery when needed.

Select apivault_labs/tiktok-shop-scraper in the Actor's API → MCP tab, or connect an authenticated MCP client to:

https://mcp.apify.com/?tools=apivault_labs/tiktok-shop-scraper

The direct tool is apivault_labs--tiktok-shop-scraper. Keep the Apify token in the client's secure authentication configuration. Public source data does not remove the requirement for Apify authentication and applicable run charges. Read tools/list before calling: wrapper fields can differ from the Actor input schema.

Small Actor input:

{
"productUrls": [
"1729587769570529799"
],
"maxResults": 1,
"country": "US",
"trackSalesVelocity": false,
"trending": false
}

Send this object as the direct tool's arguments. Its current wrapper also accepts waitSecs: 45. waitSecs controls how long the tool waits; it is not the Actor run timeout. If the run is still active, poll its returned run ID with get-actor-run; do not start a duplicate. Once terminal, use get-dataset-items with the returned dataset ID and a small limit/field selection, then get-key-value-store-record with the returned store ID and required record key. Missing IDs/records must be reported, not replaced with another run's storage.

Read product rows plus SUMMARY, FAILED_INPUTS, FAILED_PRODUCTS and, when present, FAILED_SOURCES/DISCOVERY. A missing optional record can mean that branch was not used; it does not prove source health. PARTIAL retains useful rows but does not establish full coverage. Keyword discovery exposes only the initial public feed, without pagination. It is not an official best-seller ranking. Prices can be masked; sold counts can be rounded. Never report GMV estimates as audited revenue or US observations as verified other-market coverage.

Agent request: “Inspect this one TikTok Shop product in the US. Return observed price, sold count and source URL, and flag missing data without inventing it.”

Keep the first run small. Increase limits only for the requested scope, check current Pricing and cap runtime/spend using controls actually supported by your run client. Distinguish source errors, filtered emptiness and partial delivery; a completed tool call alone does not establish successful data collection.

First product export

Paste a product URL or ID, leave snapshot comparison off for your first run, click Start, then open the Products dataset view. The example collects one product:

{"productUrls":["1729587769570529799"],"maxResults":1,"country":"US","trackSalesVelocity":false}

One successful product costs $0.003 in result events plus the $0.00005 start fee and platform/proxy usage. Empty placeholders and failed products are diagnostics, not paid dataset rows. Prices and sold counts are observations at collection time; they can change between runs.

Use Products for research and Inventory & logistics for SKU/stock fields. requestedCountry records the requested URL/proxy region; it does not certify that TikTok returned complete coverage of that market. US product collection was live-tested; other regions require validation with products available there.

The public best-sellers ranking source was unavailable in our October 4 check. Its experimental input is retained for compatibility, but unavailable ranking now fails with diagnostics. Keyword search now exports only the initial public main feed, without pagination. Full category discovery, reviews and shop-wide product crawling are not implemented.

TikTok Shop availability, prices, rankings and fields vary by region and time. Sold counts can be rounded or lower-bound buckets. gmvEstimate is a directional point-in-time calculation—not audited revenue.

What you get

  • Product title, description, images, seller and public shop metadata
  • Current price and original price when the public page exposes them; otherwise priceMasked: true
  • Displayed sold count, rating and review count
  • Variants/SKUs, option values, displayed stock, package and shipping fields when available
  • Experimental public ranking input, with explicit unavailable-source diagnostics
  • Stable productId, recordType, sourceMode, productUrl, and UTC collectedAt
  • Clearly labeled GMV and resale-scenario calculations with method and caveat fields
  • Free SUMMARY, FAILED_INPUTS, and FAILED_PRODUCTS diagnostics in the run key-value store

Input examples

Specific products:

{
"productUrls": [
"https://shop.tiktok.com/view/product/1729587769570529799",
"1729587769570529799"
],
"maxResults": 25,
"exactPrice": true,
"trackSalesVelocity": true,
"country": "US"
}

Experimental ranking (not a verified ready-to-run example):

{
"trending": true,
"trendingLimit": 20,
"maxResults": 20,
"country": "US"
}

Duplicate product IDs are processed once. Only HTTPS TikTok Shop product URLs and bare numeric product IDs are accepted. The hard run-wide maxResults cap applies across product and ranking results.

Output example

{
"recordType": "product",
"sourceMode": "product_detail",
"productId": "1729587769570529799",
"productUrl": "https://shop.tiktok.com/view/product/1729587769570529799",
"title": "Example product title",
"price": 44.98,
"currency": "USD",
"priceMasked": false,
"soldCount": 863000,
"rating": 4.7,
"reviewCount": 71000,
"variantCount": 1,
"gmvEstimate": 38817740,
"gmvEstimateMethod": "observed_current_price_x_displayed_sold_count",
"gmvEstimateConfidence": "directional",
"collectedAt": "2026-08-27T14:00:00Z"
}

The example is illustrative. Fields may be null or absent when the source does not expose them. GMV uses the observed current price multiplied by the displayed sold count and does not account for variant mix, refunds, promotions, taxes, or historical prices.

Sales snapshot comparison

With trackSalesVelocity: true, select a persistent store using salesSnapshotStoreId, or use the Actor-created named store. A first run records a baseline. A later run can calculate displayed sold-count change per day after at least 30 minutes. Store failures stop the run instead of silently dropping state. Non-US snapshots are separated by requested country. Because source counters may be rounded or bucketed, treat this as a directional observation rather than an exact live-sales feed.

Pricing

  • $0.003 per successful Dataset row ($3 per 1,000 results)
  • $0.00005 Actor-start fee
  • Invalid inputs and failed products are not written to the Dataset, so they do not create result charges

Set maxResults to control the maximum number of paid result rows.

Responsible use

Use the Actor only for public data and in accordance with applicable laws, platform terms, and your organization's policies. Do not use the output for harassment, discriminatory profiling, deception, or automated high-impact decisions. Verify important commercial decisions independently.

TikTok and TikTok Shop are trademarks of their respective owner. This independent Actor is not affiliated with, endorsed by, or sponsored by TikTok.

Keyword discovery (2.9)

{"keywords":["wireless earbuds"],"productUrls":[],"maxResults":10,"country":"US","maxRetries":1,"timeout":25}

The Actor reads the main search feed from native HTTP HTML, excluding featured shops and recommended-product blocks. No TikTok API key or login is required. US residential proxy usage is charged separately. This is the initial public feed only, typically up to 25 cards in our source checks; pagination is not implemented. DISCOVERY diagnostics show hasMore and sourceRows. A short response is not proof of an exhaustive result set.

Listing cards provide product IDs, names, observed listing prices, displayed sold counts, ratings and seller fields. They do not guarantee full descriptions or SKU inventory; use productUrls in a separate run for details. Duplicate products across keywords are billed once and retain their first keyword attribution. maxResults caps the entire run. Mixed keyword/product runs prioritize discovery rows, so use separate runs when detailed SKU data is needed. Failed/blocked discovery yields diagnostics and no paid error row; successful cards remain available for partial runs.

The official public best-seller ranking URL is tried through native HTTP before the reader fallback. A keyword page titled best sellers is not substituted for a verified sales ranking. Source availability remains dependent on TikTok.

Use the TikTok Shop product scraper for a bounded shortlist of accessible product URLs or IDs. Merchants can review listed prices and variants, affiliates can inspect product-page context, and analysts can export observations for a competitor worksheet. It is not a seller account API, checkout service, audience database or audited sales report. The supported useful result is an observed product card, with optional fields determined by the public source.

Research questionInspectAvoid assuming
What is the displayed offer?price, originalPrice, currency, priceMaskedA masked price is the final checkout price
What variants are visible?skus, variantCount, totalStockEvery variant is available to every country
How is the product presented?title, description, images, specificationsImages establish ownership or exact manufacturing identity
What sales signals are shown?soldCount, salesCountNoteCumulative displayed counts are monthly orders
What would resale look like?cost/margin assumptions and profit notesAn estimate is audited profit, revenue or a guaranteed margin

Country is a request context, not proof that a source observation applies to that market. Availability, shipping and pricing can vary by destination or account. Preserve currency, sourceMode, sourceUrl and requestedCountry where present when joining records. Null, masked and rounded fields need separate handling in a spreadsheet.

One known TikTok Shop product

{
"productUrls": [
"https://shop.tiktok.com/view/product/1729587769570529799"
],
"country": "US",
"maxResults": 1,
"maxConcurrency": 1,
"maxRetries": 0
}

Start here to inspect a real product contract. The example URL is an existing public sample; continued availability is source-dependent, not guaranteed by the JSON schema.

A compact keyword discovery sample

{
"keywords": [
"wireless earbuds"
],
"country": "US",
"maxResults": 5,
"maxConcurrency": 1,
"maxRetries": 0
}

Only the initial public main feed is supported. This is neither an exhaustive product search nor the official best-seller ranking. A small initial feed cannot be extrapolated into market size.

Request price recovery for a known product

{
"productUrls": [
"https://shop.tiktok.com/view/product/1729587769570529799"
],
"maxResults": 1,
"exactPrice": true,
"maxRetries": 0
}

Price recovery is an attempt, not a guarantee of checkout equivalence. Keep priceMasked and the returned source notes when price remains unavailable.

Keep a dated sales observation

{
"productUrls": [
"https://shop.tiktok.com/view/product/1729587769570529799"
],
"maxResults": 1,
"trackSalesVelocity": true,
"country": "US",
"maxRetries": 0
}

A first observation establishes context. Velocity requires comparable saved observations over time; a single run cannot establish a sales trend. The optional snapshot store must belong to the caller and remain available for later use.

Product research without overstating coverage

The experimental trending input is retained for compatibility, but its ranking source was unavailable in the recorded check. Do not substitute keyword results for an official ranking. Keyword discovery does not implement cursor pagination; raising maxResults cannot create a second page. Full category discovery, product reviews and shop-wide catalogue collection are outside the supported release. A complete-looking CSV is not evidence that those sources were scanned.

For each export, record the input mode, country, collection date, result cap and any failed source records. Product IDs provide a useful within-run identity; different snapshots should remain separate observations in your own history. Changes in displayed cumulative sold counts can reflect rounding or source presentation, not only new orders. GMV and opportunity scores are directional calculations with explicit assumptions. They do not measure settled payments, returns, advertising costs or net profit.

Read SUMMARY and the available FAILED_INPUTS, FAILED_PRODUCTS and discovery diagnostics. A missing optional record can mean that branch was not used, rather than proving it passed. Successful products can coexist with failed inputs. Preserve partial-state notes in downstream CRM or inventory research instead of silently dropping them. A source error should not become a fabricated zero-price or zero-stock product.

Cost and automation questions

What does one result mean? One delivered successful product row is one primary Dataset event. The current primary rate is $3 per 1,000 rows; startup and caller-paid platform/proxy usage are additional. Two product rows mean $0.006 in primary events, not an all-in run quote.

Will a lower field count make results cheaper? The pricing unit is the delivered product row. Limit inputs, concurrency and maxResults for a first run, then review measured resource usage. A failed request can consume resources without delivering a product.

Can I automate monitoring? Schedule repeated bounded observations and maintain your own source-aware history. Existing snapshots do not guarantee that every source remains reachable. An agent should wait for the existing run, read both data and diagnostics, and report unsupported ranking or pagination explicitly.

Can this choose a profitable product for me? It supplies evidence and calculations for review. Validate logistics, taxes, resale rights, demand and current seller terms independently; none is established by a high heuristic score.

n8n and developer integrations

Use this Actor in your automation or application with the existing community integrations below. An Apify account and API token are required; Actor and platform charges follow the current pricing.

  • n8n community node: n8n-nodes-apivault-tiktok-shop. Install package name n8n-nodes-apivault-tiktok-shop in a self-hosted n8n instance that permits community packages.
  • Python client and examples: GitHub.
  • n8n source and usage: GitHub.

These are community packages. Publication on npm does not establish n8n verification or availability in n8n Cloud. Review the linked package README for supported inputs and setup.