TikTok Video Scraper avatar

TikTok Video Scraper

Pricing

from $1.70 / 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 $1.70 / 1,000 results

Rating

0.0

(0)

Developer

Kelopr

Kelopr

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

5

Monthly active users

6 days ago

Last modified

Share

๐ŸŽฌ TikTok Video Scraper โ€” a recipe book for pulling clean TikTok data

Five ways in, one clean record out. Whether you have a single video link, a creator you're watching, a topic you're chasing, or a trending feed to capture, there's a recipe below for it. Pick the one that matches your goal, copy the input, run it. Every recipe returns the same flat schema โ€” engagement, creator, media, sound, and (optionally) the spoken transcript โ€” over plain HTTP, with no login and no headless browser.

๐Ÿฝ๏ธ FIVE WAYS IN ONE FLAT RECORD OUT ๐Ÿฝ๏ธ
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
๐Ÿ”— postUrls / postIds ยท ๐Ÿง‘ profiles ยท ๐Ÿท๏ธ hashtags
๐Ÿ”Ž searchQueries ยท ๐Ÿ”ฅ trending (trendCountry)
โ”‚
โ”‚ โ—€โ”€โ”€ direct links: fetched as-is
โ”‚ โ—€โ”€โ”€ lists: ๐Ÿงญ discover public feeds first
โ–ผ (deepDiscovery expands & verifies)
๐ŸŽฌ fetch each video โ€” request-only, no login, no browser
โ”‚
๐ŸŽฏ verify โ–ธ ๐Ÿงน dedupe โ–ธ ๐Ÿ”ข maxItems cap (one global cap)
โ”‚
+ ๐Ÿ“ transcript + ๐Ÿ’พ downloads (optional add-ons)
โ–ผ
โœ… one flat row per video ยท โš ๏ธ failures โ–ถ Issues dataset

Prefer to skip straight to a task? Jump to a recipe:


๐Ÿงบ What's in the pantry

Before the recipes, here's every ingredient the Actor can put on a plate โ€” the same set no matter which source you start from:

  • ๐Ÿ†” Identity โ€” id, url, type, text (caption), createTimeISO, hashtags, mentions, textLanguage, locationCreated, isAd, isAIGC, isPinned
  • ๐Ÿ“Š Engagement โ€” playCount, diggCount, commentCount, shareCount, collectCount, repostCount
  • ๐Ÿง‘ Creator โ€” authorUsername, authorName, authorVerified, authorSignature, authorFollowers, authorFollowing, authorHearts, authorVideoCount, authorPrivate
  • ๐ŸŽž๏ธ Media โ€” videoDuration, videoWidth, videoHeight, videoDefinition, videoCodec, videoCoverUrl, videoPlayUrl, videoDownloadUrl, videoQualities
  • ๐ŸŽต Sound โ€” musicTitle, musicAuthor, musicIsOriginal, musicDuration, musicPlayUrl
  • ๐Ÿ“ Transcript โ€” hasAutoCaption, subtitleLanguages, transcriptLanguage, transcriptSource, transcript
  • ๐Ÿ’พ Storage links โ€” videoStorageUrl, coverStorageUrl, authorAvatarStorageUrl (only when the matching download is enabled)
  • ๐Ÿงญ Provenance โ€” source, sourceInput, sourceRank, discoverySource, discoveryQuery โ€” so every row tells you which input produced it

Export the finished dataset as JSON, JSONL, CSV, Excel, XML or RSS, or pull it from the Apify API.


Goal: you have a handful of TikTok URLs, short vm.tiktok.com links, photo posts, or bare video IDs, and you want the full record for each.

Input:

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

What comes back: one row per video with the full pantry above โ€” caption, all six engagement counts, the creator block, media dimensions and the quality ladder, and the sound. A temporarily-unavailable video is retried up to maxRetries times; if it stays deleted, private, or region-locked, it goes to the free Issues dataset instead of your paid results.


๐Ÿง‘ Recipe 2 โ€” Follow a creator's recent posts

Goal: track one or more creators โ€” their latest posts, engagement, and profile stats over time.

Input:

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

What comes back: the creator's authoritative recent posts. With deepDiscovery on (the default), the Actor expands through the creator's own public topics to reach further than the first page โ€” every result is still checked to belong to the exact author. Private, deleted, or non-indexed history isn't reachable request-only. Each row carries the Creator fields, so you can also read the dataset as a creator table (followers, total likes, verification, posting totals).

๐Ÿ’ก To collect only posts since your last run, keep dedupe on and pass the previous run time as onlyNewerThan (a Unix timestamp in seconds). Older posts are dropped before they ever reach the paid output.


Goal: cast a wide net on a subject โ€” pull hashtag feeds, keyword searches, and the current trending playlist together, deduplicated into one dataset.

Input:

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

What comes back: a merged, de-duplicated feed. Hashtag results are each verified to actually contain the requested tag before they're saved โ€” no noise. Search pulls the main public feed plus related TikTok topic feeds. Trends combines the public trending playlist, public trend discovery, and Creative Center ranking signals for your trendCountry (13 supported: US, GB, DE, FR, IT, ES, CA, AU, BR, MX, JP, KR, ID). Trend rows carry extra ranking columns โ€” trendSource, trendMetric, trendVideoViews, trendEngagementRate โ€” visible in the Engagement dataset tab.

๐Ÿ’ก You can mix these lists with postUrls and profiles in the same run. The maxItems cap and deduplication apply across all sources together.


๐Ÿ“ Recipe 4 โ€” Build a spoken-word transcript corpus

Goal: get what was actually said in each video as readable text โ€” for NLP datasets, search, or content analysis.

Input:

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

What comes back: on top of the usual record, each video that has a caption track gets transcript (the full text), transcriptLanguage, transcriptSource, plus hasAutoCaption and the list of subtitleLanguages available. transcript accepts never (off) or native (TikTok's creator or auto-generated captions). Set transcriptLanguage to a preferred code such as eng, rus, spa, or deu; leave it empty to prefer the original. Videos with no caption track are still valid rows โ€” they simply carry no transcript. The Transcripts dataset tab shows caption, languages, source, and the full text side by side.


๐Ÿ’พ Recipe 5 โ€” Archive no-watermark videos & images that won't expire

Goal: keep the media itself, not just the metadata. TikTok CDN URLs are signed and die within about a day โ€” this recipe saves permanent copies.

Input:

{
"profiles": ["@apifyoffice"],
"maxItems": 25,
"shouldDownloadVideos": true,
"shouldDownloadCovers": true,
"shouldDownloadAvatars": true
}

What comes back: each enabled download saves the file into the run's key-value store and adds a permanent Apify link to the row โ€” videoStorageUrl for no-watermark MP4s, coverStorageUrl for thumbnails, and authorAvatarStorageUrl for creator pictures (each creator is fetched only once per run). Combine this recipe with any of the four above.


๐Ÿง‘โ€๐Ÿณ Kitchen notes

  • maxItems is one global cap for the whole run across every source. With maxItems: 0, per-source safety limits apply instead: 50 profile posts, 100 hashtag/search posts, 50 trend posts per input.
  • Failures never bill as videos. Deleted, private, region-locked, unmatched, or retry-exhausted inputs are written to a separate Issues dataset with a clear reason.
  • No browser, ever. The whole thing runs request-only over HTTP โ€” no Playwright, Chromium, or headless browser is launched.

๐Ÿ“– Full ingredient list (input reference)

FieldTypeDefaultWhat it does
postUrlsarrayโ€”TikTok post URLs or short links
postIdsarrayโ€”Bare numeric TikTok video IDs
profilesarrayโ€”Creator usernames or profile URLs
hashtagsarrayโ€”Hashtags with or without # (verified in results)
searchQueriesarrayโ€”Keyword or phrase searches
trendingboolfalseInclude current ranked trend videos
trendCountryenumUSCountry for Creative Center signals (13 supported)
deepDiscoverybooltrueFollow related public TikTok feeds for deeper results
maxDiscoveryQueriesint12Max public topic feeds scanned per list input (1โ€“30)
maxItemsint20Global result cap (0 = per-source safety limits)
dedupebooltrueSave each video ID only once
transcriptenumnevernever or native (TikTok captions)
transcriptLanguagestringโ€”Preferred code such as eng, rus, spa
shouldDownloadVideosboolfalseStore no-watermark MP4s to Apify
shouldDownloadCoversboolfalseStore cover images to Apify
shouldDownloadAvatarsboolfalseStore avatars + add authorAvatarStorageUrl
onlyNewerThanint0Skip posts at or before a Unix timestamp
maxConcurrencyint5Parallel video requests (1โ€“50)
maxRetriesint4Retries for a temporarily unavailable video (0โ€“10)
listMaxRetriesint4Retries for list/discovery requests (1โ€“10)
requestTimeoutSecsint25Max time for one network request (5โ€“120)
proxyConfigurationobjectApify ProxyConnection settings (default tuned for TikTok)

โญ Cooked something good with these recipes? A short review on the Apify Store helps others find the book โ€” and tells me which recipe to write next.

๐Ÿท๏ธ Tags: tiktok ยท tiktok scraper ยท video scraper ยท tiktok hashtag ยท tiktok profile ยท tiktok trends ยท social media ยท transcript ยท influencer research