TikTok Shop Product Scraper (Mobile API) avatar

TikTok Shop Product Scraper (Mobile API)

Pricing

from $10.00 / 1,000 result scrapeds

Go to Apify Store
TikTok Shop Product Scraper (Mobile API)

TikTok Shop Product Scraper (Mobile API)

Extract high-fidelity product data from TikTok Shop using mobile app endpoints. Get prices, stock, and images with zero CAPTCHAs

Pricing

from $10.00 / 1,000 result scrapeds

Rating

2.8

(5)

Developer

Rizla Piker

Rizla Piker

Maintained by Community

Actor stats

9

Bookmarked

689

Total users

187

Monthly active users

18 hours

Issues response

a day ago

Last modified

Features

Limited permissions

Share

Extract TikTok Shop product data using mobile API response structures.
This Actor is optimized for fast, structured JSON output and supports multiple regions. Scrape one product or a batch of products in a single run.

Looking for products by keyword instead of a URL? Use TikTok Shop Search Scraper first, then paste the product_id here for full details.

Key Benefits

  • Mobile-shaped response data: Output closely follows TikTok mobile product response fields.
  • Fast execution: Direct JSON extraction without browser rendering.
  • Multi-region support: Works across US, UK, SE Asia, and major EU markets.
  • Rich product fields: Access product, seller, SKU, pricing, and review-related data.
  • Batch runs: Pass many product URLs or IDs and get one dataset item per product.

Input

Provide one TikTok Shop product URL or 19-digit product ID, or several of them in the same run. Each product is stored as its own dataset item.

A single product still uses productInput:

{
"productInput": "https://shop.tiktok.com/view/product/1729802854478746459",
"region": "US",
"outputMode": "full_readable"
}

Scrape multiple products in one run

productInput is a string. Separate URLs or IDs with a comma, a new line, or a space. These three inputs scrape the same products:

{
"productInput": "1729802854478746459, 1729937400435937604, 1731992253305885484",
"region": "PH",
"outputMode": "full_readable"
}
{
"productInput": "1729802854478746459\n1729937400435937604\n1731992253305885484",
"region": "PH",
"outputMode": "full_readable"
}
{
"productInput": "1729802854478746459 1729937400435937604 1731992253305885484",
"region": "PH",
"outputMode": "full_readable"
}

Full URLs work the same way, including one URL per line.

To pass a real JSON array from the Apify API or the apify-client Python library, use productIds. One run can take as many IDs as you need (10 is the same shape as the list below; add one string per product):

{
"productIds": [
"1729802854478746459",
"1729937400435937604",
"1731992253305885484"
],
"region": "PH",
"outputMode": "full_readable"
}
from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("<ACTOR_ID>").call(run_input={
"productIds": [
"1729802854478746459",
"1729937400435937604",
"1731992253305885484",
],
"region": "PH",
"outputMode": "full_readable",
})

If you set both productInput and productIds, the Actor merges them and scrapes each product once. A failed product is skipped and reported in the run log. The run fails only when every product request fails.

Parameters

  • productInput: One or more product URLs or product IDs, separated by a new line, comma, or space.
  • productIds: Optional JSON array of product URLs or product IDs.
  • region (optional): Country code such as US, GB, ID, MY, TH, VN, PH, SG, DE, FR, IT, ES. Default is US.
  • outputMode (optional): Controls response shape.
    • full_readable (default): Product-focused readable JSON with grouped sections.
    • formatted_filtered: Compact filtered product JSON.
    • raw_response: Original API response (raw nested payload).

Provide at least one value in productInput or productIds.


Output Formats

Each product is stored as a separate dataset item. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

In the Output tab, Product overview and Full readable response are tables with one row per product: price, sales, store, store rating, review score, and review count. Variants is one row per size, color, or bundle, with that SKU's price and stock. All fields keeps the full JSON, including product_info. Prices stay in the shop's own format, such as Rp47.000 or $59.99.

1) outputMode: "full_readable" (default)

[
{
"product_info": {
"total_products": 1,
"products": [
{
"product_id": "1731992253305885484",
"status": 1,
"title": "Product title...",
"category": {
"name": "Beauty & Personal Care",
"id": "601450"
},
"pricing": {
"currency": "USD",
"currency_symbol": "$",
"sale_price": "$59.99",
"original_price": "$59.99",
"discount": "",
"raw": {}
},
"sales": {
"sold_count": 183,
"combined_sales_volume": {}
},
"inventory": {
"total_stock": 9818,
"skus": [],
"sale_props": [],
"default_sku_id": "1731992256433263404",
"default_selection": {}
},
"media": {
"image_urls": [
"https://p16-oec-general-useast5.ttcdn-us.com/..."
],
"images": [],
"share_info": {}
},
"seller": {
"seller_id": "7499603814329548059",
"name": "Example Store",
"rating": "4.1",
"location": "US",
"shop_link": "aweme://...",
"raw": {}
},
"reviews": {},
"shipping": {
"logistic": {},
"shipping": {},
"pdp_logistic_module": {}
},
"actions": {
"add_to_cart_button": {},
"buy_button": {},
"button_area": {},
"favorite": 0
},
"additional": {
"sku_common_config": {},
"shop_review_entry": {},
"user_rights_module": {},
"promotion_label_info": {},
"marketing_config": {},
"raw_product": {}
}
}
]
}
}
]

2) outputMode: "formatted_filtered"

[
{
"product_id": "1731992253305885484",
"title": "Product title...",
"price": {
"min_price": "$59.99",
"max_price": "$59.99",
"currency": "USD"
},
"images": [
"https://p16-oec-general-useast5.ttcdn-us.com/..."
],
"stock": 9818,
"sales_count": 183,
"store_info": {
"name": "Example Store",
"rating": 4.1
}
}
]

3) outputMode: "raw_response"

[
{
"code": 0,
"data": {
"goda_protocol": {
"global": {
"product_info_resp": {
"products": [
{
"product_id": "1731992253305885484",
"seller": {},
"product_base": {},
"skus": []
}
}
}
}
}
},
"message": "success"
}
]

Common Use Cases

  • Price monitoring: Track product prices and discounts over time.
  • Competitor analysis: Monitor stock and sales trends.
  • Catalog enrichment: Collect product metadata and image URLs.
  • Market research: Compare product performance across regions.

Notes

  • Field availability can vary by product, seller, region, and account context.
  • Use raw_response mode when you need complete payload coverage.
  • Use full_readable or formatted_filtered when you need cleaner output for dashboards and pipelines.
  • Run responsibly and ensure your usage complies with applicable platform terms and laws.

Support

If you need custom output fields (for example logistics details, review breakdowns, or seller analytics), use the Contact button.


To search TikTok Shop by keyword (prices, sales, ratings, sellers), use TikTok Shop Search Scraper.