# TikTok Shop Shops & Live Scraper (`lergassy/tiktok-shop-shops-live-scraper`) Actor

Scrape top TikTok Shop shops and live streams by sales: revenue (GMV), units sold, growth, the affiliate / own-account / shop-window split, live views and duration in 15 markets. Find them by keyword, category, creator or shop. Optional daily analytics. JSON, CSV, API.

- **URL**: https://apify.com/lergassy/tiktok-shop-shops-live-scraper.md
- **Developed by:** [Matvey](https://apify.com/lergassy) (community)
- **Categories:** E-commerce, Social media, AI
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.80 / 1,000 shops

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 Shops & Live Scraper** ranks **TikTok Shop stores and live streams by sales**. **Top shops**: revenue (GMV), units sold, average price, growth and **how the revenue splits between affiliate creators, the shop's own accounts and the shop window**, products on sale, brand or retailer. **Top live streams**: revenue, views, average price, start time and duration, by keyword, category, product, creator or shop. Last day, 7 days, 30 days or any past month, in 15 markets. Turn on **📈 Shop / live analytics** for creator, product, video and live counts (shops) or viewers, GPM and products shown (lives).

**$4 per 1,000 shops or lives** ($0.004 per row, down to $0.0028 on higher Apify plans); with analytics **$40 per 1,000** from 22 October 2026. No login.

### What is TikTok Shop Shops & Live Scraper?

A competitor-intelligence tool for TikTok Shop sellers, brands and agencies: who the biggest shops of a niche are, how they sell, and which live streams move the most product.

- **Who are my competitors?** Top shops of a category or keyword, ranked by revenue, brands or retailers only.
- **How do they sell?** Affiliate revenue vs own-account revenue vs shop window, creator count and video count.
- **Which lives sell?** Top live streams of a market, a category, a creator or a competitor's shop, with revenue and views.

### What data can it extract?

| Field | Meaning |
|---|---|
| `shopId`, `shopName`, `shopType`, `productsOnSale` | The shop (shops list) |
| `revenue`, `unitsSold`, `avgSellingPrice`, `revenueGrowthPercent` | Revenue (USD) and units sold in the period, change against the previous period |
| `affiliateRevenue`, `ownAccountRevenue`, `shopWindowRevenue` | Where the shop's revenue came from |
| `creatorCount`, `productCount`, `videoCount`, `liveCount` | Shop analytics option |
| `liveId`, `title`, `creatorUsername`, `creatorUrl`, `views`, `startedAt`, `endedAt`, `durationMinutes` | The live stream (lives list) |
| `viewers`, `gpm`, `productCount` | Live analytics option |
| `rank`, `country`, `period`, `source`, `sourceInput`, `category` | Position in the list and which input found the row |

### How much does it cost?

Pay per event:

| Event | Free plan | Bronze | Silver | Gold and up |
|---|---|---|---|---|
| Shop or live row | $0.004 | $0.0036 | $0.0032 | $0.0028 |
| Shop or live row with analytics | $0.02 | $0.019 | $0.018 | $0.017 |

From **22 October 2026**: a **run start fee of $0.005**, and a row with analytics costs **$0.04 / $0.038 / $0.036 / $0.035** (the price covers the paid data call behind each such row).

- Rows with analytics are **paused until 22 October 2026**: with the option on, rows are delivered and charged as plain rows.
- Each row is charged once: as a plain shop or live or, with the option on, as a shop or live with analytics.
- Notices (an input with no results), duplicates across inputs and errors are **never billed**.
- Set **Max cost per run** in the run options and the run stops by itself at that amount, with every delivered row paid for.
- **Free Apify plan:** a preview of up to 20 rows from each of the first 2 inputs, without the analytics option (Apify does not pay out free-plan runs, while every row costs us a licensed data call). Any paid Apify plan removes these limits.

### How to scrape TikTok Shop shops and live streams

1. Pick the **📋 List**: top shops or top live streams.
2. Leave the inputs empty for the overall top of a country, or add **🔍 Keywords** or **🗂️ Categories** (lives also take **🛍️ Products**, **👤 Creators** and **🏪 Shops**).
3. Pick **🌍 Country**, **📅 Period** and **↕️ Sort by**, optionally the shop type and filters, press **Start** and export JSON, CSV or Excel.

### ⬇️ Input

```json
{
  "listType": "shops",
  "categories": ["Skincare"],
  "country": "US",
  "period": "last30Day",
  "sortBy": "affiliateRevenue",
  "shopType": "BRAND",
  "maxResultsPerSource": 100,
  "addAnalytics": true
}
```

### ⬆️ Output

A shop row with analytics (real run of 8 October 2026):

```json
{
  "type": "shop",
  "rank": 1,
  "shopId": "7495514739648989419",
  "shopName": "medicube US Store",
  "shopType": "BRAND",
  "revenue": 20139498.18,
  "unitsSold": 689808,
  "avgSellingPrice": 29.2,
  "revenueGrowthPercent": 12.59,
  "affiliateRevenue": 19306169.32,
  "ownAccountRevenue": 677046.72,
  "shopWindowRevenue": 156282.14,
  "productsOnSale": 160,
  "country": "US",
  "period": "last30Day",
  "currency": "USD",
  "source": "top",
  "sourceInput": "top shops US",
  "scrapedAt": "2026-10-08T14:31:07.991Z",
  "creatorCount": 45345,
  "productCount": 192,
  "videoCount": 165501,
  "liveCount": 31451,
  "analytics": true
}
```

A live stream row with analytics (same day):

```json
{
  "type": "live",
  "rank": 1,
  "liveId": "7692633944361159455",
  "title": "DADDY IS HOME",
  "creatorId": "7446971784983921710",
  "creatorUsername": "pokepiglt",
  "creatorUrl": "https://www.tiktok.com/@pokepiglt",
  "revenue": 109365.61,
  "views": 391836,
  "avgSellingPrice": 356.24,
  "startedAt": "2026-10-04T02:29:30.000Z",
  "endedAt": "2026-10-04T22:45:03.000Z",
  "durationMinutes": 1216,
  "country": "US",
  "period": "last30Day",
  "currency": "USD",
  "source": "creator",
  "sourceInput": "@pokepiglt",
  "scrapedAt": "2026-10-08T14:31:10.878Z",
  "viewers": 391836,
  "gpm": 279.11,
  "productCount": 34,
  "analytics": true
}
```

### Use cases

#### Competitor research for TikTok Shop sellers

The 100 biggest shops of your category this month, how much of their revenue comes from affiliates, and how many creators sell for them.

#### Affiliate and agency prospecting

Shops that rely on their own accounts and have few creators are the ones that need affiliates: sort by own-account revenue.

#### Live commerce research

The live streams that sold most in a market or for a competitor's shop: title, host, duration and revenue.

#### AI agents and pipelines

Ask an agent "who are the top skincare shops on TikTok Shop UK" through the Apify MCP server.

### Integrations

Apify API (`POST /v2/acts/lergassy~tiktok-shop-shops-live-scraper/run-sync-get-dataset-items`), Python and JavaScript clients, n8n, Make, Zapier, Google Sheets, webhooks and schedules, and the Apify MCP server.

### Troubleshooting

- **A notice "Stopped here"**: the inputs before it returned almost no matching rows, so the run ended instead of reading on; nothing is charged for inputs that were not read. Use broader keywords or categories.
- **Keyword shop lists are not sorted by my choice**: for keywords the data source returns shops in relevance order; use a category for a sorted list.
- **Products, creators or shops given with the shops list**: those inputs are for live streams; shops are found by keyword or category.
- **A sort option was ignored**: options marked (shops) or (lives) apply to that list only; otherwise revenue is used.

### ❓ FAQ

#### Where do the revenue numbers come from?

From licensed TikTok Shop analytics data: the same kind of figures sales-analytics dashboards show. TikTok does not publish revenue, so revenue, units sold and the video / live split are **estimates** built from public sales counters, prices and content. Use them to compare and rank, not as accounting figures.

#### Which markets are covered?

The US, UK, Indonesia, Thailand, Vietnam, the Philippines, Malaysia, Singapore, Japan, Mexico, Germany, Italy, France, Spain and Brazil. Revenue is in US dollars for every market.

#### Does it need a TikTok account, cookies or an API key?

No. Nothing to log in to and no key to bring.

#### Is it legal to scrape TikTok Shop?

The Actor returns aggregated sales analytics and public profile information. Check that your use complies with TikTok's terms and with data-protection law in your country (GDPR, CCPA), especially before contacting creators.

### Your feedback

Found a bug or need a field? Open an issue on the Actor's **Issues** tab. If the Actor saved you time, a short review helps other buyers find it.

### You might also like

| Actor | What it does |
|---|---|
| [TikTok Shop Scraper](https://apify.com/lergassy/tiktok-shop-scraper) | Live product pages: price, stock per variant, shipping, shop stats and up to 25,000 reviews per product |
| [TikTok Shop Top Products Scraper](https://apify.com/lergassy/tiktok-shop-top-products-scraper) | Best-selling products with revenue, units sold and the video / live split in 15 markets |
| [TikTok Shop Creators Scraper](https://apify.com/lergassy/tiktok-shop-creators-scraper) | Selling creators with revenue, followers and contact e-mails |
| [TikTok Shop Videos Scraper](https://apify.com/lergassy/tiktok-shop-videos-scraper) | Shoppable videos with revenue, views, ad ROAS and the AI-video flag |
| [TikTok Shop Shops & Live Scraper](https://apify.com/lergassy/tiktok-shop-shops-live-scraper) | Top shops with the affiliate / own-account split, and top live streams with revenue and views |
| [TikTok Shop Reviews Scraper](https://apify.com/lergassy/tiktok-shop-reviews-scraper) | Every buyer review of US and UK products, or only the new ones since a date |
| [TikTok Influencer Scraper](https://apify.com/lergassy/tiktok-influencer-scraper) | Followers, engagement rate and average views for any list of TikTok creators |

# Changelog

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

# Actor input Schema

## `listType` (type: `string`):

<b>Top shops</b>: shops ranked by revenue with the affiliate / own-account / shop-window split. <b>Top live streams</b>: TikTok Shop lives ranked by revenue with views, start time and duration.

## `keywords` (type: `array`):

Give this or another input below — or leave all empty for the overall top shops or lives of the chosen country. Shops or lives matching each keyword: <b>air fryer</b>, <b>lip gloss</b>, <b>protein</b>.

## `categories` (type: `array`):

Optional. TikTok Shop category names — <b>Beauty & Personal Care</b>, <b>Phones & Electronics</b>, <b>Skincare</b>, <b>Air Fryers</b>. Each one is a separate list of top shops or lives; the matched category is in the row.

## `productIds` (type: `array`):

Optional, <b>live streams only</b>. TikTok Shop product links or IDs: the lives that sold each product.

## `creators` (type: `array`):

Optional, <b>live streams only</b>. TikTok usernames (<code>@name</code>), profile links or creator IDs: the lives of each creator.

## `shopIds` (type: `array`):

Optional, <b>live streams only</b>. TikTok Shop shop IDs or store links: the lives selling for each shop.

## `country` (type: `string`):

TikTok Shop market. Revenue is in US dollars for every market.

## `period` (type: `string`):

Sales window for revenue, units sold and growth.

## `month` (type: `string`):

Optional, overrides Period: a past month as <code>2026-09</code>.

## `sortBy` (type: `string`):

Order of the list, highest first. Options marked (shops) or (lives) apply to that list only; otherwise revenue is used. Keyword shop lists come in relevance order.

## `maxResultsPerSource` (type: `integer`):

Upper limit of shops or lives from each keyword, category, product, creator or shop (or from the overall top list). Duplicates across inputs are skipped and not charged. Free Apify plan: up to 20 from each of the first 2 inputs.

## `addAnalytics` (type: `boolean`):

<b>Paused until 22 October 2026</b> (rows come as plain rows at the plain price); from then $0.04 per row. Not on the free Apify plan. Shops: number of creators, products, videos and lives selling for the shop. Lives: viewers, GPM (revenue per 1,000 views) and products shown. Each such row is charged as a row with analytics instead of a plain row.

## `minRevenue` (type: `integer`):

Only rows with at least this revenue in the period. 0 = no floor.

## `maxRevenue` (type: `integer`):

0 = no ceiling.

## `minPrice` (type: `integer`):

0 = no floor.

## `maxPrice` (type: `integer`):

0 = no ceiling.

## `minFollowers` (type: `integer`):

0 = no floor.

## `maxFollowers` (type: `integer`):

0 = no ceiling.

## `shopType` (type: `string`):

Keep brand shops or retailer shops only.

## `ascending` (type: `boolean`):

Reverse the order: lowest values first.

## Actor input object example

```json
{
  "listType": "shops",
  "country": "US",
  "period": "last30Day",
  "sortBy": "revenue",
  "maxResultsPerSource": 20,
  "addAnalytics": false,
  "minRevenue": 0,
  "maxRevenue": 0,
  "minPrice": 0,
  "maxPrice": 0,
  "minFollowers": 0,
  "maxFollowers": 0,
  "shopType": "all",
  "ascending": false
}
```

# Actor output Schema

## `shops` (type: `string`):

One row per shop: revenue and the rest of the fields, in rank order.

## `lives` (type: `string`):

One row per live: revenue and the rest of the fields, in rank order.

## `allRows` (type: `string`):

Every row of the run, including notices; the type field tells them apart.

## `runStats` (type: `string`):

Counters for the run: rows, inputs, duplicates, errors.

# 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 = {
    "maxResultsPerSource": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("lergassy/tiktok-shop-shops-live-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 = { "maxResultsPerSource": 20 }

# Run the Actor and wait for it to finish
run = client.actor("lergassy/tiktok-shop-shops-live-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 '{
  "maxResultsPerSource": 20
}' |
apify call lergassy/tiktok-shop-shops-live-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lergassy/tiktok-shop-shops-live-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/oQ4zoXn6JFa7iEeIk/builds/2Z8wclB8lPracx2cL/openapi.json
