TikTok Video Scraper avatar

TikTok Video Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
TikTok Video Scraper

TikTok Video Scraper

Scrape TikTok videos from URLs, profiles, hashtags, keyword search, or trends — one rich record each: engagement stats, author, music, hashtags, no-watermark download and native transcript. Fast, HTTP-only, and you are never charged for unavailable or unmatched videos.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

DataForge

DataForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

TikTok Video Scraper: Profiles, Search & Trends

Turn public TikTok content into clean, analysis-ready data. Start with video URLs, creator profiles, hashtags, keyword searches, or current trends and receive the same rich schema for every video: captions, engagement, creator details, music, media links, and optional transcripts or downloads.

HTTP request-only runtime: no Playwright, Chromium, or headless browser is launched. Deep discovery combines TikTok's public first-party surfaces and validates every selected post through its full public video record.

✅ Unavailable, private, deleted, or unmatched posts are written to a separate Issues dataset. They are not saved as paid video results.

💡 Why this Actor

  • Request-only runtime — no Playwright, Chromium, or headless browser, so runs are faster and cheaper than browser-based TikTok scrapers
  • 🎯 Five sources, one schema — video/photo URLs, creator profiles, hashtags, keyword search, and current trends all return the same rich record
  • 🔒 Exact-match verification — every discovered post is validated against the requested creator or hashtag, so you don't pay for unrelated videos
  • 🧾 You don't pay for failures — private, deleted, or unmatched posts go to a separate Issues dataset instead of being charged as results
  • 📝 Transcripts + download links built in — native captions and permanent video/cover storage URLs when you enable them

📸 Sample output

TikTok Video Scraper sample output — real data fields

A real run's output — exportable to JSON, CSV, or Excel.

✨ What you can collect

SourceExampleWhat you get
🎬 Video or photo URLshttps://www.tiktok.com/@user/video/...One complete record per public post
👤 Creator profiles@scout2015Recent authoritative posts plus exact-creator deep discovery
#️⃣ HashtagstravelRelated public feeds, with every result verified against the exact hashtag
🔎 Keyword searchai toolsThe main public feed plus related TikTok topic feeds for deeper runs
🔥 Current trendsEnable Current trending videosPublic trending playlist, public discovery, and Creative Center signals

Every result can include:

  • views, likes, comments, shares, saves, and reposts
  • full post caption, hashtags, language, location, and AIGC flags
  • creator name, username, verification, bio, followers, total likes, and video count
  • video dimensions, duration, quality variants, cover, playback, and download URLs
  • sound title, author, duration, and audio URL
  • TikTok native transcript when captions are available
  • permanent video and cover storage links when downloads are enabled

🚀 Quick start

Scrape direct post URLs

{
"postUrls": [
{ "url": "https://www.tiktok.com/@apifyoffice/video/7200360993149553925" }
],
"postIds": ["7659338240096226580"],
"maxItems": 10
}

Full URLs, vm.tiktok.com short links, and photo posts go in postUrls; bare numeric IDs go in postIds.

Scrape a creator profile

{
"profiles": ["@scout2015"],
"maxItems": 50,
"deepDiscovery": true,
"maxDiscoveryQueries": 12
}

Creator Embed anchors the newest posts. Deep discovery then follows the creator's username, display name, and creator-owned topics to find older publicly indexed posts. Both the discovery row and the full video record are checked against the exact username, so unrelated creators are not included.

The final depth depends on what TikTok exposes publicly for that creator. It can go well beyond the embed window, but it is not a promise to return an account's entire private or non-indexed history.

{
"hashtags": ["travel", "foodtok"],
"searchQueries": ["ai tools", "startup marketing"],
"trending": true,
"trendCountry": "US",
"deepDiscovery": true,
"maxItems": 50,
"dedupe": true
}

maxItems is one global cap for the entire run. If a video appears in several sources, deduplication saves it only once.

Collect hundreds of search results

{
"searchQueries": ["travel"],
"maxItems": 300,
"deepDiscovery": true,
"maxDiscoveryQueries": 8,
"maxConcurrency": 10
}

One TikTok SEO topic feed currently exposes up to about 100 unique videos. Deep discovery follows TikTok's own related-topic graph until the requested limit or query budget is reached. The Actor deduplicates IDs and stops atomically at maxItems.

Add spoken-word transcripts

{
"searchQueries": ["technology news"],
"maxItems": 20,
"transcript": "native",
"transcriptLanguage": "eng"
}

The Actor uses TikTok's creator or auto-generated captions. Videos without a caption track remain valid results, but do not contain a transcript field.

🧭 How a run works

flowchart LR
A[URLs, profiles, hashtags, search, trends] --> B[Discover public videos]
B --> C[Expand through related first-party feeds]
C --> D[Verify author or hashtag and deduplicate]
D --> E[Extract full video details]
E --> F[Optional transcript and media storage]
F --> G[Clean dataset views and exports]

🧭 Deep discovery

Deep discovery is enabled by default and uses a different safe strategy for each source:

  • Profiles: starts with the authoritative Creator Embed posts, then follows username variants, display-name topics, and hashtags found on exact creator posts. Exact-author checks run before and after full extraction.
  • Hashtags: scans the main and related public TikTok topic feeds. A candidate is kept only when both discovery metadata and the full post contain the requested hashtag.
  • Search: combines the primary public topic feed with TikTok's own related keywords. This is how one query can grow beyond a single feed's roughly 100-item window.
  • Trends: combines TikTok's public trending embed, public trending / fyp / viral discovery surfaces, and country-specific Creative Center ranking signals.

Set deepDiscovery to false for the smallest and cheapest list scan. Raise maxDiscoveryQueries when a large run needs more related feeds; the default is tuned for ordinary 20–100 result jobs.

⚙️ Input reference

FieldTypePurpose
postUrlsarrayTikTok post URLs or short links
postIdsarrayBare numeric TikTok video IDs
profilesarrayCreator usernames or profile URLs
hashtagsarrayHashtags with or without #
searchQueriesarrayKeyword or phrase searches
trendingbooleanInclude current ranked trend videos
trendCountrystringCountry for Creative Center signals; default US
deepDiscoverybooleanFollow related public TikTok feeds; default true
maxDiscoveryQueriesintegerMaximum public topic feeds scanned per list input; default 12
maxItemsintegerGlobal result cap; default 20
dedupebooleanRemove repeated video IDs; default true
transcriptstringnever or native
transcriptLanguagestringPreferred code such as eng, rus, or spa
shouldDownloadVideosbooleanStore available MP4 files
shouldDownloadCoversbooleanStore cover images
onlyNewerThanintegerSkip posts at or before a Unix timestamp
maxConcurrencyintegerParallel video requests

When maxItems is 0, source safety limits apply per input: up to 50 profile posts, 100 hashtag/search posts, and 50 trend posts.

📦 Output

The default dataset provides focused views:

  • Videos: source, discovery path, matched topic, caption, creator, date, engagement, duration, and hashtags
  • Engagement: complete interaction metrics, trend source, and available Creative Center signals
  • Creators: avatar, bio, verification, followers, likes, and posting totals
  • Media: covers, dimensions, quality, playback, download, storage, and sound URLs
  • Transcripts: post caption, available languages, transcript source, and full text
  • All fields: the complete underlying record

Example result, shortened for readability:

{
"id": "7659338240096226580",
"url": "https://www.tiktok.com/@ai91882/video/7659338240096226580",
"source": "search",
"sourceInput": "openai",
"sourceRank": 1,
"discoverySource": "tiktok_seo",
"discoveryQuery": "openai-tools",
"text": "Public post caption... #ai #openai",
"createTimeISO": "2026-07-06T09:04:21+00:00",
"playCount": 14500,
"diggCount": 221,
"commentCount": 14,
"shareCount": 91,
"collectCount": 88,
"authorUsername": "ai91882",
"authorFollowers": 2370,
"videoDuration": 127,
"hashtags": ["ai", "openai"],
"hasAutoCaption": true,
"subtitleLanguages": ["eng-US", "cmn-Hans-CN"],
"transcriptLanguage": "eng-US",
"transcript": "Full spoken-word transcript..."
}

Results are available as JSON, JSONL, CSV, Excel, XML, RSS, and through the Apify API.

🔔 Monitor new content

For scheduled creator, hashtag, or campaign monitoring:

  1. Keep dedupe enabled.
  2. Schedule the Actor at the interval you need.
  3. Pass the previous run time as onlyNewerThan.
  4. Save the latest successful timestamp for the next run.

Posts at or before that timestamp are skipped before they enter the paid output.

🧯 Issues and empty sources

The separate Issues dataset records a clear reason for inputs that cannot produce a paid result, including:

  • deleted, private, or unavailable posts
  • empty or private profiles
  • queries with no matching public videos
  • temporary source or connection failures after retries

An issue row never replaces a real result in the default dataset.

❓ FAQ

Can I mix all source types in one run?
Yes. The global limit and deduplication apply across all sources.

Does hashtag mode return unrelated videos?
No. Each full video record is checked for the requested hashtag before it is saved.

Does profile mode return the creator's entire history?
Not always. It returns the authoritative recent embed posts and can expand far beyond that window when TikTok publicly indexes the creator's older content. Private, deleted, and non-indexed history is not accessible through the request-only public surfaces.

Is Trending my personal For You feed?
No. It is a reproducible public trend dataset built from TikTok's public trending playlist, public discovery topics, and Creative Center. It does not impersonate a logged-in user's personalized feed.

Are transcripts generated for every video?
No. Native transcript mode requires a caption track published or generated by TikTok. The video result is still returned when no captions exist.

Do direct media URLs last forever?
TikTok CDN URLs may expire. Enable video or cover downloads when you need durable files in Apify storage.

Do failed inputs count as paid video results?
No. Only complete rows written to the default video dataset are results; issues are kept separately.