# TikTok Shop Scraper (`supreme_coder/tiktok-shop-scraper`) Actor

Search TikTok Shop for products and shops, and scrape full product and shop details.

- **URL**: https://apify.com/supreme\_coder/tiktok-shop-scraper.md
- **Developed by:** [Supreme Coder](https://apify.com/supreme_coder) (community)
- **Categories:** E-commerce, Social media
- **Stats:** 2 total users, 1 monthly users, 96.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.10 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## TikTok Shop Scraper

Search **TikTok Shop** and export clean, structured data about products and shops — no login, no setup, no fiddling with cookies. Just enter a keyword, a product link, or a shop link and get results.

### What you can do

- 🔎 **Search products & shops** by keyword (e.g. `wireless earbuds`, `skincare`, `phone case`)
- 📦 **Get full product details** — title, price, images, ratings, sold count, variants/SKUs, stock, category, and seller
- 🏬 **Get full shop details** — shop name, rating, followers, total sold, number of products, and the products on the storefront

### How to use it

1. Fill in one or more of the inputs below.
2. Click **Start**.
3. Download your results as JSON, CSV, Excel, or via the API.

You can mix and match — search a few keywords, look up specific products, and pull shop details all in one run.

#### Input

| Field | Description |
|---|---|
| **Search keywords** | One or more keywords to search TikTok Shop. Returns matching products and shops. |
| **Product URLs or IDs** | TikTok Shop product links (e.g. `https://www.tiktok.com/view/product/1729417121457344642`) or product IDs. Returns full product details. |
| **Shop URLs or IDs** | TikTok Shop store links (e.g. `https://www.tiktok.com/shop/store/case-mate/7495222674546788482`) or seller IDs. Returns full shop details and its products. |
| **Mixed URLs** | Optional. Paste any mix of TikTok Shop product, shop, or search links — each is detected automatically. |
| **What to return from searches** | For keyword searches: products, shops, or both. |
| **Max products per keyword** | How many products to collect per search keyword. |
| **Include products on shop pages** | When scraping a shop, also collect the products on its storefront. |
| **Marketplace region** | Country code of the TikTok Shop marketplace (e.g. `us`). |

#### Example input

```json
{
  "searchQueries": ["wireless earbuds"],
  "productUrls": ["https://www.tiktok.com/view/product/1729417121457344642"],
  "shopUrls": ["https://www.tiktok.com/shop/store/case-mate/7495222674546788482"],
  "searchResultType": "both",
  "maxResultsPerSearch": 60,
  "includeShopProducts": true,
  "region": "us"
}
```

### Output

Every result is one row in the dataset, tagged with a `type` field so you can filter easily.

**Product (from a search or shop page)** — `type: "product"`

```json
{
  "type": "product",
  "productId": "1731665000546472026",
  "title": "MSHUKCOE Mini Bluetooth 5.4 Wireless Earbuds...",
  "image": "https://...webp",
  "price": "$33.80",
  "currency": "USD",
  "rating": 4.2,
  "reviewCount": "162",
  "soldCount": 1410,
  "seller": { "sellerId": "7495904598724610138", "shopName": "Listening Digital" },
  "productUrl": "https://www.tiktok.com/shop/pdp/.../1731665000546472026",
  "searchKeyword": "wireless earbuds"
}
```

**Product details** — `type: "productDetail"`

```json
{
  "type": "productDetail",
  "productId": "1729417121457344642",
  "title": "Waterproof Floating Pouch - Phone Pouch...",
  "price": "$20.00",
  "currency": "USD",
  "soldCount": 20912,
  "rating": 4.7,
  "reviewCount": 1779,
  "categories": ["Phones & Electronics", "Mobile Phone Accessories", "Phone Holders & Mounts"],
  "images": ["https://...webp"],
  "skus": [
    { "skuId": "1732406242679230594", "name": "CM060210", "price": "$25.00", "stock": 1856, "available": true,
      "properties": [{ "name": "Color", "value": "Wavy Ballet Pink Twinkle" }] }
  ],
  "variants": [{ "name": "Color", "values": ["Wavy Ballet Pink Twinkle", "..."] }],
  "seller": { "sellerId": "7495222674546788482", "shopName": "Case-Mate", "rating": "4.7" }
}
```

**Shop** — `type: "shop"`

```json
{
  "type": "shop",
  "sellerId": "7495222674546788482",
  "shopName": "Case-Mate",
  "rating": "4.7",
  "soldCount": 179260,
  "productCount": 318,
  "followersCount": 138802,
  "reviewCount": 13804,
  "region": "US",
  "shopUrl": "https://www.tiktok.com/shop/store/case-mate/7495222674546788482"
}
```

### Tips

- **Finding a product or shop link:** open the product or shop on TikTok and copy the URL from your browser. Both `tiktok.com` and `shop.tiktok.com` links work.
- **More results per keyword:** increase **Max products per keyword**.
- **Just want shops?** set **What to return from searches** to *Shops only*.

### FAQ

**Do I need a TikTok account or cookies?** No. Just provide keywords or links.

**Which marketplace does it use?** The US TikTok Shop by default. Set the region code to target another marketplace where TikTok Shop is available.

**Why did a product or shop return an error row?** It was likely removed, sold out, or isn't available in the selected region. The row includes an `error` message explaining why.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search TikTok Shop for. Each keyword returns matching products and shops.

## `productUrls` (type: `array`):

TikTok Shop product URLs (e.g. https://www.tiktok.com/view/product/1730447887146387978) or bare product IDs. Each returns full product details.

## `shopUrls` (type: `array`):

TikTok Shop store URLs (e.g. https://www.tiktok.com/shop/store/case-mate/7495222674546788482) or bare seller IDs. Each returns full shop details and its products.

## `startUrls` (type: `array`):

Any mix of TikTok Shop product, store, or search URLs. Each URL is detected and scraped automatically.

## `searchResultType` (type: `string`):

For keyword searches, choose whether to collect products, shops, or both.

## `maxResultsPerSearch` (type: `integer`):

Maximum number of products to collect for each search keyword.

## `includeShopProducts` (type: `boolean`):

When scraping a shop's details, also collect the products listed on its storefront.

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

TikTok Shop marketplace to use (two-letter country code, e.g. us, gb). Most coverage is available for us.

## Actor input object example

```json
{
  "searchQueries": [
    "wireless earbuds",
    "skincare"
  ],
  "searchResultType": "both",
  "maxResultsPerSearch": 60,
  "includeShopProducts": true,
  "region": "us"
}
```

# 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 = {
    "searchQueries": [
        "phone case"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("supreme_coder/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 = { "searchQueries": ["phone case"] }

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

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

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

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "phone case"
  ]
}' |
apify call supreme_coder/tiktok-shop-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=supreme_coder/tiktok-shop-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Kto2YVUUUq7IRoXUn/builds/NeWIcMXpx9lrgPvcc/openapi.json
