# TikTok Explore Scraper (`insights_data/tiktok-explore-scraper`) Actor

Scrape TikTok Explore videos for All or any of 20 topics like Food, Tech or Fitness. Get plays, likes, comments, shares, saves, caption, hashtags, creator stats, sound and engagement rates as clean JSON. Filters, live results, no account needed.

- **URL**: https://apify.com/insights_data/tiktok-explore-scraper.md
- **Developed by:** [Insights Data](https://apify.com/insights_data) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 Explore Scraper: trending videos by topic

**TikTok Explore Scraper** helps social media managers, creators and influencer marketing teams do TikTok trend research: it collects the videos TikTok shows on the TikTok Explore tab (the Explore page on the TikTok website, with one feed per topic) for All or any of its 20 topics, such as Technology, Food or Fitness & Health. You get plays, likes, comments, shares, saves, captions, hashtags, sounds, creator stats and ready-made engagement rates, without a TikTok account. The Apify Free plan includes $5 of credit every month, which pays for result charges and platform usage, so you can try it with a small test run.

Pick your topics and click **Start**. No coding is needed. Each run is a snapshot of what Explore shows at that moment, a sample of videos rather than a full ranking. It reads Explore topics only, not your own search keywords.

- 📈 **TikTok trend analysis:** see which videos lead a topic in this snapshot, how many plays per hour they get and how they compare.
- ✍️ **TikTok content ideas and TikTok content strategy:** study the captions, hashtags, sounds and video lengths of the top videos in your niche before you plan your next post.
- 👤 **TikTok influencer discovery:** list the creators who appear in Explore for a topic, with follower count and tier, and spot the ones whose videos get more plays than they have followers.
- 🏷️ **TikTok hashtag research and TikTok sound research:** get a separate hashtag table and sound table, tagged with the topic they came from.
- 🗺️ **TikTok market research:** compare engagement across topics such as Beauty Care, Games and Cars. To see changes over time, schedule the run and compare the exports yourself.
- 🤖 **Content research datasets:** captions and optional transcripts as clean JSON for reports, dashboards or AI tools.

#### What can TikTok Explore Scraper do?

- 🧭 **Collect All plus 20 Explore topics** in one run. Type a topic name, a short name like `tech` or `fitness`, or paste an Explore link.
- 🎯 **Filter videos** by upload age (Posted within) and by a minimum number of plays.
- 📥 **Save videos while it runs.** Each video appears in the results the moment it is collected.
- 🗂️ **Split the data into tables:** videos, creators, sounds, hashtags, analytics, transcripts and a per-topic report.
- 📊 **Add performance analytics** to every video: engagement rate, like, comment, share and save rates, plays per hour and plays compared with followers.
- 🎙️ **Add transcripts** from TikTok captions, when TikTok provides them.
- 🔓 **No login, no cookies.** Only public Explore videos are collected.
- 🔌 **Use the Apify platform:** run it through the API, schedule runs, get notified, and connect it to Google Sheets, Make, Zapier, n8n or AI agents.

***

### 🗂️ TikTok Explore Scraper data: what you get

Each run gives you TikTok trending videos for your topics, plus extra tables that make the TikTok data easy to sort and compare. Every video is one row of the main table; topics that could not be collected add a problem row there too (see Output).

| Data | Fields |
|---|---|
| 🎬 Video | `id`, `text` (caption), `createTime`, `createTimeISO`, `webVideoUrl`, `language`, `input`, `exploreCategory`, `feedRank` |
| 🔥 Plays and reactions | `playCount` (plays), `diggCount` (likes; TikTok calls a like a "digg"), `commentCount`, `shareCount`, `collectCount` (saves), `repostCount` |
| 📊 Analytics | `analytics.ageHours`, `playsPerHour`, `engagementRatePct`, `likeRatePct`, `commentRatePct`, `shareRatePct`, `saveRatePct`, `playsToFollowersRatio`, `outperformsAudience` |
| 👤 Creator | `authorMeta`: `name`, `nickName`, `verified`, `fans`, `following`, `heart`, `video`, `digg`, `creatorTier`, `avgLikesPerVideo`, `signature`, `bioLink`, `profileUrl`, `avatar`, `privateAccount`, `id`, `secUid` |
| 🎵 Sound | `musicMeta`: `musicId`, `musicName`, `musicAuthor`, `musicAlbum`, `musicOriginal`, `isCommerceMusic`, `duration`, `playUrl`, `coverUrl` |
| 🔗 Video file links | `videoMeta`: `duration`, `width`, `height`, `definition`, `sizeBytes`, `codec`, `bitrate`, `qualityScore`, `coverUrl`, `dynamicCoverUrl`, `playUrl`, `downloadUrl`; plus `isSlideshow`, `slideshowImages` |
| 🏷️ Tags | `hashtags`, `mentions`, `effectStickers`, `location` |
| 🚩 Flags | `isAd`, `isSponsored`, `hasTikTokShopProduct`, `isAIGenerated`, `duetEnabled`, `stitchEnabled`, `commentsEnabled` |
| 🎙️ Transcript | `transcript`, `transcriptLanguage`, `transcriptSource` (UGC = captions uploaded by the creator, ASR = automatic speech recognition, meaning captions TikTok made itself) |

> **Fields that are often empty:** `repostCount` is `null` in practice, because TikTok does not report reposts to logged-out viewers. `bioLink` is usually `null` on Explore. `hasTikTokShopProduct` is detected from the links attached to a video and has not been confirmed on a real shop video yet, so a shop video can show `false`. `location` is `null` when no place is tagged. Transcript fields appear only when **Add transcripts** is on and TikTok has captions for the video; not every video has them.

**Creator tiers** in `creatorTier` are based on followers: nano (under 10,000), micro (10,000 to 99,999), mid (100,000 to 499,999), macro (500,000 to 999,999) and mega (1,000,000 or more). Filter the creators table on `micro` to build a list of TikTok micro influencers for a topic.

**Engagement rate** (`engagementRatePct`) is likes + comments + shares + saves, divided by plays, times 100. It is the usual way to measure TikTok engagement rate per video.

#### Extra tables in every run

| Table | One row per | Main fields |
|---|---|---|
| 👤 Creators | creator (one row per creator in a run, even if they appear in several topics) | `username`, `followers`, `totalLikes`, `videos`, `creatorTier`, `avgLikesPerVideo`, `signature`, `profileUrl` |
| 🎵 Sounds | sound (one row per sound in a run) | `soundName`, `soundAuthor`, `original`, `commerceSound`, `duration`, `playUrl` |
| 🏷️ Hashtags | hashtag use (video and hashtag) | `hashtag`, `hashtagId`, `exploreCategory`, `videoUrl` |
| 📊 Analytics | video | counts, `followers`, `ageHours`, `playsPerHour`, `engagementRatePct` and the other rates |
| 🎙️ Transcripts | video with a transcript | `language`, `source`, `transcript`, `username` |
| 📋 Topics | topic you entered (a repeated topic, or a topic skipped after the maximum charge limit, gets no row) | `input`, `topic`, `status`, `videosSaved`, `videosChecked`, `message` |

The hashtags table is the base for TikTok trending hashtags and TikTok hashtag analytics: count how often each hashtag appears in a topic, or sum the plays of the videos that use it. The sounds table does the same for TikTok trending sounds. These counts come from the videos in your run (10 per topic by default), so treat them as a sample, not as TikTok's own ranking.

#### What data can't TikTok Explore Scraper extract?

- Comment text. The rows have comment counts only. Use [TikTok Comments & Replies Scraper](https://apify.com/insights_data/tiktok-comments-replies-scraper) for the comments of a trending video.
- All videos of one creator. Use [TikTok Profile Scraper](https://apify.com/insights_data/tiktok-profile-scraper).
- Keyword search results. This Actor reads Explore topics only.
- Video files. You get links to the video, cover and slideshow images, but no files are downloaded.
- Transcripts for videos without TikTok captions. No speech-to-text is done.

***

### 🚀 How to scrape TikTok trends

These steps are written for a first run, even if you have never extracted data from the web before. To scrape TikTok videos from Explore:

1. [Create a free Apify account](https://console.apify.com/sign-up) with your email.
2. Open [TikTok Explore Scraper](https://apify.com/insights_data/tiktok-explore-scraper).
3. In **Explore topics**, keep the prefilled `Technology` and `Food`, or type your own topics, one per line (the full list of 20 topics is in the Input section below).
4. Keep **Videos per topic** at a small number such as 10 (the default). Optional: set a **maximum charge limit** in the run options. Click **Start**.
5. Open the **Output** tab and start with the **Videos** view: one row per video with caption, plays, likes and the creator. To download, open **Storage → Datasets**, pick the table and click **Export** (JSON, CSV, Excel, XML or HTML).

A run stops at its timeout. The default is 3,600 seconds (1 hour). Long runs (many topics, a high **Videos per topic**, strict filters) may need more, so raise **Timeout** in the run options for them. Videos saved before a timeout stay in the results, but the Run summary may be missing.

***

### 💲 TikTok Explore Scraper pricing: how much does it cost to scrape TikTok?

TikTok Explore Scraper uses **pay-per-event** pricing. That means you pay for what the run does (each saved video, plus a small start fee), not a monthly rental. Your bill has three parts:

1. 🎬 **Results:** one result per video saved to the main table. The price depends on your Apify plan (table below).
2. 🚦 **Start fee:** $0.00005 per GB of run memory, once per run. At the default 4 GB memory this is **$0.0002 per run**.
3. ⚙️ **Platform usage:** the compute and proxy traffic the run uses, billed separately at your Apify plan's own rates.

| Apify plan | Price per result | Price per 1,000 results |
|---|---|---|
| 🆓 Free | $0.0005 | $0.50 |
| 🥉 Starter | $0.00045 | $0.45 |
| 🥈 Scale | $0.0004 | $0.40 |
| 🥇 Business and higher | $0.00035 | $0.35 |

The plan discount applies to the result price only. The start fee is the same on every plan, and platform usage is billed at your Apify plan's own rates.

**Example:** the prefilled input (2 topics, up to 10 videos each) saves up to 20 videos. On the Free plan that is up to 20 × $0.0005 = $0.01 for results, plus $0.0002 for the start, plus platform usage. 1,000 videos on the Free plan cost $0.50 in result charges plus the start fee and platform usage. Platform usage changes with the run, so do a small test run first and read the exact cost on the run's page.

> ⚠️ **Large runs:** with **Videos per topic** set to `0`, a topic can check about 6,000 videos, so one topic can save about 6,000 billed videos (about 6,000 × $0.0005 = $3.00 in result charges on the Free plan, plus platform usage), and the run takes longer. Use a number instead, and set a maximum charge limit.

**Not billed:** problem rows (topics that could not be collected) and the rows of the extra tables (creators, sounds, hashtags, analytics, transcripts, topics). See the [pricing tab](https://apify.com/insights_data/tiktok-explore-scraper/pricing) for the current events.

#### Is scraping TikTok free?

You can start for free. The [Apify Free plan](https://apify.com/pricing) gives you $5 of credit every month, which pays for both the result charges and the platform usage. Free-plan runs work the same as paid runs: the same topics, filters and tables, with no extra caps.

#### How do I cap the cost of a run?

Set a **maximum charge limit** in the run options when you start a run. When the limit is reached, the Actor stops, keeps every video it already saved and says so in the run status. The limit caps the result charges; platform usage comes on top.

***

### ⬇️ TikTok Explore Scraper input

Only **Explore topics** is required. Everything else has a safe default.

#### Settings most people change

| Setting | What it does | Default |
|---|---|---|
| 🧭 **Explore topics** (`urls`) | The topics to collect, one per line: `All` or any of the 20 topics. | Prefilled with `Technology` and `Food` |
| 🔢 **Videos per topic** (`resultsPerPage`) | The most videos saved for each topic, for example `10` or `50`. ⚠️ `0` does not mean "none": it removes the per-topic number, so the run can check many more videos and cost much more. | 10 |
| 📅 **Posted within** (`postedWithin`) | Only keep newer videos, for example `7d` (last 7 days), `1m` (last month) or a date such as `2026-01-31`. The input tab lists all options. | `all` |
| 🔥 **Minimum plays** (`minPlays`) | Only keep videos with at least this many plays. Type digits without commas, for example `100000` for 100,000 plays. | 0 (no minimum) |
| 🎙️ **Add transcripts** (`includeTranscript`) | Adds the spoken words when TikTok provides captions, a TikTok transcript per video. | Off |
| 🌍 **Proxy** (`proxyConfiguration`) | Connection settings. Leave the default unless you want videos from a specific country. | No proxy |

Here is the prefilled input, which collects up to 10 videos each from Technology and Food:

```json
{
  "urls": ["Technology", "Food"],
  "resultsPerPage": 10,
  "postedWithin": "all",
  "minPlays": 0,
  "includeTranscript": false,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

See the [input tab](https://apify.com/insights_data/tiktok-explore-scraper/input-schema) for every field.

#### Explore topics

The 20 topics are Singing & Dancing, Comedy, Sports, Anime & Comics, Relationship, Shows, Lipsync, Daily Life, Beauty Care, Games, Society, Outfit, Cars, Food, Animals, Family, Drama, Fitness & Health, Education and Technology. `All` is the main Explore feed. Explore topics are TikTok's own categories, so you can use this Actor as a TikTok category scraper for one niche or for all of them.

- ✅ Good: `Technology`, `Fitness & Health`, `tech`, `fitness`, `All`, or a link to the TikTok Explore page
- ❌ Bad: `AI gadgets` (not an Explore topic). You get a problem row that lists the valid topics. When your text is close to a topic (for example `Tecnology`), the row also suggests it.

> ⚠️ A topic run keeps only the videos TikTok itself files under that topic. Videos from other topics that show up in the same feed are skipped. `All` keeps every video of the main feed.

#### Videos per topic and filters

The number is **per topic**, so `50` with 3 topics saves up to 150 videos. A topic usually stops when one of these happens:

- it reaches your **Videos per topic** number;
- the Explore feed stops showing new videos for that topic;
- about 6,000 videos have been checked for that topic;
- none of the first 800 checked videos match your **Posted within** and **Minimum plays** filters.

It can also end earlier at an internal per-topic limit, at your maximum charge limit, or when TikTok stops answering.

> ⚠️ Strict filters mean the run checks many videos to keep a few. If your filters keep very few videos, the log suggests loosening them. Duplicates are removed within each topic, so a video can appear once under `All` and once under its own topic in the same run.

#### Proxy and country

The videos TikTok shows depend on the country of the connection. By default the run starts without a proxy. If TikTok does not answer, the Actor switches to Apify Proxy by itself, so the country of the videos can change during a run. Proxy traffic is billed as platform usage. If you want a specific country's Explore videos, turn on Apify Proxy in the **Proxy** field and choose that country; this usually gets you that country's videos.

***

### ⬆️ TikTok Explore Scraper output

The results are stored in **datasets**. A dataset is the results table of a run. Open the **Videos** view in the **Output** tab first. The same tab has more views of the main table (Performance analytics, Creators, Sounds, Video files, Commerce and flags, Transcripts, Problems) and links to the extra tables (Creators, Sounds, Hashtags, Analytics, Transcripts, Topics). The **Run summary** is a small JSON record with the run's totals, such as videos saved, videos charged, problems and duration. It sits in the run's key-value store, which is a small file storage next to the datasets.

To download, open **Storage → Datasets**, pick the table, and click **Export**. Formats: JSON, CSV, Excel, XML or HTML. Every table, including the extra ones, is exported this way.

#### JSON example

An example row from the Technology topic of the input above (shortened, some fields left out):

```json
{
  "id": "7698648588947180808",
  "text": "#applerepair #videotiktokviral",
  "createTimeISO": "2026-10-20T07:28:35.000Z",
  "webVideoUrl": "https://www.tiktok.com/@tanjilsheikh92/video/7698648588947180808",
  "input": "Technology",
  "exploreCategory": "Technology",
  "feedRank": 1,
  "playCount": 285600,
  "diggCount": 4458,
  "commentCount": 156,
  "shareCount": 106,
  "collectCount": 195,
  "repostCount": null,
  "analytics": {
    "ageHours": 154.2,
    "playsPerHour": 1852.1,
    "engagementRatePct": 1.72,
    "likeRatePct": 1.56,
    "commentRatePct": 0.055,
    "shareRatePct": 0.037,
    "saveRatePct": 0.068,
    "playsToFollowersRatio": 53.3,
    "outperformsAudience": true
  },
  "authorMeta": {
    "name": "tanjilsheikh92",
    "fans": 5358,
    "heart": 38400,
    "creatorTier": "nano",
    "profileUrl": "https://www.tiktok.com/@tanjilsheikh92"
  },
  "musicMeta": { "musicName": "original sound", "musicOriginal": true },
  "videoMeta": { "duration": 15, "definition": "540p" },
  "hashtags": [
    { "name": "applerepair" },
    { "name": "videotiktokviral" }
  ],
  "isAd": false,
  "isSponsored": false
}
```

This TikTok data scraper also saves TikTok video data such as width, height, size, codec and links in `videoMeta`.

#### Problem rows and the Topics table

A topic that cannot be collected gets a **problem row** in the main table, with an `error` text and an `errorCode`. Problem rows are free. Rows with an `errorCode` are the problem rows; to keep only videos, filter out the rows that have an `errorCode`. The **Problems** view shows the `input`, `errorCode` and `error` columns, but like every view it lists all rows of the main table.

| `errorCode` | What it means |
|---|---|
| `UNKNOWN_CATEGORY` | The topic you typed is not an Explore topic. The row lists the valid topics and, when your text is close to one, suggests it. |
| `NO_RESULTS` | No video was kept for the topic, for example because the filters matched nothing. |
| `SCRAPE_FAILED` | TikTok stopped answering before any video of that topic was saved. |
| `BOOTSTRAP_FAILED` | "Bootstrap" means the start of the run: TikTok did not answer when the run began. There is one row per topic you entered. |

The **Topics** table has one row per topic with a `status`: `ok` (finished), `partial` (TikTok stopped answering after some videos were saved; those videos stay and are billed) or `failed` (a problem row was written). The `message` field gives the reason.

***

### 💡 Tips and advanced usage

#### How many results can you scrape with TikTok Explore Scraper?

Explore is a recommendation feed, not a full list. How deep you get depends on how many new videos TikTok keeps showing for a topic. A topic stops after about 6,000 checked videos in one run, and the feed often runs out earlier. A small test run shows what you can expect for your topics.

#### How to get cheaper and more useful results

- Start with **Videos per topic** at 10 to 50 and only raise it when you need more.
- Use **Posted within** (for example `7d`) and **Minimum plays** to keep only the videos you care about.
- Leave **Add transcripts** off unless you need the spoken words.
- Set a **maximum charge limit** for large runs.

#### ⏰ Run it on a schedule

Explore changes often. Each run gives one snapshot, so you can build a simple TikTok trend tracker by scheduling runs and comparing the snapshots yourself.

1. Set your topics and filters, for example `Beauty Care` with **Posted within** `7d` and **Videos per topic** `50`.
2. Save the input as a **task** (a saved copy of an input that you can run again).
3. Open **Schedules**, create a daily or weekly schedule and add the task.
4. Compare runs: export each run's Hashtags or Sounds table and see which entries are new, or sort the Analytics table by `playsPerHour`.

Each run collects what Explore shows at that moment. There is no built-in history, so keep the exports or send them to a sheet.

#### Known issues

- Results differ between runs and between countries.
- Some fields are often empty; see "Fields that are often empty" in the data section.

***

### 🛠️ If something goes wrong

- **Fewer videos than expected:** read the `message` in the Topics table. The usual reasons are strict filters or a topic feed that ran out of new videos.
- **A problem row:** check the topic name first. `UNKNOWN_CATEGORY` rows list the valid topics.
- **What was billed:** only the videos in the main table. Problem rows and the extra tables are free. The Run summary shows the videos charged.
- **Retry:** start the same input or task again. If TikTok did not answer, try again later. The Actor already switches to Apify Proxy by itself when TikTok does not answer.

***

### 🔌 Integrations and API

#### Can I use TikTok Explore Scraper as a TikTok scraper API?

Yes. The [Apify API](https://docs.apify.com/api/v2) lets you start runs, schedule them and fetch the results, so your app or dashboard can request a fresh snapshot of Explore videos whenever it needs one. It is not a live TikTok trending API: each call starts a run and returns that run's sample. Use the `apify-client` [package for Node.js](https://apify.com/insights_data/tiktok-explore-scraper/api/javascript) or the `apify-client` [package for Python](https://apify.com/insights_data/tiktok-explore-scraper/api/python). The [API tab](https://apify.com/insights_data/tiktok-explore-scraper/api) has ready-made code.

#### TikTok scraper Python example

Replace `<YOUR_API_TOKEN>` with your token from **Settings → API & Integrations** in Apify Console.

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("insights_data/tiktok-explore-scraper").call(run_input={
    "urls": ["Technology", "Food"],
    "resultsPerPage": 10,
    "postedWithin": "all",
    "minPlays": 0,
    "includeTranscript": False,
    "proxyConfiguration": {"useApifyProxy": False},
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("webVideoUrl"), item.get("playCount"))
```

#### Can I integrate TikTok Explore Scraper with other apps?

Yes. Connect it through [Apify integrations](https://apify.com/integrations) with Google Sheets, Slack, Make, Zapier, n8n, Google Drive, Airbyte and more. A **webhook** is a link Apify calls when a run event happens, for example when a run succeeds. Two workflows that fit this Actor:

- 📗 **Send TikTok data to Google Sheets:** schedule a weekly task for your topics and add the Google Sheets integration, so every run adds its main video table to a sheet your team can filter by `engagementRatePct`.
- 🔔 **Slack alert for your niche:** add a webhook for "run succeeded" that starts a Make, Zapier or n8n scenario. The scenario reads the dataset, keeps videos above your play count and posts them to a Slack channel.

#### Can I use TikTok Explore Scraper with AI agents (MCP)?

Yes. MCP (Model Context Protocol) lets AI assistants such as Claude call tools. Connect the Apify MCP server and the assistant can run this Actor and read its results. Open the [MCP tab](https://apify.com/insights_data/tiktok-explore-scraper/api/mcp) for setup steps.

***

### 🧩 Other TikTok scrapers

These Actors from the same account cover the parts of TikTok that Explore does not:

| Actor | What it adds |
|---|---|
| 🏷️ [TikTok Hashtag Scraper](https://apify.com/insights_data/tiktok-hashtag-scraper) | Videos for any hashtag in bulk, with captions, views, likes, author stats, music and optional transcripts |
| 👤 [TikTok Profile Scraper](https://apify.com/insights_data/tiktok-profile-scraper) | Videos, reposts, stories and playlists of any TikTok profile, with author stats and optional followers and comments |
| 💬 [TikTok Comments & Replies Scraper](https://apify.com/insights_data/tiktok-comments-replies-scraper) | Comments and replies from videos and profiles, with likes, reply counts and commenter details |
| 🔍 [TikTok Keyword Search Suggestion](https://apify.com/insights_data/tiktok-keyword-search-suggestion) | The search suggestions TikTok shows for any keyword, with rank and A-Z expansion |
| 🎙️ [Video Transcript Scraper – YouTube, X, TikTok, Facebook](https://apify.com/insights_data/video-transcript-scraper-youtube-x-facebook-tiktok) | Transcripts from TikTok, YouTube, X, Facebook and more, with timestamped segments |
| 📈 [X (Twitter) Trends Scraper](https://apify.com/insights_data/twitter-trends-scraper) | Trending hashtags and topics on X for worldwide, countries and cities |

***

### ❓ FAQ

#### Is it legal to scrape TikTok?

Scraping publicly available data is generally legal, but you must respect personal data and intellectual property rules. When you scrape TikTok data, remember that creator names, handles and bios are personal data under laws such as the GDPR, so collect and store them only with a legitimate reason. Also take [TikTok's Terms of Service](https://www.tiktok.com/legal/page/global/terms-of-service/en) into account. This is not legal advice.

#### How does TikTok Explore Scraper work?

It opens the TikTok Explore tab like a normal visitor, without logging in, and reads each topic's feed for you, so you don't have to scroll and copy by hand. For every video it checks the topic, removes duplicates, applies your filters, adds the analytics and saves the row at once. Then it moves to the next topic and writes a run summary at the end.

#### How to find trending TikTok videos in my niche?

Pick the Explore topic closest to your niche and sort the results by `playsPerHour` or `engagementRatePct`. Add **Posted within** `7d` to focus on recent videos and **Minimum plays** to skip small ones. For a niche that has its own hashtag, run [TikTok Hashtag Scraper](https://apify.com/insights_data/tiktok-hashtag-scraper) on that hashtag as well.

#### How can I see what is trending on TikTok right now?

Run TikTok Explore Scraper with the topic `All` or the topics you follow. Each run returns what the TikTok Explore feed shows at that moment, with plays, likes and the age of each video. Schedule it daily to see how the list changes.

#### How is TikTok Explore Scraper different from TikTok Hashtag Scraper?

Both return TikTok videos with captions, counts, author stats and music. The difference is the starting point.

| | TikTok Explore Scraper | TikTok Hashtag Scraper |
|---|---|---|
| Input | Explore topics (All plus 20) | Any hashtag |
| Good for | Seeing what TikTok promotes in a topic | Following one tag, which works like a hashtag-based TikTok trend scraper |
| Extra tables | Creators, sounds, hashtags, analytics, topics | See its page |
| Analytics | Engagement and other rates, creator tier | See its page |

#### Do I need the official TikTok API?

No. You don't need a TikTok API key, a developer account or a TikTok login. The Actor reads the public Explore tab.

#### Can I use it as a TikTok video scraper for one account?

No, it reads Explore topics. To scrape the videos of a specific account, use [TikTok Profile Scraper](https://apify.com/insights_data/tiktok-profile-scraper). Every row here still has the creator's `profileUrl`, so you can pass interesting creators to it.

#### Why scrape TikTok trends?

- **TikTok marketing:** plan posts around the formats, hashtags and sounds that already work in your topic.
- **Influencer marketing:** shortlist creators by tier and by how far their plays beat their audience.
- **Reporting:** compare a topic's engagement rate across scheduled runs by keeping each run's export.
- **Research:** build caption and transcript datasets for studies or AI tools.

#### Why am I getting fewer results than expected?

1. Check the Topics table `message` for each topic.
2. Loosen **Posted within** or lower **Minimum plays**.
3. Remember that a topic run keeps only videos TikTok files under that topic, and that the feed can run out of new videos.
4. If TikTok did not answer, run it again later. The Actor already switches to Apify Proxy by itself when needed.

#### Can I download the TikTok videos?

The rows contain links to the video (`videoMeta.playUrl`, `videoMeta.downloadUrl`), the cover and the slideshow images. The Actor does not download the files.

#### Is this the same as a general TikTok scraper?

No. A general TikTok scraper usually starts from profiles, hashtags or video links. This one starts from Explore topics, so it shows you what TikTok is promoting in each topic. Use the Actors listed above for the other starting points.

***

### 📧 Support and feedback

Found a bug or want a new field? Please create an issue on the [Issues tab](https://apify.com/insights_data/tiktok-explore-scraper/issues/open).

Need a **custom solution** or more TikTok data? Contact us at hello.insights.data@gmail.com.

Built and maintained by [insights_data](https://apify.com/insights_data).

# Actor input Schema

## `urls` (type: `array`):

One topic per line. Use All or any of the 20 topics: Singing & Dancing, Comedy, Sports, Anime & Comics, Relationship, Shows, Lipsync, Daily Life, Beauty Care, Games, Society, Outfit, Cars, Food, Animals, Family, Drama, Fitness & Health, Education, Technology. Short names such as tech or fitness work too, and so does a link to the Explore page.

## `resultsPerPage` (type: `integer`):

Maximum videos collected from each topic. 0 keeps going until TikTok stops showing new videos.

## `postedWithin` (type: `string`):

Only keep videos newer than this: all, 24h, 7d, 2w, 3m, 1y, or a date such as 2026-01-31.

## `minPlays` (type: `integer`):

Only keep videos with at least this many plays, for example 100000. 0 means no minimum.

## `includeTranscript` (type: `boolean`):

Add the spoken words of each video when TikTok provides captions. Videos without captions are saved without a transcript.

## `proxyConfiguration` (type: `object`):

Runs without a proxy first. If TikTok does not answer, the Actor switches to a datacenter proxy, then to a residential proxy, and stays on it. The videos shown depend on the country of the connection.

## Actor input object example

```json
{
  "urls": [
    "Technology",
    "Food"
  ],
  "resultsPerPage": 10,
  "postedWithin": "all",
  "minPlays": 0,
  "includeTranscript": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One row per video.

## `creators` (type: `string`):

One row per creator found.

## `sounds` (type: `string`):

One row per sound found.

## `hashtags` (type: `string`):

One row per hashtag use.

## `analytics` (type: `string`):

Plays per hour, engagement and other rates per video.

## `transcripts` (type: `string`):

Spoken words per video (only when transcripts are switched on).

## `sources` (type: `string`):

One row per topic with what was found.

## `summary` (type: `string`):

Counts and timing of the run.

# 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 = {
    "urls": [
        "Technology",
        "Food"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("insights_data/tiktok-explore-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 = {
    "urls": [
        "Technology",
        "Food",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("insights_data/tiktok-explore-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 '{
  "urls": [
    "Technology",
    "Food"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call insights_data/tiktok-explore-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,insights_data/tiktok-explore-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/NRDxhc8gaFSCzLJQ7/builds/wxoJgX8iuafPIAOfE/openapi.json
