# TikTok Shop to Amazon Product Gap Finder (`leopoldsaint/tiktok-amazon-product-gap-finder`) Actor

Find TikTok Shop best-sellers with weak Amazon competition: proven demand, review moats, price gaps, and a transparent opportunity score.

- **URL**: https://apify.com/leopoldsaint/tiktok-amazon-product-gap-finder.md
- **Developed by:** [Leopold saint](https://apify.com/leopoldsaint) (community)
- **Categories:** E-commerce, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $35.00 / 1,000 product opportunities

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/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 to Amazon Product Gap Finder

Find products that are **already selling in volume on TikTok Shop** but still have **weak competition on Amazon** - before everyone else lists them.

Enter a niche such as `hair styling tools`, `kitchen gadgets`, or `posture corrector`. The Actor pulls the best-selling TikTok Shop products for that niche, checks each one against live Amazon search results, and delivers scored product-gap rows with the evidence attached: units sold on TikTok, closest Amazon listings, review moats, price bands, and a clear verdict.

TikTok Shop is where product demand shows up first. Amazon is where it gets monetized at scale. This Actor measures the distance between the two.

### What each result tells you

Every row is one TikTok Shop winner analyzed against Amazon:

- **Verdict** - `wide-open` (no credible Amazon analogue found), `uncertain` (a weak analogue needs manual review), `emerging` (equivalents exist but no review moat yet), or `crowded` (entrenched sellers with 1,000+ reviews).
- **Opportunity score (0-100)** with a fully exposed breakdown: TikTok demand (0-40), Amazon openness (0-40), margin potential (0-20). Deterministic - same inputs, same score, no black box.
- **Match confidence** - `high`/`medium`/`low`/`none`, computed from token containment between the product and the closest Amazon listing, with a price-sanity check that downgrades implausible matches. You always see exactly which Amazon listing was treated as the closest competitor.
- **TikTok evidence** - lifetime units sold, price, rating, review count, shop name, revenue estimate, and a direct product link.
- **Amazon evidence** - number of relevant matches, biggest review moat, median price of relevant listings, price delta %, sponsored-ad share, plus the closest listing's price/reviews/rating/URL and a one-click Amazon search link.

### How to use it

1. Enter 1-5 **niche keywords**.
2. Pick the **Amazon marketplace** to check against (10 marketplaces supported).
3. Click **Start**. A default run finishes in a few minutes.
4. Sort the **Product gaps** table by score, or export JSON/CSV/Excel for your product-research workflow.

### Input

| Field                     | Default | What it does                                          |
| ------------------------- | ------- | ----------------------------------------------------- |
| `queries`                 | -       | 1-5 TikTok Shop search phrases                        |
| `marketplace`             | `US`    | Amazon marketplace for competition checks             |
| `maxOpportunities`        | `10`    | Products to analyze - you only pay for delivered rows |
| `minSold`                 | `100`   | Ignore TikTok products below this lifetime sales bar  |
| `minOpportunityScore`     | `0`     | Only deliver rows at or above this score              |
| `maxTikTokProducts`       | `40`    | TikTok products scanned before ranking candidates     |
| `amazonResultsPerProduct` | `8`     | Amazon results inspected per product                  |

### Output example

```json
{
    "productName": "Automatic Hair Curling Iron, 28mm Hair Curler, Negative Ion Curl Wand",
    "verdict": "emerging",
    "opportunityScore": 78,
    "grade": "B",
    "matchConfidence": "high",
    "scoreBreakdown": { "tiktokDemand": 40, "amazonOpenness": 28, "marginPotential": 10 },
    "tiktokSold": 174483,
    "tiktokPrice": 28.6,
    "tiktokRevenueEstimate": 4990214,
    "tiktokUrl": "https://shop.tiktok.com/us/pdp/...",
    "relevantMatches": 3,
    "maxMatchReviews": 478,
    "entrenchedCompetitors": 0,
    "amazonMedianPrice": 24.99,
    "priceDeltaPercent": -13,
    "topMatchName": "PretiHom Automatic Rotating Curling Iron 1.1 Inch",
    "topMatchReviews": 478,
    "topMatchUrl": "https://www.amazon.com/dp/...",
    "amazonSearchUrl": "https://www.amazon.com/s?k=automatic%20hair%20curling%20iron%2028mm"
}
```

You can download the dataset in JSON, CSV, Excel, or HTML formats, or pull it through the API.

### How much does a run cost?

Pricing is pay-per-event: **you are charged only per analyzed product row that is actually delivered**, plus a negligible run-start fee. Rows filtered out by your minimum score are never charged.

The two upstream Actors bill their usage separately at their own rates: the TikTok Shop scan (about `$0.008` per product scanned, ~`$0.32` for the default 40) and the Amazon checks (about `$0.0046` per result, ~`$0.37` for 10 products x 8 results). The Actor pins hard budget ceilings on both nested calls and never validates more candidates than your run budget can deliver.

### Tips for better gap lists

- **Scan more, analyze fewer.** Raising `maxTikTokProducts` to 80-100 gives the ranking step more winners to choose from at small extra cost.
- **Raise `minSold` to 1,000+** when you only want proven products with real velocity.
- **`wide-open` verdicts deserve manual review** - check the TikTok link to confirm the product type, since novel products sometimes have no lexical Amazon equivalent yet. That is exactly what makes them interesting.
- **Watch `priceDeltaPercent`.** A positive delta means Amazon buyers currently pay more than the TikTok price - margin headroom for a new listing.
- **Re-run weekly per niche.** TikTok Shop best-seller lists rotate fast; early `emerging` verdicts are the window.

### Limitations and fair use

- Matching is lexical (token containment with price sanity checks), not image-based. Each listing is scored against both the derived search query and the full TikTok title, and `matchConfidence` tells you exactly how much to trust each comparison - every row links to the underlying TikTok and Amazon evidence for one-click verification.
- Price-gap metrics (`priceDeltaPercent`, margin potential) are computed only for the US marketplace, since TikTok Shop prices are in USD; on other marketplaces competition metrics still work and margin scoring stays neutral.
- TikTok `sold` counts are lifetime figures shown by TikTok Shop, not monthly velocity.
- Amazon competition is sampled from first-page relevance-sorted results - the practical battleground for new listings.
- The Actor reads only publicly available catalog data from both platforms. Respect each platform's terms of service in your downstream use.

### Support

Found an issue or want an extra signal (sales velocity deltas, more marketplaces, category filters)? Open an issue on the Actor's **Issues** tab - feedback directly shapes the roadmap.

# Actor input Schema

## `queries` (type: `array`):

1-5 TikTok Shop search phrases, e.g. `hair styling tools`, `kitchen gadgets`, `posture corrector`. Each is scanned for best-selling products.

## `marketplace` (type: `string`):

Amazon marketplace to check competition on. Price-gap metrics (margin potential, price delta) are computed only for the US marketplace, since TikTok Shop prices are in USD.

## `maxOpportunities` (type: `integer`):

How many top-selling TikTok Shop products to validate against Amazon. You are only charged for analyzed product rows that are delivered.

## `minSold` (type: `integer`):

Ignore TikTok Shop products with fewer lifetime units sold than this. Higher = only proven winners.

## `minOpportunityScore` (type: `integer`):

Only deliver rows at or above this transparent 0-100 score. Use 0 to inspect all evidence.

## `maxTikTokProducts` (type: `integer`):

How many TikTok Shop products to pull before ranking candidates by units sold. More products = better candidates and slightly higher upstream cost (~$0.008 per product).

## `amazonResultsPerProduct` (type: `integer`):

How many Amazon search results to inspect for each analyzed product (~$0.0046 per result).

## `demoMode` (type: `boolean`):

Development-only mode that uses bundled sample evidence and never calls paid upstream Actors.

## Actor input object example

```json
{
  "queries": [
    "hair styling tools"
  ],
  "marketplace": "US",
  "maxOpportunities": 10,
  "minSold": 100,
  "minOpportunityScore": 0,
  "maxTikTokProducts": 40,
  "amazonResultsPerProduct": 8,
  "demoMode": false
}
```

# Actor output Schema

## `gaps` (type: `string`):

No description

## `summary` (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 = {
    "queries": [
        "hair styling tools"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leopoldsaint/tiktok-amazon-product-gap-finder").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 = { "queries": ["hair styling tools"] }

# Run the Actor and wait for it to finish
run = client.actor("leopoldsaint/tiktok-amazon-product-gap-finder").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 '{
  "queries": [
    "hair styling tools"
  ]
}' |
apify call leopoldsaint/tiktok-amazon-product-gap-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=leopoldsaint/tiktok-amazon-product-gap-finder",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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