# TikTok Promo Code Finder (`rainminer/tiktok-promo-code-finder`) Actor

Find TikTok promo codes and deals for any store. Enter a website domain to search videos and extract discount codes with AI. Best results with store domains (e.g. nike.com). For affiliate teams, deal sites, and brand monitoring. AI-enabled promo code/coupon code on social media (TikTok).

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

## Pricing

from $0.99 / 1,000 promo codes

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

The **TikTok Promo Code Finder** is an Apify Actor that finds **promo codes and deals on [TikTok](https://www.tiktok.com/)** for any store. Enter a **website domain** (e.g. `nike.com`) and get a structured dataset of discount codes, offer text, and source videos — sorted by **recency** so the freshest deals come first. No TikTok URLs or login required.

![TikTok](https://upload.wikimedia.org/wikipedia/en/thumb/a/a9/TikTok_logo.svg/320px-TikTok_logo.svg.png)

---

### Key Features

- **Domain-first input** — use the store website domain for the best match rate (e.g. `nike.com`, not `@nike`)
- **Real video description extraction** — fetches each video's public description from TikTok page data, not Google's search snippet
- **Regional search** — optional country code to bias results (defaults to `us` with US English keywords)
- **Recency-first results** — newest deals prioritized in the output dataset
- **Structured rows** — one dataset item per promo code or deal for easy filtering and export
- **Parallel AI analysis** — multiple videos analyzed concurrently for faster runs
- **Apify platform** — schedule runs, monitor jobs, export via API, and integrate with your stack

---

### Why Find TikTok Promo Codes Automatically?

Creators and brands share discount codes on TikTok faster than any spreadsheet can track. Codes live in video descriptions and hashtags — rarely organized as structured data. This Actor turns public TikTok promo mentions into rows you can filter, export, and pipe into analytics or deal feeds for:

- **Affiliate and partnership teams** collecting influencer discount codes
- **Deal and coupon sites** sourcing fresh brand offers
- **Brand monitoring** tracking who shares your promo codes
- **Competitive intelligence** comparing rival discount activity on TikTok

---

### Who Is It For?

- **Affiliate marketers** building promo code lists at scale
- **E-commerce and growth teams** monitoring brand discount mentions
- **Deal aggregators** automating offer discovery
- **Agencies** reporting on influencer promo delivery for clients

---

### How to Find TikTok Promo Codes

1. Open the Actor in [Apify Console](https://console.apify.com/)
2. Enter the **store domain** (e.g. `nike.com`, `glossier.com`)
3. Optionally set **Search region** (defaults to `us`)
4. Click **Start**
5. Download results from the **Output** tab as JSON, CSV, Excel, or via the Apify API

For all input options, see the **Input** tab in Console.

---

### Input

TikTok Promo Code Finder has the following main input options. Click the **Input** tab for the full schema.

| Field | Required | Default | Description |
| ----- | -------- | ------- | ----------- |
| `brandName` | yes | — | **Store domain** (recommended), e.g. `nike.com`, `glossier.com` |
| `searchRegion` | no | `us` | Two-letter country code (US English defaults) |
| `afterDate` | no | — | Optional calendar date — only videos on or after this date |
| `maxItems` | no | `5` | Maximum promo/deal rows per run |
| `keywords` | no | promo code | Optional deal-related search terms |

Example input:

```json
{
  "brandName": "nike.com",
  "searchRegion": "us",
  "maxItems": 5
}
````

***

### Output

Each dataset row represents **one promo code or deal** found on TikTok:

```json
{
  "brand": "nike.com",
  "promoCode": "LASTSHOT",
  "discountText": "20% off",
  "dealType": "percentage_off",
  "sourceUrl": "https://www.tiktok.com/@couponthang/video/7123456789012345678",
  "postType": "video",
  "captionSnippet": "Extra 20% off with code LASTSHOT at checkout",
  "confidence": "high",
  "searchQuery": "nike.com promo code",
  "scrapedAt": "2026-07-15T06:00:00.000Z",
  "creatorHandle": "@couponthang",
  "creatorProfileUrl": "https://www.tiktok.com/@couponthang",
  "postDate": "2026-03-31T00:00:00.000Z"
}
```

Optional fields such as `expiryText` are included only when found.

You can download the dataset extracted by TikTok Promo Code Finder in various formats such as JSON, HTML, CSV, or Excel.

| Field | Description |
| ----- | ----------- |
| `brand` | Store domain searched for |
| `promoCode` | Discount code (included when found) |
| `discountText` | Deal description (e.g. "20% off") |
| `dealType` | Type of offer (`percentage_off`, `free_shipping`, etc.) |
| `expiryText` | Expiry or time limit (included when mentioned) |
| `sourceUrl` | TikTok video URL |
| `postType` | Always `video` |
| `creatorHandle` | Creator @handle |
| `creatorProfileUrl` | Creator profile URL |
| `creatorDisplayName` | Creator display name |
| `postDate` | Video publish date |
| `captionSnippet` | Text excerpt showing the deal |
| `confidence` | `high`, `medium`, or `low` |
| `searchQuery` | Keyword query that found this deal |
| `scrapedAt` | When this row was extracted |

***

### How Much Does It Cost to Find TikTok Promo Codes?

This Actor uses **pay-per-event** pricing — you pay for search queries run, videos analyzed, and promos found. Exact rates are shown on the Actor detail page.

Start with one store domain to estimate cost before scaling up.

***

### Tips

- Use the **store website domain** (e.g. `nike.com`) — better results than brand names or TikTok @handles
- For country-specific stores, use the local domain (e.g. `nike.de`, `dominos.bg`)
- Lower **After date** for the freshest codes
- Try **`discount code`** in custom keywords if `promo code` returns few results
- Schedule recurring runs to monitor the same brands weekly

***

### FAQ

#### Is it legal to scrape TikTok promo codes?

Our Actors only process **public** TikTok content that is already visible without logging in. They do not extract private user data such as email addresses or DMs. You should use results responsibly and comply with [TikTok's Terms of Service](https://www.tiktok.com/legal/terms-of-service) and applicable laws. If you are unsure whether your use case is permitted, consult your legal team.

#### Why did my run return no promo codes?

Common reasons: the brand has few public promo videos since your **After date**, videos do not mention codes in accessible text, or the date filter is too strict. Try different **keywords** or an earlier **After date**.

#### Does this work without TikTok login?

Yes. The Actor processes public videos only.

#### Need help or a custom solution?

Use the **Issues** tab on this Actor's Store page to report bugs or request features. For custom monitoring or integration work, contact us through Apify Console.

***

### Image Credit

Image credit: [tiktok.com](https://www.tiktok.com/)

# Actor input Schema

## `brandName` (type: `string`):

Store website domain for the brand you want to search (recommended). Examples: glossier.com, nike.com, https://www.sephora.com. Domains return more accurate promo results than brand names or TikTok @handles.

## `searchRegion` (type: `string`):

Two-letter country code for search defaults (ISO 3166-1 alpha-2). Defaults to us (United States).

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

Optional deal-related terms appended to the domain. Each keyword runs as a separate search. Leave empty to use the default keyword (promo code).

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

Maximum number of promo/deal rows to save per run.

## `afterDate` (type: `string`):

Optional. Only include TikTok videos published on or after this date. When omitted, no Google Search date filter is applied.

## Actor input object example

```json
{
  "brandName": "nike.com",
  "searchRegion": "us",
  "keywords": [],
  "maxItems": 5
}
```

# Actor output Schema

## `overview` (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 = {
    "brandName": "nike.com",
    "searchRegion": "us",
    "keywords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/tiktok-promo-code-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 = {
    "brandName": "nike.com",
    "searchRegion": "us",
    "keywords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/tiktok-promo-code-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 '{
  "brandName": "nike.com",
  "searchRegion": "us",
  "keywords": []
}' |
apify call rainminer/tiktok-promo-code-finder --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TikTok Promo Code Finder",
        "description": "Find TikTok promo codes and deals for any store. Enter a website domain to search videos and extract discount codes with AI. Best results with store domains (e.g. nike.com). For affiliate teams, deal sites, and brand monitoring. AI-enabled promo code/coupon code on social media (TikTok).",
        "version": "1.0",
        "x-build-id": "661WjKd4ycFrUV3Nd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rainminer~tiktok-promo-code-finder/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rainminer-tiktok-promo-code-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/rainminer~tiktok-promo-code-finder/runs": {
            "post": {
                "operationId": "runs-sync-rainminer-tiktok-promo-code-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/rainminer~tiktok-promo-code-finder/run-sync": {
            "post": {
                "operationId": "run-sync-rainminer-tiktok-promo-code-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "brandName"
                ],
                "properties": {
                    "brandName": {
                        "title": "Store domain",
                        "type": "string",
                        "description": "Store website domain for the brand you want to search (recommended). Examples: glossier.com, nike.com, https://www.sephora.com. Domains return more accurate promo results than brand names or TikTok @handles."
                    },
                    "searchRegion": {
                        "title": "Search region",
                        "type": "string",
                        "description": "Two-letter country code for search defaults (ISO 3166-1 alpha-2). Defaults to us (United States)."
                    },
                    "keywords": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "Optional deal-related terms appended to the domain. Each keyword runs as a separate search. Leave empty to use the default keyword (promo code).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max promo rows",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of promo/deal rows to save per run.",
                        "default": 5
                    },
                    "afterDate": {
                        "title": "After date",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Optional. Only include TikTok videos published on or after this date. When omitted, no Google Search date filter is applied."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
