Tiktok Discover Scraper
Pricing
from $3.99 / 1,000 results
Tiktok Discover Scraper
TikTok Discover Scraper extracts trending hashtags, videos, sounds, creators, engagement metrics, and other discovery data from TikTok. Automate trend research, content discovery, competitor analysis, influencer research, and TikTok marketing intelligence.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
TikTok Discover Scraper — Videos, Creators, Sounds & Hashtags from Links, Handles or Keywords
Point this Actor at anything on TikTok — a search URL, a username, a hashtag, or a plain keyword — and it returns the matching videos with full metadata: caption, engagement counts, creator profile with follower stats, sound details, video dimensions and download addresses, subtitle tracks, slideshow images and hashtags.
One input field, mixed formats, bulk-friendly. No TikTok account required.
What is TikTok Discover Scraper?
Most TikTok scrapers make you pick a mode up front — profile scraper, hashtag scraper, search scraper. This one accepts all of them in the same field and works out what each line is.
Paste a TikTok search URL, a bare username, a #hashtag, or a phrase like Cristiano Ronaldo, mix them freely, and the Actor queues them all. Each video is normalised into a consistent record regardless of which entry produced it, and every row carries the input that found it plus a discoveryInfo block describing the discovery context.
That makes it the right tool when your research list is messy — which real research lists always are.
What data can you extract?
Video
id, text (caption), createTime, createTimeISO, webVideoUrl, mediaUrls, isAd, isMuted, isSlideshow, isPinned.
Engagement
playCount, diggCount (likes), commentCount, shareCount, collectCount (saves).
authorMeta — the creator
id, name (handle), nickName, verified, signature (bio), avatar, privateAccount, fans (followers), following, heart (total likes), video (total videos), digg.
musicMeta — the sound
musicId, musicName, musicAuthor, musicAlbum, musicOriginal.
videoMeta — the media
width, height, duration, coverUrl, originalCoverUrl, definition, format, downloadAddr, originalDownloadAddr, plus:
subtitleUrls[]— each withlanguage,languageCode,urlandformat(typically WebVTT). This is the shortcut to transcripts at scale.slideshowImages[]— image URLs for photo-mode posts, which most video scrapers ignore entirely.
Context
hashtags[] (id, name, title, cover), input, discoveryInfo (tag, type, URL).
Why teams scrape TikTok discovery data
For trend and content research
Searching a keyword returns what TikTok itself surfaces for it — the practical definition of what is working in that topic right now, with engagement attached.
For influencer discovery and vetting
Every video carries the creator's follower count, total likes and verification status in authorMeta. Ranking creators by engagement relative to followers takes one export, not a second lookup.
For sound and audio trends
musicMeta shows which sounds are attached to high-performing content, and whether the audio is original — a leading indicator of format trends.
For transcript and text pipelines
subtitleUrls gives you direct caption-file links per language. That turns a video corpus into a text corpus without any speech-to-text step.
For photo-mode analysis
Slideshow posts are a large and growing share of TikTok content and are usually missing from video-only datasets. slideshowImages and isSlideshow capture them properly.
For campaign and hashtag tracking
Run your branded hashtag and count videos, creators and total plays — a clean campaign report from a single input line.
How to scrape TikTok discovery step by step
- Open the Actor and add your targets to What to scrape — one per line. URLs,
@usernamesand keywords or hashtags can all be mixed. - Set Max videos per hashtag / keyword. Start at 10–50;
0means unlimited per line. - Leave proxy settings alone unless you already know you need a specific group — the automatic fallback chain handles blocking.
- Click Start, then export the Output tab as JSON (recommended — the record is nested).
⬇️ Input
Example input
{"startUrls": ["https://www.tiktok.com/search?q=football","charlidamelio","#dance","Cristiano Ronaldo"],"maxItems": 50}
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | — (required) | One target per line, mixed formats welcome: TikTok URLs (https://www.tiktok.com/search?q=football), usernames (charlidamelio, with or without @), or keywords / hashtags (#dance, Cristiano Ronaldo). Bulk-friendly. |
maxItems | integer | 10 | Maximum videos per hashtag or keyword line. 0 = unlimited per line, within platform limits — expect much longer runs and higher usage. |
proxyConfiguration | object | off | Optional. Toggle Apify Proxy and pick groups if you already know you need them; otherwise the automatic fallback chain (datacenter → residential) handles blocks. |
⬆️ Output
Example output (trimmed)
{"id": "7412345678901234567","text": "Best goals of the season 🔥 #football #goals","createTime": 1786451234,"createTimeISO": "2026-08-04T09:47:14Z","webVideoUrl": "https://www.tiktok.com/@examplecreator/video/7412345678901234567","playCount": 2140000,"diggCount": 184000,"commentCount": 3120,"shareCount": 14800,"collectCount": 22140,"isAd": false,"isSlideshow": false,"isPinned": false,"authorMeta": {"id": "6789012345","name": "examplecreator","nickName": "Example Creator","verified": true,"signature": "Daily football content ⚽","fans": 612000,"heart": 18400000,"video": 412,"privateAccount": false},"musicMeta": {"musicId": "7123456789012345678","musicName": "original sound","musicAuthor": "examplecreator","musicOriginal": true},"videoMeta": {"width": 1080,"height": 1920,"duration": 41,"definition": "720p","format": "mp4","coverUrl": "https://p16-sign.tiktokcdn.com/…","downloadAddr": "https://v16-webapp.tiktok.com/…","subtitleUrls": [{"language": "English","languageCode": "eng-US","url": "https://v16-webapp.tiktok.com/…","format": "webvtt"}],"slideshowImages": []},"hashtags": [{ "id": "5834", "name": "football", "title": "", "cover": "" }],"input": "football","discoveryInfo": {"tag": "football","type": "discover","url": "https://www.tiktok.com/discover/football"}}
Illustrative values — a live run returns current TikTok data.
Usage recipes
Mixed research list
{"startUrls": ["#skincareroutine","skincare tips","hyram","https://www.tiktok.com/search?q=retinol"],"maxItems": 100}
The input field on every row tells you which line produced it, so one export supports four separate analyses.
Influencer shortlist for a niche
Run a keyword, export, then group by authorMeta.name and compare authorMeta.fans against average diggCount. High engagement on a modest follower count is the profile most brands actually want.
Campaign hashtag report
{"startUrls": ["#yourcampaign"],"maxItems": 0}
Sum playCount and count distinct authorMeta.name for reach and participation. Note that 0 means unlimited — check your cost estimate first.
Build a transcript corpus
Run your topic, then fetch every videoMeta.subtitleUrls[].url. You get language-tagged WebVTT files without touching a speech-to-text service.
Photo-mode content analysis
Filter the export for isSlideshow: true and read videoMeta.slideshowImages. Photo posts behave differently from video and are worth analysing separately.
How does this compare to TikTok's official API?
TikTok's Research API is limited to approved academic and non-profit researchers in eligible regions and requires an application. The Display API only reaches content of users who have authorised your app. Neither gives a marketer or analyst open keyword, hashtag and profile discovery.
This Actor reads public TikTok discovery surfaces — search, hashtag and profile pages — without an account, an app or an approval process. The trade-off is that you are bound by what TikTok shows publicly and by its anti-automation defences, which is why the proxy fallback chain exists.
Integrate and automate
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperforge/tiktok-discover-scraper").call(run_input={"startUrls": ["#dance", "charlidamelio"],"maxItems": 50,})for v in client.dataset(run["defaultDatasetId"]).iterate_items():print(v["playCount"], "|", v["authorMeta"]["name"], "|", v["text"][:60])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperforge/tiktok-discover-scraper').call({startUrls: ['#dance'],maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
REST API
curl -X POST "https://api.apify.com/v2/acts/scraperforge~tiktok-discover-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"startUrls":["#dance"],"maxItems":50}'
n8n, Make, Zapier and AI agents
Call the Actor from n8n, Make, Zapier or an MCP-capable agent — a good fit for an agent that researches a topic and summarises the top creators and formats.
Schedules and webhooks
Attach a Schedule for continuous hashtag or creator monitoring, and use webhooks or the Google Sheets / Airtable / Slack integrations to route results.
Pricing and what you are charged for
Pay-per-event: a small Actor-start charge plus a charge per video row delivered. maxItems multiplied by the number of input lines is your ceiling.
Be deliberate with maxItems: 0 — unlimited applies per line, so a four-line input can produce a very large run. Start bounded, then scale.
Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run.
Limits, reliability and blocking
maxItemsis per line, not per run. Five keywords at 100 each can return up to 500 rows.0means unlimited per line — within TikTok's own limits, and with correspondingly long runs.- Media, cover, download and subtitle URLs expire. They are short-lived TikTok CDN links; fetch anything you need during or immediately after the run.
- Public content only. Private accounts and restricted videos are not returned.
- Engagement counts are point-in-time and change constantly — timestamp runs for trend work.
- Some fields are only populated when TikTok exposes them.
mentionsandeffectStickersare returned as empty arrays for schema stability rather than being omitted. - The Actor returns metadata and links, not downloaded video files.
- Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for large multi-line runs.
Is it legal to scrape TikTok?
This Actor collects publicly available TikTok content — the same videos, profiles and hashtag pages any visitor can browse without logging in. It does not log in, follow accounts, or access private content.
Videos, captions, images and sounds remain the intellectual property of their creators, and handles, avatars and bios are personal data. Use the data for research and analysis; do not republish creators' content as your own, credit and link where you reference it, and process personal data under GDPR and comparable rules. Subtitle files are derived from creators' videos and carry the same restrictions. You are responsible for ensuring your use complies with TikTok's terms and applicable law.
❓ Frequently asked questions
Do I need a TikTok account or API key?
No. The Actor reads public discovery surfaces without authentication.
Can I mix URLs, usernames and hashtags?
Yes — that is the point of the single input field. Each line is detected and queued independently, and input on every row tells you which line produced it.
How do I get transcripts?
Use videoMeta.subtitleUrls — each entry is a direct caption-file link with a language code, usually in WebVTT format.
Does it handle photo/slideshow posts?
Yes. isSlideshow flags them and videoMeta.slideshowImages contains the image URLs — many TikTok scrapers drop these entirely.
Why did I get fewer videos than maxItems?
TikTok's discovery surface for that term ran out of results. Add more keyword variations for wider coverage.
Do I need proxies?
Not to start. The Actor falls back automatically through datacenter and residential when blocked. Pre-enable a group only if you have a specific requirement.
Are download links permanent?
No. All TikTok media URLs expire quickly. Fetch what you need during or right after the run.
Does it return comments?
Comment counts, not comment text.
Which export format should I use?
JSON — authorMeta, musicMeta, videoMeta and hashtags are nested objects. CSV works if you only need top-level metrics.
🔗 Related scrapers
- TikTok Search Scraper — keyword search with region and sort controls.
- TikTok Trending Videos Insights — chart-level trend analytics.
- TikTok Trending Creator Scraper — creator rankings by market.
- TikTok Followers API Scraper — audience lists for the creators you find.
Browse the full collection on the ScraperForge profile.
💬 Feedback
Need comment extraction, deeper pagination, or a custom TikTok research pipeline? Open an issue on the Issues tab of this Actor.