TikTok Discover / Explore Scraper avatar

TikTok Discover / Explore Scraper

Pricing

$1.00 / 1,000 explore video results

Go to Apify Store
TikTok Discover / Explore Scraper

TikTok Discover / Explore Scraper

Scrape TikTok Explore videos by category. Extract ranked trending videos with creators, captions, plays, likes, comments, shares, hashtags, sound/music metadata and video URLs. No login or cookies required.

Pricing

$1.00 / 1,000 explore video results

Rating

0.0

(0)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Categories

Share

Scrape TikTok Explore videos by category. Extract ranked trending videos with creators, captions, plays, likes, comments, shares, hashtags, sound/music metadata and video URLs. Export clean JSON, CSV or Excel. No TikTok login or cookies required.

TikTok Discover / Explore Scraper — trending TikTok Explore videos by category

What is TikTok Explore?

Explore (also called Discover) is TikTok's own curated feed of trending videos, grouped into native categories such as Technology, Food, Sports or Comedy. You don't search it — TikTok decides what's in it and in what order.

This Actor retrieves that feed, category by category, and returns every video with its category and its native Explore rank.

ActorInputWhat you get
TikTok Discover / Explore Scraper (this one)a categoryTikTok's own Explore-ranked videos for that category
TikTok Keyword Search Scrapera search termvideos TikTok's search returns for your query
TikTok Viral Video Finderyour criteriavideos scored/filtered for virality by Coregent

Use Explore when you want to see what TikTok itself is pushing in a category — trend discovery, category monitoring, content ideation, creator discovery and sound/hashtag discovery — without having to guess keywords first.

What does it extract?

For each video, per category:

  • Lineage & rank — category, categoryId, categoryName, rank
  • Video — videoId, canonical videoUrl, playUrl, coverUrl, description, createdAt, durationSeconds, language
  • Engagement — stats.plays, stats.likes, stats.comments, stats.shares, stats.saves
  • Creator — creator.id, secUid, username, displayName, profileUrl, avatarUrl, isVerified, followers
  • Hashtags & mentions — hashtags[], mentions[]
  • Music / sound — music.id, title, author, url, audioUrl, isOriginal
  • Subtitles (opt-in) — subtitles[] with language, format and URL
  • Derived metrics (Coregent-computed, not TikTok-native) — derived.engagementRate, derived.ageHours, derived.playsPerHour

Supported categories

Input valueTikTok category
ALLAll (mixed Explore feed)
ANIMATION_COMICSAnimation & comics
PERFORMANCEPerformance
BEAUTYBeauty care
GAMINGGame
COMEDYComedy
DAILY_LIFEDaily life
FAMILYFamily
RELATIONSHIPSEmotional relationship
DRAMADrama
FASHIONDress up
DUBBINGDubbing
FOODFood
SPORTSSports
ANIMALSAnimals
SOCIETYSociety
AUTOMOTIVECar
EDUCATIONEducation
FITNESS_HEALTHFitness & health
TECHNOLOGYTechnology
SINGING_DANCINGSinging & dancing

Values are case-insensitive and duplicates are ignored. An unknown value is reported as UNSUPPORTED_CATEGORY in the run summary; the rest of the run continues.

Input

ParameterTypeDefaultDescription
categoriesstring[]["ALL"]Explore categories to scrape (see table above)
maxResultsPerCategoryinteger100Max unique videos saved per category, after filters (1–1000)
includeVideoUrlsbooleantrueAdd playUrl (canonical videoUrl is always included)
includeCreatorbooleantrueAdd the creator object
includeHashtagsbooleantrueAdd hashtags[] and mentions[]
includeMusicbooleantrueAdd the music object
includeSubtitlesbooleanfalseAdd subtitles[] where TikTok provides them
minViews / minLikes / minComments / minSharesinteger0Only keep videos at or above these counts (0 = off)
postedWithinstring"any"any, 24 hours, 7 days, 30 days, 90 days
maxConcurrencyinteger4Categories scraped in parallel (1–8)

Turning a field group off sets it to null; it doesn't change the price.

Example: minimal

{
"categories": ["ALL"],
"maxResultsPerCategory": 100
}

Example: multi-category

{
"categories": ["TECHNOLOGY", "EDUCATION", "FITNESS_HEALTH", "FOOD"],
"maxResultsPerCategory": 250
}

Example: high engagement only

{
"categories": ["ALL"],
"maxResultsPerCategory": 1000,
"minViews": 100000,
"minLikes": 5000
}

Example: fresh videos

{
"categories": ["TECHNOLOGY"],
"maxResultsPerCategory": 500,
"postedWithin": "7 days"
}

Output

One row = one video in one category. If the same video appears in two categories you selected, you get one row per category, each with its own rank.

TikTok Explore videos in the Explore Videos table view Explore Videos table view — ranked videos per category with engagement and creator columns.

The dataset has five output tabs. Below is the same real video (Food category) as each tab shows it. Long signed media links are shortened with ?... here; the dataset contains the full links.

Explore Videos (default)

{
"category": "FOOD",
"rank": 6,
"videoUrl": "https://www.tiktok.com/@azixstarr.asmr/video/7693194203555286290",
"description": "🌶️ Fresh Green Chili Mixing — Spicy, Tangy & Full of Flavor! 😋🔥 #Viral #ForYou #Yummy #GreenChili #spicyfood ",
"createdAt": "2026-10-05T14:42:44.000Z",
"durationSeconds": 16,
"stats.plays": 1000000,
"stats.likes": 15700,
"stats.comments": 314,
"stats.shares": 1487,
"creator.username": "azixstarr.asmr",
"coverUrl": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0037/o0ehoQHgG7z52CbVAIesAnKgOLj7YVDIPokjeH~tplv-tiktokx-origin.image?...",
"scrapedAt": "2026-10-14T11:18:36.972Z"
}

Engagement

{
"category": "FOOD",
"rank": 6,
"videoId": "7693194203555286290",
"videoUrl": "https://www.tiktok.com/@azixstarr.asmr/video/7693194203555286290",
"stats.plays": 1000000,
"stats.likes": 15700,
"stats.comments": 314,
"stats.shares": 1487,
"stats.saves": 1957,
"derived.engagementRate": 0.0175,
"derived.ageHours": 212.6,
"derived.playsPerHour": 4704,
"createdAt": "2026-10-05T14:42:44.000Z"
}

Creators

{
"category": "FOOD",
"rank": 6,
"videoUrl": "https://www.tiktok.com/@azixstarr.asmr/video/7693194203555286290",
"creator.username": "azixstarr.asmr",
"creator.displayName": "Azixstarr ASMR eating show",
"creator.profileUrl": "https://www.tiktok.com/@azixstarr.asmr",
"creator.isVerified": false,
"creator.followers": 43800,
"creator.id": "7192231854307673093",
"creator.secUid": "MS4wLjABAAAAmX9kE0iDkIgTXIZ_5eKMwZVI6Qrn0wxCUo4hTt8iIAEVHhVjFxJXwUohSmTXYHBY",
"creator.avatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-alisg-avt-0068/ad72426cf5ce4d53c3b2cc8efbcb1936~tplv-tiktokx-cropcenter:1080:1080.jpeg?..."
}

Sounds & Hashtags

{
"category": "FOOD",
"rank": 6,
"videoUrl": "https://www.tiktok.com/@azixstarr.asmr/video/7693194203555286290",
"hashtags": [
"viral",
"foryou",
"yummy",
"greenchili",
"spicyfood"
],
"mentions": [],
"music.title": "original sound",
"music.author": "𝔹 ℍ 𝕌 𝕀 𝕐 𝔸 ℕ❗️",
"music.isOriginal": true,
"music.url": "https://www.tiktok.com/music/original-sound-7382935166114614017",
"music.audioUrl": "https://v16m.tiktokcdn.com/e24a56dd60ce9b3a03884b708c808f94/6ad0b6ae/video/tos/alisg/tos-alisg-v-27dcd7/oIIJudEcW5FKfqQ1UWRkqdgQDfCuFBNDdB4mXY/?...",
"music.id": "7382935166114614017"
}

Full Data

{
"rowType": "video",
"category": "FOOD",
"categoryId": 111,
"categoryName": "Food",
"rank": 6,
"videoId": "7693194203555286290",
"videoUrl": "https://www.tiktok.com/@azixstarr.asmr/video/7693194203555286290",
"playUrl": "https://www.tiktok.com/aweme/v1/play/?...",
"coverUrl": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0037/o0ehoQHgG7z52CbVAIesAnKgOLj7YVDIPokjeH~tplv-tiktokx-origin.image?...",
"description": "🌶️ Fresh Green Chili Mixing — Spicy, Tangy & Full of Flavor! 😋🔥 #Viral #ForYou #Yummy #GreenChili #spicyfood ",
"createdAt": "2026-10-05T14:42:44.000Z",
"durationSeconds": 16,
"stats": {
"plays": 1000000,
"likes": 15700,
"comments": 314,
"shares": 1487,
"saves": 1957
},
"creator": {
"id": "7192231854307673093",
"secUid": "MS4wLjABAAAAmX9kE0iDkIgTXIZ_5eKMwZVI6Qrn0wxCUo4hTt8iIAEVHhVjFxJXwUohSmTXYHBY",
"username": "azixstarr.asmr",
"displayName": "Azixstarr ASMR eating show",
"profileUrl": "https://www.tiktok.com/@azixstarr.asmr",
"avatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-alisg-avt-0068/ad72426cf5ce4d53c3b2cc8efbcb1936~tplv-tiktokx-cropcenter:1080:1080.jpeg?...",
"isVerified": false,
"followers": 43800
},
"hashtags": [
"viral",
"foryou",
"yummy",
"greenchili",
"spicyfood"
],
"mentions": [],
"music": {
"id": "7382935166114614017",
"title": "original sound",
"author": "𝔹 ℍ 𝕌 𝕀 𝕐 𝔸 ℕ❗️",
"url": "https://www.tiktok.com/music/original-sound-7382935166114614017",
"audioUrl": "https://v16m.tiktokcdn.com/e24a56dd60ce9b3a03884b708c808f94/6ad0b6ae/video/tos/alisg/tos-alisg-v-27dcd7/oIIJudEcW5FKfqQ1UWRkqdgQDfCuFBNDdB4mXY/?...",
"isOriginal": true
},
"subtitles": [],
"language": "en",
"isAd": false,
"isSlideshow": false,
"derived": {
"engagementRate": 0.0175,
"ageHours": 212.6,
"playsPerHour": 4704
},
"source": "TIKTOK_EXPLORE",
"scrapedAt": "2026-10-14T11:18:36.972Z"
}

Unavailable optional fields are null, and a field group you switch off is null too. subtitles is [] when TikTok has no subtitle track for the video (it's only filled when includeSubtitles is on).

Rank semantics

  • rank is the order TikTok served the video in that category's Explore feed, starting at 1.
  • The Actor never re-ranks locally. If a filter removes earlier videos, the remaining videos keep their original rank (so you may see 4, 7, 9…).
  • Explore ranking is personalised and changes over time — a rank is a snapshot of when the run happened.
  • Beyond the first few dozen videos, Explore behaves like a continuous stream rather than a fixed chart: deeper pages keep bringing new videos, and rank records the order this run received them.

Engagement & derived metrics

stats.* are TikTok's exact integer counts where available. derived.* are computed by this Actor and labelled as such:

  • engagementRate = (likes + comments + shares) / plays
  • ageHours — hours between posting and scrape time
  • playsPerHour = plays / max(ageHours, 1)

Video URL behavior

  • videoUrl is always the canonical https://www.tiktok.com/@user/video/<id> link.
  • playUrl prefers TikTok's https://www.tiktok.com/aweme/v1/play/... route, which works without any TikTok cookie or login. It redirects to TikTok's video CDN, which expects the request header Referer: https://www.tiktok.com/ — send it when downloading (e.g. curl -L -e https://www.tiktok.com/ "<playUrl>" -o video.mp4). Without that header the CDN answers 403.
  • coverUrl, creator.avatarUrl and music.audioUrl need no special headers.
  • All media links are signed by TikTok and expire after a while — download promptly rather than storing the links long-term.
  • Internal session tokens are never included in the output.

Run summary

Each run stores a RUN_SUMMARY record in the key-value store (it's not a dataset row and is never charged):

{
"categoriesRequested": 5,
"categoriesSucceeded": 5,
"categoriesFailed": 0,
"videosSaved": 1250,
"duplicatesSkipped": 44,
"filteredRows": 212,
"providerRequests": 85,
"categories": [
{ "category": "TECHNOLOGY", "status": "SUCCESS", "saved": 250, "stopReason": "result limit reached" }
]
}

Per-category statuses: SUCCESS, NO_RESULTS, UNSUPPORTED_CATEGORY, RATE_LIMITED, BLOCKED, PARTIAL_RESULT, TEMPORARY_TIKTOK_ERROR, PROVIDER_ERROR. One failed category never fails the run. If any category failed, a ready-to-use RETRY_INPUT record lists just those categories.

Result depth

You can ask for up to 1,000 unique videos per category. The Actor keeps pulling the next batch for a category until it has maxResultsPerCategory videos. In our tests TikTok kept serving new videos all the way to 1,000 (for example ALL and FOOD, with no repeats), and a full ALL + FOOD × 1,000 run finished in under two minutes.

If TikTok stops serving videos it hasn't already returned, the category ends early with the reason in the run summary — you are only charged for what's delivered.

Login & cookies

None needed. You don't provide a TikTok account, cookies, or a proxy.

Country support

There is no country filter in this version. The Actor reads TikTok's United States Explore feed, so the mix of creators and languages reflects what TikTok shows US viewers. Other countries may be added later if they can be validated.

Pricing

Pay per result: you're charged once per unique video delivered per category (explore-video-result). You are not charged for:

  • duplicate videos within a category
  • videos removed by your filters
  • failed or unsupported categories
  • retries or provider requests
  • the run summary

There's no run-start fee, so a run that returns nothing costs nothing. See the Pricing tab for current rates — this README deliberately doesn't quote figures, since they're set on the platform and can change.

API & MCP usage

Run from the Apify API:

curl -X POST "https://api.apify.com/v2/acts/coregent~tiktok-discover-explore-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"categories":["TECHNOLOGY","FOOD"],"maxResultsPerCategory":50}'

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('coregent/tiktok-discover-explore-scraper').call({
categories: ['TECHNOLOGY'],
maxResultsPerCategory: 100,
minViews: 50000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

The Actor also works from AI agents through the Apify MCP server — add coregent/tiktok-discover-explore-scraper as a tool and ask, for example, "Get the top 50 Technology videos on TikTok Explore posted in the last 7 days."

Scheduling

Explore changes constantly. Use Apify Schedules to run the same input hourly or daily and build a time series of what TikTok is pushing in each category — then compare rank and stats across runs, or send results to Google Sheets, Slack or a webhook.

Works well with

  • TikTok Video Scraper — full details for videos you found on Explore
  • TikTok Profile Scraper — full profiles for the creators behind them
  • TikTok Viral Video Finder — score and filter videos for virality
  • TikTok Contact Extractor — public business contacts for discovered creators

Limitations

  • Up to 1,000 videos per category per run (see Result depth).
  • United States Explore feed only — no country filter in this version.
  • Some fields (saves, language, subtitles, creator followers) depend on what TikTok includes and may be null.
  • Metrics change after scraping, and Explore ranking is personalised and time-dependent.
  • Creative Center trend modes (hashtag/creator/music charts) are not included — they're deprecated upstream.

Compliance

This is an unofficial tool and is not affiliated with, endorsed by, or connected to TikTok or ByteDance. It processes public Explore data only — no login, no private content, no messaging or follow automation. Explore ranking changes over time and metrics can change after scraping. You are responsible for making sure your use of the data complies with applicable laws and TikTok's terms.