# TikTok Shop Scraper (`sian.agency/tiktok-shop-scraper`) Actor

TikTok Shop scraper — product listings, prices, ratings, sellers, and search results across US, UK, Singapore, Malaysia, Philippines, Thailand, Vietnam, and Indonesia. Two operations, one clean dataset per run. No API key required, no account setup.

- **URL**: https://apify.com/sian.agency/tiktok-shop-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** E-commerce, Automation, Social media
- **Stats:** 1,355 total users, 54 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 search products results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## TikTok Shop Scraper — Products, Prices, Sellers, Multi-Region Search 🛒

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Taobao & Tmall Product Scraper](https://img.shields.io/badge/Store-Taobao%20%26%20Tmall%20Product%20Scraper-FF4F00)](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian) [![AliExpress Product Scraper](https://img.shields.io/badge/Store-AliExpress%20Product%20Scraper-E62E04)](https://apify.com/sian.agency/aliexpress-product-scraper?fpr=sian) [![TikTok AI Transcript Extractor](https://img.shields.io/badge/Store-TikTok%20AI%20Transcript%20Extractor-25F4EE)](https://apify.com/sian.agency/best-tiktok-ai-transcript-extractor?fpr=sian)

#### 🎉 Two scrapers in one — extract TikTok Shop product details, prices, sellers, and keyword search across 6 regions

##### Built for dropshippers, e-commerce sellers, market researchers, brand teams, and creator-affiliate agencies who need clean structured TikTok Shop data — no API key, no setup, no scraping headaches

***

### 🔍 What is the TikTok Shop Scraper — and when should you use it?

The **TikTok Shop Scraper** turns a keyword or a product ID into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No TikTok Shop seller account, no portal API key, no browser automation to maintain.

**Use it when you need:** product titles, sale and original prices, discount rates, currency, ratings, review counts and lifetime sold counts. Detail rows add SKU variants, image galleries, shop ratings and follower counts. Six live markets are covered: US, Singapore, Malaysia, Philippines, Thailand and Vietnam.

**Use something else when:** the marketplace is not TikTok Shop. Use [Taobao & Tmall Product Scraper](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian) for China's domestic marketplace, or [AliExpress Product Scraper](https://apify.com/sian.agency/aliexpress-product-scraper?fpr=sian) for cross-border listings. This Actor reads shop listings only — it does not touch TikTok videos, creators or comments.

***

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/tiktok-shop-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want to research products on TikTok Shop using the Apify Actor `sian.agency/tiktok-shop-scraper`.

Use it when I need: product titles, prices, discounts, ratings, sold counts, SKU variants, image galleries and seller details from TikTok Shop in the US, SG, MY, PH, TH or VN.

Don't use it when: I ask about a different marketplace — use `taobao-tmall-product-scraper` for Taobao and Tmall, or `aliexpress-product-scraper` for AliExpress.

How to call it: pick ONE operation per run.
- "searchProducts" takes a `keyword` and returns paginated results with real prices.
- "productDetail" takes a `productId` and returns the full description, SKU list and seller stats.

Start with this input:
{
  "operation": "searchProducts",
  "keyword": "phone case",
  "region": "US",
  "maxPages": 2
}

Ask me for the keyword or product ID and the region, then run the Actor and summarise the results as a table sorted by sold count.
```

**Things you can ask your agent for:**

- *"Find the 20 best-selling phone cases on TikTok Shop in the UK and rank them by discount."*
- *"Compare prices for wireless earbuds across Singapore, Malaysia and Thailand, then tell me which market is cheapest."*
- *"Pull the full detail for product 1731743608991158724 and summarise its SKU variants and seller reputation."*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/tiktok-shop-scraper.md](https://apify.com/sian.agency/tiktok-shop-scraper.md).

***

### 📋 Overview

**Tired of brittle DIY scrapers that break every time TikTok Shop ships a UI tweak?** This actor delivers reliable, flat structured datasets from the fastest-growing live commerce platform of 2026 — one clean run per task, one tidy dataset out.

**What you get:**

- ✅ **Two operations, one actor**: product detail (deep) · product search (paginated, real prices)
- 🌍 **6 regions covered**: United States, Singapore, Malaysia, Philippines, Thailand, Vietnam
- 💰 **Real prices from search**: sale price, original price, currency, discount %, sold count — no masking on the search endpoint
- 🏪 **Deep seller intelligence on detail**: shop name, rating, sold count, followers, products count, region, business compliance info
- 🎯 **Production-ready data shape**: curated camelCase aliases (productId, productTitle, price, sellerName…) PLUS the raw source fields for power users
- 💎 **No API key, no setup, no proxies** — paste a keyword or product ID and run
- ✨ **NEW**: 19-digit TikTok Shop product IDs preserved at full precision; HTTPS auto-normalized on every image URL; automatic retries ride out the flaky moments so a run finishes instead of half-failing

***

### ✨ Features

- 🛒 **Product Detail**: title, description (decoded from rich-text blocks), full SKU list with variants & stock, seller profile (rating, sold count, followers, region, products count), product rating, review count, business compliance info, image gallery
- 🔍 **Search Products**: keyword-based product search with **real prices** (sale + original + discount %), rating, sold count, seller info, slug-based product URL — up to ~55 unique products per keyword
- 🌍 **Multi-region**: US · SG · MY · PH · TH · VN — same keyword, different markets
- 🖼️ **HTTPS-normalized URLs**: every product image and seller logo ready to embed
- 🆔 **BigInt-safe IDs**: 19-digit TikTok Shop product/seller IDs preserved (no precision loss → no broken cross-operation joins)
- 📄 **Smart pagination + dedup**: stream through search results with auto-stop when the catalogue is exhausted; duplicates removed and not charged
- 🛡️ **Automatic retries**: transient hiccups are retried with backoff before anything reaches your dataset, so a slow moment does not turn into an error row
- 📄 **Run report on every run**: product count, a copy-ready list of the IDs found, a preview table, an itemized statement of what the run cost, and retry advice for anything that failed

***

### 🎬 Quick Start

Paste a keyword to search trending TikTok Shop products across any region — no TikTok Shop API or developer account required.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~tiktok-shop-scraper/runs?token=YOUR_TOKEN \
-d '{"operation":"searchProducts","keyword":"phone case","region":"US","maxPages":2}'
```

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Pick an operation

Choose what you want to extract: **Search Products** (keyword discovery) or **Product Detail** (deep single-product scrape).

#### Step 2: Enter the input

A keyword (search) or a numeric product ID (detail), plus optionally a target region.

#### Step 3: Click "Start"

Results stream into the Apify dataset as they come back. Download as JSON, CSV, or Excel directly from the Console.

**That's it! In under 60 seconds, you'll have:**

- A flat, structured dataset (no nested page-bundle JSON to parse)
- Curated camelCase fields plus the raw response for power users
- An HTML report summarizing the run
- Ready-to-embed HTTPS image URLs

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string (enum) | Yes | One of: `productDetail` · `searchProducts` |
| `productId` | string | If operation is `productDetail` | TikTok Shop product ID (18–19 digits). Find it in any product URL: `tiktok.com/shop/pdp/{slug}/{ID}`, or in the `productId` field of any Search Products result row. |
| `keyword` | string | If operation is `searchProducts` | Search query (English or native-language — e.g. `phone case`, `wireless earbuds`, `護膚`) |
| `region` | string (enum) | No | Target region: `US` · `GB` · `SG` · `MY` · `PH` · `TH` · `VN` · `ID` (default `US`) |
| `maxPages` | integer | No | Pages to fetch for Search Products (default 2, max 3 — TikTok Shop caps ~55 unique products per keyword) |

**Example — Search trending TikTok Shop products in the US:**

```json
{
  "operation": "searchProducts",
  "keyword": "phone case",
  "region": "US",
  "maxPages": 2
}
```

**Example — Pull a product's full detail (description, SKUs, seller, ratings):**

```json
{
  "operation": "productDetail",
  "productId": "1731743608991158724",
  "region": "US"
}
```

**Example — Compare the same product across regions:**

```json
{
  "operation": "searchProducts",
  "keyword": "wireless earbuds",
  "region": "SG",
  "maxPages": 2
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **30+ curated fields** plus all raw source fields. Filter by `_operation` to split modes.

| Field | Type | Description |
|-------|------|-------------|
| `productId` | string | TikTok Shop product ID (19-digit, precision preserved) |
| `productTitle` | string | Product display title |
| `productDescription` | string | Full description (decoded from rich-text blocks) — detail rows only |
| `productUrl` | string | Direct link to the product on TikTok Shop |
| `productSlug` | string | SEO slug from search results |
| `price` | number | Current sale price (real value — not masked on search rows) |
| `originalPrice` | number | Pre-discount price |
| `currency` | string | ISO currency code (e.g. `USD`, `GBP`, `SGD`) |
| `currencySymbol` | string | Display symbol (e.g. `$`, `£`, `S$`) |
| `discountRate` | number | Discount fraction (e.g. `0.59` = 41% off) |
| `discountFormat` | string | Human-readable discount label (detail rows) |
| `sellerSubsidy` | number | Seller-funded deduction on top of base discount (detail rows) |
| `priceRange` | object | SKU-level price band (`{min, max}`, detail rows) |
| `coverUrl` | string | Primary product thumbnail (HTTPS) |
| `gallery` | array | Up to 9 product images (HTTPS) |
| `rating` | number | Product overall rating (0–5) |
| `ratingCount` | integer | Review count |
| `soldCount` | integer | Lifetime units sold |
| `skuCount` | integer | Number of SKU variants |
| `skus` | array | SKU list with variants and stock |
| `sellerId` | string | Seller / shop numeric ID |
| `sellerName` | string | Shop display name |
| `sellerLogo` | string | Shop avatar (HTTPS) |
| `sellerRating` | number | Shop rating (detail rows) |
| `sellerSoldCount` | integer | Shop lifetime units sold (detail rows) |
| `sellerFollowersCount` | integer | Shop followers (detail rows) |
| `sellerProductsCount` | integer | Total products in the shop (detail rows) |
| `sellerReviewCount` | integer | Shop review count (detail rows) |
| `sellerRegion` | string | Shop registered region (detail rows) |
| `sellerUrl` | string | Direct link to the shop |
| `businessName` | string | Business compliance name (detail rows) |
| `businessAddress` | string | Business compliance address (detail rows) |

**Example dataset row (Search Products):**

```json
{
  "_operation": "searchProducts",
  "_sourceKeyword": "phone case",
  "_sourceRegion": "US",
  "productId": "1731743608991158724",
  "productTitle": "Cute Soft Silicone Phone Case",
  "price": 6.99,
  "originalPrice": 16.99,
  "currency": "USD",
  "currencySymbol": "$",
  "discountRate": 0.41,
  "rating": 4.7,
  "ratingCount": 1342,
  "soldCount": 12000,
  "sellerId": "7494516024328356",
  "sellerName": "GadgetHaus",
  "coverUrl": "https://p16-oec-general.ttcdn-us.com/...",
  "productUrl": "https://www.tiktok.com/shop/pdp/cute-soft-silicone-phone-case/1731743608991158724",
  "status": "success"
}
```

***

### 💼 Use Cases & Examples

#### 1. Dropshipping Product Discovery

**Dropshippers and DTC operators** hunting winning SKUs before they hit saturation.

**Input:** Search Products with keyword "phone case", "kitchen gadgets", or "skincare" across `US` and `GB`
**Output:** 50+ trending products with price, sold count, rating, and seller info per region
**Use:** Spot velocity SKUs hours before they trend. Pivot on `soldCount` and `discountRate` to rank winners.

#### 2. Competitor Price Monitoring

**E-commerce sellers** tracking competitor pricing, discounts, and stock movement.

**Input:** Scheduled Product Detail runs across a watchlist of competitor product IDs
**Output:** Daily snapshots of `price`, `originalPrice`, `discountRate`, `soldCount`, `rating`
**Use:** Auto-alert on price drops, restocks, and rating shifts. Feed a competitive intelligence dashboard.

#### 3. Seller & Brand Intelligence

**Brand teams and category managers** mapping the seller landscape in any niche.

**Input:** Search Products + Product Detail across a category keyword
**Output:** Full seller catalog with shop ratings, followers, products count, region
**Use:** Identify rising brands, benchmark against incumbents, surface partnership candidates.

#### 4. Multi-Region Market Entry Research

**Market intelligence analysts** comparing TikTok Shop demand across regions before launching a new SKU.

**Input:** Same Search Products keyword across `US`, `GB`, `SG`, `MY`, `PH`, `TH`, `VN`, `ID`
**Output:** Per-region price bands, rating distributions, top sellers, and demand signals
**Use:** Spot markets where a product is winning before competition arrives. Validate pricing for a regional launch.

#### 5. Creator-Affiliate Sourcing

**Influencer marketing and affiliate agencies** building a TikTok Shop creator-affiliate pipeline.

**Input:** Search Products with category keyword, filter for `rating >= 4.5` and `soldCount >= 10000`
**Output:** A vetted list of products with proven sales velocity to brief to creators
**Use:** Match creator audience demographics to product fit; build affiliate-ready product feeds.

#### 6. Trend Mining & Viral SKU Detection

**Trend analysts and content strategists** spotting breakout products before they go mainstream.

**Input:** Daily scheduled Search Products across rotating trend keywords
**Output:** Time-series of `soldCount`, `rating`, and discount activity per SKU
**Use:** Surface SKUs with sudden velocity spikes. Feed a viral-product dashboard or Slack alert.

#### 7. Marketplace Reseller Sourcing

**Amazon / eBay resellers** sourcing products that haven't yet saturated Western marketplaces.

**Input:** Search Products across `SG`, `MY`, `TH`, `VN`, `ID` for low-competition niches
**Output:** SEA-side prices + product details for arbitrage analysis
**Use:** Identify cross-border arbitrage opportunities; price-test against Amazon Best Sellers.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/tiktok-shop-scraper').call({
  operation: 'searchProducts',
  keyword: 'phone case',
  region: 'US',
  maxPages: 2,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/tiktok-shop-scraper').call(
    run_input={'operation': 'productDetail', 'productId': '1731743608991158724', 'region': 'US'}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~tiktok-shop-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation":"searchProducts","keyword":"wireless earbuds","region":"SG","maxPages":2}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: schedule daily or webhook from a category-watcher
2. **HTTP Request**: call the actor's run-sync endpoint with `operation` + input
3. **Process**: filter by `_operation` and pivot on `productId` / `sellerId`
4. **Action**: push to BigQuery, Notion, Airtable, or a Slack price-drop alert

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **Full feature access** — every operation, every field, all 6 regions
- **Up to 25 products per run**, plus a daily run allowance — enough to judge the data depth before you commit
- Run it straight from the Apify Console: no credit card, no setup
- API and scheduled runs are a paid-plan feature

#### PAID Tier (Production Ready)

- **Unlimited** results per run — every product a search finds
- **API access and scheduling** for recurring price and trend monitoring
- Pay-per-result: only charged for successful rows, never for errors or deduplicated entries
- Volume discounts up to 50% off at GOLD/PLATINUM/DIAMOND Apify tiers

💰 **Best price on the market for premium TikTok Shop data** — see the pricing tab for the full per-event ladder. Product Detail carries richer payloads at premium pricing; Search Products is priced to scale with you.

🔗 [View current pricing](https://apify.com/sian.agency/tiktok-shop-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many products can I extract per search?**
A: TikTok Shop caps at ~55 unique products per keyword across pages. To extend coverage, run the same keyword in multiple regions or use narrower queries.

**Q: What do I get on a free Apify plan?**
A: Every operation, every field and all 6 regions, capped at 25 products per run plus a daily run allowance. Free runs work from the Apify Console; API and scheduled runs need a paid plan. A paid plan lifts the per-run cap entirely.

**Q: Why does Product Detail mask the unit price?**
A: TikTok Shop hides raw unit prices on the detail endpoint as an anti-scraping measure. For real prices, use the **Search Products** operation — it returns clean `price`, `originalPrice`, and `discountRate`. Product Detail still gives you the full description, SKU list, seller stats, ratings, sold count, and image gallery.

**Q: Does it work with regions outside the listed 8?**
A: This Actor currently covers US, Singapore, Malaysia, Philippines, Thailand and Vietnam.

United Kingdom and Indonesia were removed on 2026-08-26: no products can be returned for those two markets at the moment, so leaving them selectable would only have cost you a run for an empty result. A run that still asks for them stops immediately with a clear message and is not charged for results. They will be restored as soon as data is available again, along with any new markets that open.

**Q: What output formats are available?**
A: JSON, CSV, Excel, RSS, HTML, XML — export directly from the Apify dataset UI or via API.

**Q: Are product image URLs permanent?**
A: TikTok Shop CDN URLs are stable for several days. For long-term archival, download images at scrape time.

**Q: Why are TikTok Shop product IDs 19 digits — does the dataset preserve them?**
A: Yes. We use a bigint-safe JSON parser so 19-digit IDs (`productId`, `sellerId`) round-trip without precision loss. Most scrapers silently corrupt these and break cross-operation joins.

**Q: Can I search in non-English keywords?**
A: Absolutely. Native-language queries work — `護膚` (Chinese skincare), `kulit` (Malay skin), `กระเป๋า` (Thai bags). Native queries surface more region-relevant results.

**Q: Is this legal?**
A: Yes — we only extract publicly available product listings. See the [Legal section](#-is-it-legal-to-scrape-data) below.

**Q: How long does processing take?**
A: ~3–10 seconds per page for Search Products; ~5–10 seconds for Product Detail.

***

### 🐛 Troubleshooting

**Search returned fewer products than expected**

- TikTok Shop caps at ~55 unique products per keyword. The actor auto-dedupes across pages and stops when results start repeating back. Run the same keyword in multiple regions to expand coverage.

**Product Detail returns "not exist" or empty product**

- The product may have been delisted or restricted in the requested region. Verify the URL works in a browser, and try a different `region`.

**HTTP errors / "Data source temporarily unavailable" rows**

- The actor already retries transient failures with backoff before writing an error row. If you still see them, TikTok Shop is throttling or down — wait a few minutes and re-run. Error rows are never charged.

**19-digit product IDs look truncated in spreadsheet exports**

- Spreadsheet apps (Excel, Google Sheets) auto-cast long integers to scientific notation. The actor preserves them as strings in JSON; in CSV exports, format the `productId` and `sellerId` columns as Text before opening.

**Different prices in different runs**

- TikTok Shop runs frequent flash sales. Schedule recurring runs to track price history rather than relying on a single snapshot.

***

### ⚠️ Trademark Disclaimer

This actor is an **independent scraping tool** and is not affiliated with, endorsed by, or sponsored by TikTok Pte. Ltd., ByteDance Ltd., or any of their subsidiaries. "TikTok" and "TikTok Shop" are used solely in a descriptive sense to identify the public data source the actor reads from. **TikTok®** and **TikTok Shop®** are trademarks of their respective owners. All other trademarks are the property of their respective owners.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the seller has chosen to make publicly available on TikTok Shop. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data (seller business compliance info is published by TikTok Shop itself for consumer-protection reasons). Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### ✨ More by SIÁN Agency

Part of the SIÁN Agency Apify portfolio — production-grade scrapers and AI tools used by agencies, research teams, and brands. A few that pair well with TikTok Shop:

**China & E-commerce**

- [Taobao & Tmall Product Scraper](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian) — China's #1 marketplace: products, search, shop catalogs
- [Uber Eats Menu Scraper](https://apify.com/sian.agency/uber-eats-menu-scraper?fpr=sian) — restaurant menus + prices

**Short-Video & Creator Discovery**

- [Kwai & Kuaishou Scraper](https://apify.com/sian.agency/kwai-kuaishou-scraper?fpr=sian) — China's #2 short-video platform: KOL data, video metrics, comments
- [Douyin Scraper](https://apify.com/sian.agency/douyin-scraper?fpr=sian) — Chinese TikTok counterpart with deep KOL & video data
- [Best TikTok AI Transcript Extractor](https://apify.com/sian.agency/best-tiktok-ai-transcript-extractor?fpr=sian) — TikTok video → text with metadata
- [Instagram AI Transcript Extractor](https://apify.com/sian.agency/instagram-ai-transcript-extractor?fpr=sian) — Reels & Stories transcription

**Real Estate (Global)**

- [Zillow Property Scraper](https://apify.com/sian.agency/zillow-property-scraper?fpr=sian) · [Airbnb Scraper](https://apify.com/sian.agency/airbnb-property-scraper?fpr=sian) · [Bayut (Dubai)](https://apify.com/sian.agency/bayut-property-scraper?fpr=sian) · [Redfin](https://apify.com/sian.agency/redfin-property-scraper?fpr=sian) · [StreetEasy (NYC)](https://apify.com/sian.agency/streeteasy-property-scraper?fpr=sian) · [Zoopla (UK)](https://apify.com/sian.agency/zoopla-property-scraper?fpr=sian) · [Realtor.com](https://apify.com/sian.agency/realtor-property-scraper?fpr=sian)

[Browse all SIÁN actors →](https://apify.com/sian.agency?fpr=sian)

***

### ⭐ Leave a 5-Star Review

Love this actor? **[Leave a 5-star review here](https://apify.com/sian.agency/tiktok-shop-scraper/reviews)** — it helps us build more features for you and lets other teams find it.

***

### 🤝 Support

**Join our active support community**

- For issues or questions, open an issue in the actor's Apify Console Issues tab
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/tiktok-shop-scraper/changelog.md

# Actor input Schema

## `operation` (type: `string`):

🎯 **PICK ONE OPERATION PER RUN.** Each run produces one clean dataset matching the chosen mode.

- **🛒 Product Detail** — deep scrape of a single product by ID (title, description, price, gallery, seller, rating, sold count, currency)
- **🔍 Search Products** — keyword-based product search across TikTok Shop, paginated

💡 **TIP:** To analyze a batch of products, run `Search Products` first, then loop over the `productId` values with `Product Detail`.

## `productId` (type: `string`):

🛒 **Required for the `Product Detail` operation.**

The numeric TikTok Shop product ID (typically 18–19 digits). You can find it:

- In any TikTok Shop product URL: `https://www.tiktok.com/shop/pdp/{slug}/{ID}` → the trailing numeric segment
- In the `productId` field of any Search Products result row

💡 **TIP:** Run `Search Products` first to gather a batch of IDs, then process them one by one with `Product Detail`.

📝 **Note on prices:** TikTok Shop masks raw unit prices on the detail endpoint with placeholders. For hard pricing data (sale price, original price), use `Search Products` — it returns real prices. Detail still returns full product description, SKU list, seller stats, ratings, sold count, and image gallery.

⚠️ **Ignored** for the Search Products operation.

## `keyword` (type: `string`):

🔍 **Required for the `Search Products` operation.**

Any TikTok Shop search query — English or native-language. Examples:

- `phone case`
- `wireless earbuds`
- `kitchen gadgets`
- `skincare`

💡 **TIP:** Narrow queries return higher-relevance results. Combine with `region` to surface market-specific trends.

## `region` (type: `string`):

🌍 **Target TikTok Shop region.** Defaults to `US` if unset.

- **US** — United States
- **SG** — Singapore
- **MY** — Malaysia
- **PH** — Philippines
- **TH** — Thailand
- **VN** — Vietnam

> ℹ️ **UK and Indonesia are unavailable right now** — removed rather than left in to fail. See the README FAQ.

💡 **TIP:** Same product can have different prices, ratings, and availability per region. Run the same keyword across multiple regions to map global demand.

## `maxPages` (type: `integer`):

📄 **Applies to the `Search Products` operation only.** Ignored for `Product Detail`.

Each page returns up to 30 products. TikTok Shop caps results at ~50–60 unique products per keyword, so 2 pages is usually sufficient. Duplicates across pages are auto-deduplicated and not charged.

💡 **TIP:** Use narrower keywords to surface more unique results per run. Run the same keyword across multiple regions to expand coverage.

## Actor input object example

```json
{
  "operation": "searchProducts",
  "productId": "1731743608991158724",
  "keyword": "phone case",
  "region": "US",
  "maxPages": 2
}
```

# Actor output Schema

## `output` (type: `string`):

Products or search results — one flat row per item with curated camelCase aliases (productId, productTitle, price, originalPrice, currency, coverUrl, gallery, sellerId, sellerName, rating, ratingCount, soldCount, productUrl, …) plus the raw source fields spread alongside.

## `report` (type: `string`):

HTML report with the product count, a copy-ready list of the product IDs found, a product preview table, what each result cost you, retry advice for anything that failed, and the exact API call to repeat this run — written even on fatal crash.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "productId": "1731743608991158724",
    "keyword": "phone case"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/tiktok-shop-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "productId": "1731743608991158724",
    "keyword": "phone case",
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/tiktok-shop-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "productId": "1731743608991158724",
  "keyword": "phone case"
}' |
apify call sian.agency/tiktok-shop-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/tiktok-shop-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/PG83A1dXCpeOnRiSJ/builds/pEWidIO80eXma5gzb/openapi.json
