TikTok Video Scraper avatar

TikTok Video Scraper

Pricing

from $1.30 / 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.30 / 1,000 results

Rating

0.0

(0)

Developer

Kelopr_bk

Kelopr_bk

Maintained by Community

Actor stats

0

Bookmarked

24

Total users

13

Monthly active users

11 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": 3
}

What comes back: the creator's authoritative recent posts. Enable deepDiscovery when you explicitly need the Actor to expand through the creator's own public topics beyond 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.

To keep transfer, memory, and your bill predictable, the Actor streams downloads and skips oversized files: videos above 4 MB, images above 1 MB, and native subtitle files above 2 MB. The metadata row is still returned even when an optional file is too large.


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

  • maxItems is one global cap for the whole run across every source (1โ€“500). Discovery, retries, and detail requests also stop at hard cost-protection budgets tied to this cap.
  • Expensive fan-out is opt-in and bounded. Deep discovery is off by default, list inputs run in order instead of all at once, and oversized media is skipped before it can exhaust transfer or memory.
  • Duplicate inputs are free to skip. Repeated URLs, bare IDs pointing to the same post, and repeated list inputs are removed before any TikTok request is sent.
  • Every run has a three-minute cost deadline. Results are streamed to the dataset as soon as they are ready; if the deadline is reached, already-saved rows remain available and the run stops cleanly.
  • 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)
deepDiscoveryboolfalseFollow related public TikTok feeds for deeper results
maxDiscoveryQueriesint3Max public topic feeds scanned per list input (1โ€“6)
maxItemsint20Global result cap (1โ€“500)
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
maxConcurrencyint8Parallel video requests (1โ€“15)
maxRetriesint2Retries for a temporarily unavailable video (0โ€“2)
listMaxRetriesint2Retries for list/discovery requests (1โ€“2)
requestTimeoutSecsint25Max time for one network request (5โ€“45)
proxyConfigurationobjectApify ProxyDatacenter by default; custom proxy URLs supported

โญ 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