TikTok Shop Search Scraper

Search public TikTok Shop products in the United States. Export prices, sellers, ratings, sales data, variants, stock and product media.

Data fields

FieldTypeDescription
productIdstringValue exported as productId.
titlestringValue exported as title.
productUrlstringValue exported as productUrl.
descriptionstring | nullValue exported as description.
categorystring | nullValue exported as category.
pricenumber | nullValue exported as price.
currencystring | nullValue exported as currency.
originalPricenumber | nullValue exported as originalPrice.

Input preview

searchQueriesSearch keywords
categoryUrlsTikTok Shop category URLs
maxItemsPerQueryProducts per keyword
maxPagesPerQueryPages per keyword
countryTikTok Shop market
proxyConfigurationProxy configuration

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Search public TikTok Shop products by keyword in the United States, or browse public US category URLs. Export structured product, price, seller, rating, sales and media data for product discovery, pricing research and catalog monitoring.

Use this TikTok Shop product search API to export TikTok Shop products into datasets, spreadsheets, JSON, or downstream catalog workflows. It is built for ecommerce analysts, marketplace sellers, agencies, and developers who need repeatable product discovery across supported markets.

Who is it for?

  • Marketplace sellers researching products, prices, shops, ratings, and public sales signals.
  • Ecommerce analysts comparing assortments and promotions in the US TikTok Shop market.
  • Developers and agencies feeding structured search results into dashboards, databases, and automations through API or MCP.

Example input

{
  "searchQueries": ["water bottles"],
  "categoryUrls": ["https://shop.tiktok.com/us/c/water-bottles/600048"],
  "maxItemsPerQuery": 10,
  "maxPagesPerQuery": 2,
  "country": "US",
  "includeProductDetails": true
}

Example output

{
  "productId": "1731726912824578262",
  "title": "HydroPal 32oz Motivational Sports Water Bottle - BPA-Free, Drop-Resistant, Food-Safe PP Plastic, Time Markers, Leak-Proof, Fruit Strainer, Carrying Strap for Active Sports & Workouts",
  "productUrl": "https://shop.tiktok.com/us/pdp/hydropal-32oz-water-bottle-with-time-markers-straw/1731726912824578262",
  "price": 7.75,
  "currency": "USD",
  "sellerName": "HydroPal",
  "rating": 4.8,
  "reviewCount": 271,
  "soldCount": 2014,
  "rank": 1,
  "page": 1,
  "searchQuery": "water bottles",
  "country": "US"
}

What data can you export?

Field Description
productId Stable TikTok Shop product ID
title Product title
productUrl Canonical public product URL
description Public product description when detail enrichment succeeds
category Primary public product category
categories Public product category hierarchy
variants Public SKU IDs, names, property pairs, available stock, status, price, original price, and currency
totalStock Sum of known public SKU available quantities; null when quantities are unavailable
images, videos Public product media URLs
price Current search-card price
currency Price currency
originalPrice Original price when a promotion exposes it
discountText Public promotion or discount label
sellerId Public seller ID
sellerName Shop name
sellerUrl Public shop URL when present
rating Product rating
reviewCount Number of reviews
soldCount Public sold count
soldText Source sales label
imageUrl Primary product image
videoUrl Bound product video when present
brandName Brand name when present
skuMinPrice Lowest SKU price when present
skuMaxPrice Highest SKU price when present
shippingFee Shipping-fee estimate shown to the Actor's anonymous session; not a destination guarantee
deliveryMinDays, deliveryMaxDays Delivery-window estimate shown to the anonymous session; not a destination guarantee
shopRating, shopSoldCount, shopFollowersCount Public shop summary metadata
detailEnriched Whether ID-matched public product details were added
rank Deduplicated rank within the keyword or category
page Result page number
sourceType Whether the row came from keyword or category mode
searchQuery Exact keyword that produced the row, or null for category rows
categoryUrl, categoryId, categoryName Target-bound category attribution, or null for keyword rows
country Verified TikTok Shop market
scrapedAt UTC extraction timestamp

Input settings

Setting Description Default
searchQueries Optional product keywords ['water bottles']
categoryUrls Optional public US TikTok Shop category URLs []
maxItemsPerQuery Maximum unique products per keyword 10
maxPagesPerQuery Maximum pages per keyword 2
country Keyword-search market: US US
includeProductDetails Attempt ID-matched public US enrichment true
proxyConfiguration US residential proxy; an explicit proxy country must be US US residential

Tips and limits

  • Start with 10–30 products per keyword, then scale after reviewing the output.
  • Results reflect the public US market at run time and can change. Prices are reported in USD when the source exposes them.
  • Category URLs are supported only with country: "US".
  • Public video fields and other sparse optional fields are not guaranteed.
  • Other country values are rejected and never replaced with US inventory.
  • Missing optional values remain null; the Actor does not invent seller or regional metadata.
  • Duplicate product IDs within a keyword are removed automatically.
  • A query may return fewer rows than requested when the public search has no more unique products.

API usage

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~tiktok-shop-search-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"searchQueries":["water bottles"],"maxItemsPerQuery":10,"country":"US"}'

JavaScript

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/tiktok-shop-search-scraper').call({
  searchQueries: ['water bottles'],
  maxItemsPerQuery: 10,
  country: 'US',
});
console.log(`Dataset: ${run.defaultDatasetId}`);

Python

import os
from apify_client import ApifyClient

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/tiktok-shop-search-scraper').call(run_input={
    'searchQueries': ['water bottles'],
    'maxItemsPerQuery': 10,
    'country': 'US',
})
print(f"Dataset: {run['defaultDatasetId']}")

Use from MCP at https://mcp.apify.com/?tools=fetch_cat/tiktok-shop-search-scraper or call the Actor through the Apify API client.

Support

Open an issue on the Actor page with the input, expected behavior, and a run link. Do not include passwords, cookies, or private account data.

Common questions

Questions and answers reused from the canonical actor README.

Does it require a TikTok login?

No. It collects public TikTok Shop search results.

Which markets are supported?

This release independently verifies keyword search in US. Other country values are rejected rather than silently returning US inventory.

Can I search several keywords or categories?

Yes. Provide up to 20 combined searchQueries and categoryUrls; each row includes exact keyword or category attribution.

How can I search and export TikTok Shop products?

Enter one or more product keywords, choose a supported market, and run the Actor. Export the resulting dataset as JSON, CSV, Excel, or another format supported by Apify.

Can I run a TikTok Shop search scraper through API or MCP?

Yes. Use the cURL, JavaScript, or Python examples above, or connect through Apify MCP with the Actor-specific tools URL.