# TikTok Shop Search Scraper (`piotrv1001/tiktok-shop-search-scraper`) Actor

TikTok Shop search scraper: search TikTok Shop US products by keyword and get prices, discounts, units sold, ratings, reviews, sellers and SKU prices. TikTok Shop product research and trending product data as JSON, CSV or Excel. No login needed.

- **URL**: https://apify.com/piotrv1001/tiktok-shop-search-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, Social media, Automation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Search Scraper

The **TikTok Shop Search Scraper** searches TikTok Shop by keyword and returns every product as a clean row: price, original price, discount, units sold, rating, review count, seller and the price of each SKU. Type a few keywords and export the TikTok Shop products to JSON, CSV or Excel for product research, trend spotting or price tracking. It works like a TikTok Shop search API, with no login and no key. It covers the US shop.

### 🎯 Use Cases

- **TikTok Shop product research**: see what sells for a keyword, how many units each product has sold and at what price, before you source or promote it.
- **TikTok Shop trending products and best sellers**: run your niche keywords and sort the rows by units sold to find the top products in each one.
- **TikTok Shop analytics and sales data**: save units sold, ratings and review counts on a schedule and compare the runs to see what is growing.
- **TikTok Shop price tracker**: follow prices, discounts and flash sales for a product category.
- **Dropshipping and affiliate research**: shortlist products with strong sales, good ratings and free shipping, then check who sells them.
- **Seller and competitor research**: every row names the shop and links to its store, so a keyword search doubles as a list of the sellers in a niche.

### ✨ Features

- **Search by keyword**: any number of keywords in one run, each with its own limit.
- **Prices**: current price, original price, discount percent and currency, plus the price of every SKU.
- **Sales and reviews**: units sold, average rating and review count for each product.
- **Seller data**: seller ID, shop name, store link and logo.
- **Rank**: each row has its position in the search results for the keyword, in TikTok Shop's own order.
- **Promotions**: labels like "Flash sale", "Limited time deal" and "Free shipping".
- **Fair billing**: a product found under two keywords, or twice under one, is saved and charged once. Rows without a product ID, title or price are never saved or charged.

### 🛠️ How It Works

1. **Enter your keywords**, one per line.
2. **Set how many products you want per keyword.** The default is 50.
3. **Run it and download** the results as JSON, CSV or Excel, or pull them through the Apify API.

### ⚙️ Input

| Field                        | What it does                                                                 |
| ---------------------------- | ---------------------------------------------------------------------------- |
| **Keywords**                 | What to search TikTok Shop for, one keyword or phrase per line.              |
| **Max products per keyword** | Stop each keyword after this many products. Default 50. The search itself lists about 140 to 240 per keyword. |

```json
{
    "keywords": ["water bottle", "lip gloss", "phone case"],
    "maxItems": 100
}
```

### 💰 Pricing

You pay only for the products you get. There is no monthly rental.

| Event           | Price                                 | What you get                                                            |
| --------------- | ------------------------------------- | ----------------------------------------------------------------------- |
| **Product**     | $0.003 per product ($3.00 per 1,000)  | One product with its price, units sold, rating, seller and SKU prices   |
| **Actor start** | $0.00005 per run                      | Charged once when the run starts.                                       |

Examples: 50 products = $0.15 · 3 keywords at 100 products each = $0.90 · 1,000 products = $3.00.

### 📊 Sample Output Data

```json
{
    "productId": "1729450033205645687",
    "sellerId": "7495277265489332599",
    "url": "https://shop.tiktok.com/us/pdp/smart-water-bottle-by-waterh-vacuum-insulated-stainless-steel-with-app/1729450033205645687",
    "countryCode": "us",
    "title": "WATERH Boost Smart Digital Tumbler Hydrojug - Durable Insulated Stainless Steel Vacuum Flask…",
    "brand": "WATERH",
    "price": 54.99,
    "originalPrice": 69.99,
    "discountPercent": 21,
    "currency": "USD",
    "currencySymbol": "$",
    "soldCount": 38477,
    "ratingScore": 4.7,
    "ratingCount": 4854,
    "images": ["https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/e52acc58329248f1a9b6abd0bbf9177d~tplv-fhlh96nyum-crop-webp:1446:1500.webp"],
    "variants": [
        { "skuId": "1731029163623879031", "price": 54.99, "originalPrice": 69.99, "currency": "USD", "discountPercent": 21 },
        { "skuId": "1730404178778100087", "price": 69.99, "originalPrice": null, "currency": "USD", "discountPercent": null }
    ],
    "shop": {
        "sellerId": "7495277265489332599",
        "shopName": "GetWaterH",
        "shopLink": "https://shop.tiktok.com/us/store/x/7495277265489332599",
        "logoUrl": "https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/ec2e9584f913403fbae2b95c6177d4c3~tplv-fhlh96nyum-resize-png:300:300.png"
    },
    "promotionLabels": ["Flash sale", "Free shipping"],
    "keyword": "water bottle",
    "position": 1,
    "scrapedAt": "2026-11-03T07:56:56.535Z"
}
```

`soldCount` is the total units sold shown on the listing. `price` is the price the listing shows; `variants` has one entry per SKU, so one product can list dozens. `position` counts from 1 in the keyword's results and can skip numbers where a repeated product was left out.

### 🔁 Schedule and Integrate

Run it weekly per niche to see which TikTok Shop products gain sales and which prices move, or daily around sale events. Set that up with Apify **Schedules**, then send the rows to Google Sheets, Zapier, Make, n8n or your own webhook. Each run is a dated snapshot, so comparing `soldCount` between two runs gives the units sold in between.

### 🤖 Use with AI Agents (MCP)

This actor works as a tool in Claude, ChatGPT, Cursor and other MCP clients through the Apify MCP server (`https://mcp.apify.com`). An agent can call it with:

```json
{ "keywords": ["water bottle"], "maxItems": 20 }
```

### ❓ FAQ

**Does TikTok Shop have an official API?**
TikTok Shop has a partner API for sellers and approved apps to manage their own shop, orders and listings. It has no public API for searching all products. This actor gives you that search data with no key and no approval.

**Do I need a TikTok account?**
No. There is no login and no cookies to provide.

**Which countries does it cover?**
The US shop only. Prices are in USD.

**How many products can I get per keyword?**
The TikTok Shop search lists about 140 to 240 products per keyword (three test keywords gave 140, 174 and 222). When a keyword ends before your limit, the run's status says so. To go deeper, add narrower keywords, such as "insulated water bottle" and "kids water bottle". The status also says so when a keyword only gave a short list.

**Can I sort or filter the results?**
Not in the run: rows come in TikTok Shop's relevance order, and `position` keeps that order. Sort by `soldCount`, `price` or `ratingCount` in your spreadsheet to find TikTok Shop best sellers for a keyword.

**Why are some fields empty?**
`brand` is filled only when the listing names a brand (about 3 in 10 products). `originalPrice` and `discountPercent` are set only when the product is discounted. `ratingScore` is empty for products with no reviews.

**How do I find trending products on TikTok Shop?**
Run the same keywords on a schedule and compare `soldCount` between runs. The products gaining the most units are the ones trending in that niche.

### 🔗 Related Scrapers

- [TikTok Shop Product Scraper](https://apify.com/piotrv1001/tiktok-shop-product-scraper): full product pages for the IDs you find here, with description, stock and rating breakdown.
- [TikTok Shop Reviews Scraper](https://apify.com/piotrv1001/tiktok-shop-reviews-scraper): the customer reviews of any product.
- [TikTok Search Scraper](https://apify.com/piotrv1001/tiktok-search-scraper): the TikTok videos that rank for the same keyword.
- [TikTok Ads Library Scraper](https://apify.com/piotrv1001/tiktok-ads-library-scraper): TikTok ads by keyword or advertiser in Europe.

# Actor input Schema

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

What to search TikTok Shop for, one keyword or phrase per line. Searches the US shop only.

## `maxItems` (type: `integer`):

Stop each keyword after this many products. TikTok Shop's search lists about 140 to 240 products per keyword.

## Actor input object example

```json
{
  "keywords": [
    "water bottle",
    "lip gloss"
  ],
  "maxItems": 50
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "keywords": [
        "water bottle"
    ],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/tiktok-shop-search-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 = {
    "keywords": ["water bottle"],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/tiktok-shop-search-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 '{
  "keywords": [
    "water bottle"
  ],
  "maxItems": 50
}' |
apify call piotrv1001/tiktok-shop-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/tiktok-shop-search-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/UD25WpFKNDPIgHgQW/builds/V4fLTnkDqVCW8k2A5/openapi.json
