TikTok Video Scraper - Stats, Transcript & Download by URL avatar

TikTok Video Scraper - Stats, Transcript & Download by URL

Pricing

from $1.40 / 1,000 video scrapeds

Go to Apify Store
TikTok Video Scraper - Stats, Transcript & Download by URL

TikTok Video Scraper - Stats, Transcript & Download by URL

Scrape TikTok videos and photo posts from a list of URLs, short links or ids: plays, likes, comments, shares, saves, engagement rate, publish date, author stats, sound, every video quality, download links, subtitles and transcript. Monitor mode re-checks the same posts, returns only changed counts.

Pricing

from $1.40 / 1,000 video scrapeds

Rating

0.0

(0)

Developer

Top Api

Top Api

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

What does TikTok Video Scraper do?

TikTok Video Scraper extracts TikTok videos from tiktok.com and turns a list of post links into structured rows: one video or photo post per row with its plays, likes, comments, shares, saves, publish date, author stats, sound, every video quality TikTok encodes, subtitle files and an optional transcript. Built for social-media analysts, influencer-marketing teams, brand and campaign monitors and research pipelines that already know which TikTok videos they care about and need the numbers behind them, refreshed on a schedule, without opening the app.

TikTok Video Scraper - TikTok Video Details API - TikTok URL Scraper - TikTok Video Stats Scraper - TikTok Video Downloader

TikTok video page with its play, like, comment, save and share counts that TikTok Video Scraper turns into a row

  • Any link shape you copied: canonical tiktok.com/@user/video/<id> and /photo/<id> URLs, vm.tiktok.com / vt.tiktok.com / tiktok.com/t/ short links, m.tiktok.com/v/<id>.html mobile links, embed/v2/<id> embeds, share links and bare numeric ids, mixed in one list. Duplicates are fetched once.
  • Every number the post shows: plays, likes, comments, shares, saves and reposts, a computed engagementRate, exact createTimeISO, duration, resolution, the country the post was made in and TikTok's own content labels.
  • The author on every row: username, nickname, verified badge, bio, followers, following, total likes, video count and account creation date.
  • Files, not just links: every encoding TikTok lists (videoQualityLadder with bitrate, codec, size and URLs), all cover images, the subtitle files per language, and the downloadCookie that makes TikTok's signed media URL fetchable from anywhere. The download add-on stores the MP4 or the photo-post images in a key-value store for you.
  • Transcript add-on: the spoken text from TikTok's own caption files (creator captions or TikTok's speech recognition), no AI cost. On the 25-post test run, 18 posts had a caption file and all 18 came back with a transcript.
  • Monitor mode for schedules: re-run the same list hourly or daily and get only posts that are new or whose counts moved; each delivered row carries previousStats, statsDelta and isNew.
  • Filters: date window, minimum plays, videos-only or photo-posts-only, subtitles-only, exclude ads and paid partnerships.
  • No login, cookies or TikTok API key: paste links and nothing else. Export as JSON, CSV, Excel, XML or RSS; schedules, webhooks, Make, Zapier, n8n, Google Sheets, Slack; Apify API and MCP server, with a compact mode for AI agents.

What data can you get from a TikTok video?

๐Ÿ†” Post id, canonical URL and the URL your link resolved to (`id`, `webVideoUrl`, `resolvedUrl`)๐Ÿ“ Caption and its language (`text`, `textLanguage`)๐Ÿ“… Publish time (`createTime`, `createTimeISO`) and country (`locationCreated`)
โ–ถ๏ธ Plays (`playCount`)โค๏ธ Likes (`diggCount`)๐Ÿ’ฌ Comments (`commentCount`)
๐Ÿ” Shares and reposts (`shareCount`, `repostCount`)๐Ÿ”– Saves (`collectCount`)๐Ÿ“ˆ Engagement rate (`engagementRate`, percent of plays)
๐Ÿ‘ค Author: username, nickname, verified, bio, avatar, account created (`authorMeta`)๐Ÿ‘ฅ Author stats: followers, following, total likes, videos (`authorMeta.fans`, `.heart`, `.video`)๐ŸŽต Sound: name, artist, original flag, sound id, duration, play URL (`musicMeta`)
๐ŸŽฌ Video: duration, width, height, definition, format, bitrate, codec, file size, play and download URLs (`videoMeta`)๐Ÿชœ Every encoding TikTok lists: gear, bitrate, codec, resolution, bytes, URLs (`videoQualityLadder`)๐Ÿ–ผ๏ธ All cover and thumbnail URLs (`coverUrls`), photo-post images (`slideshowImageLinks`)
๐Ÿ”ค Subtitle files per language (`videoMeta.subtitleLinks`) and the transcript text (`transcript`, add-on)#๏ธโƒฃ Hashtags with ids (`hashtags`), mentions (`mentions`, `detailedMentions`), TikTok's search keywords for the post (`suggestedWords`)๐Ÿ“ Tagged place (`poi`, `locationMeta`)
๐Ÿ“ข Ad and paid-partnership flags (`isAd`, `isSponsored`)๐Ÿท๏ธ Content category labels (`diversificationLabels`, `categoryType`), AI-generated label (`isAIGC`)โš™๏ธ Duet, stitch, share and comment settings; on-screen text stickers (`textStickers`)
โฌ‡๏ธ Stored file from the download add-on (`mediaFile`: URL, bytes, image count)๐Ÿ” Monitor mode: `previousStats`, `statsDelta`, `isNew`, `previousScrapedAt`๐Ÿšฆ `status` on every row: ok, not_found, private, removed, restricted, unavailable

On a 25-post run on the Apify platform (23 videos and 2 photo posts from 17 creators) every row had the id, caption, publish time, country, all six counts, the engagement rate, the author's name and stats, the sound and the cover image; 23 of 25 (the videos) carried the file links, quality ladder and resolution; 18 of 25 carried a subtitle file and all 18 a transcript; 11 had hashtags, 13 mentions, 10 TikTok search keywords, 6 were ads or paid partnerships and 4 had a tagged place.

How to scrape TikTok videos with TikTok Video Scraper

  1. Create a free Apify account - $5 of monthly credit, no card needed.
  2. Open TikTok Video Scraper and click Try for free.
  3. Paste your links into Video URLs or ids, one per line, and tick Include transcript or Download the video files if you want them.
  4. Click Start. Rows stream into the dataset as each page is read; 25 posts take about 20 seconds without downloads.
  5. Open the Storage tab and Export as JSON, CSV or Excel - or save the input as a task, switch on Deliver only new posts and changed counts, and let a schedule run it for you.

โฌ‡๏ธ Input

ParameterTypeDescription
๐Ÿ” What to scrape
postURLsListPost links or ids, one per line: https://www.tiktok.com/@zachking/video/7095025543627705643, https://vt.tiktok.com/ZSjSKrdXn/, 7172183875538488582, https://www.tiktok.com/@tiktok/photo/7666214645006421278, https://m.tiktok.com/v/<id>.html, https://www.tiktok.com/embed/v2/<id>. Profiles, hashtags and search URLs are reported as invalid (they belong to TopApi/tiktok-scraper)
โœ‚๏ธ Refine results
postedAfterStringOnly posts published after: 2026-09-01, 7 days, 3 weeks, or a day count (1 = today)
postedBeforeStringOnly posts published before: 2026-06-30, 30 days
minPlaysIntegerMinimum plays, e.g. 100000. Default 0
postTypeSelectall, video (skip photo slideshows) or photo (slideshows only). Default all
onlyWithSubtitlesBooleanKeep only posts that have a TikTok caption file. Default false
excludeAdsBooleanSkip ads and paid partnerships (isAd, isSponsored). Default false
โž• Extra data
includeTranscriptBooleanAdds transcript, transcriptLanguage, transcriptSource from TikTok's caption file - charged as the transcript event only for posts that receive one. Default false
downloadVideosBooleanStores the MP4 (or a photo post's images) in a key-value store and puts the file URL in mediaFile and videoMeta.downloadAddr - charged as the video-downloaded event only for posts whose file was stored. Default false
mediaStoreNameStringNamed key-value store for the files, e.g. tiktok-videos (keeps them past the run's data retention). Empty = the run's own store
includeUnavailableBooleanWrite a row (status, errorCode, error, input) for private, removed, restricted and not-found posts so a bulk list comes back complete. Default false
๐Ÿ” Monitoring
monitorModeBooleanDeliver only posts that are new to the store or whose counts changed; rows carry previousStats, statsDelta, isNew. Pair with a schedule. Default false
monitorStoreNameStringKey-value store that keeps the per-post memory. Default tiktok-video-monitor
๐Ÿ“ฆ Output
maxItemsIntegerStop after this many delivered posts. 0 = every link in the list. Default 0
compactBooleanCore fields only (id, status, text, date, URL, author, counts, engagement rate, duration, hashtags, sound, cover, transcript and statsDelta when requested), sized for AI agents and MCP. Default false
โš™๏ธ Advanced
proxyConfigurationProxyThe fallback egress. Pages are first fetched from Apify's own IPs (measured 3x faster); the first wall switches the run to this proxy. Default: Apify Proxy, datacenter group
maxConcurrencyIntegerPosts fetched in parallel, 1-10. Default 5

Input JSON

{
"postURLs": [
"https://www.tiktok.com/@zachking/video/7095025543627705643",
"https://vt.tiktok.com/ZSjSKrdXn/",
"7172183875538488582"
],
"includeTranscript": true,
"excludeAds": true,
"monitorMode": true,
"monitorStoreName": "campaign-q4"
}

This actor reads one post per line. Do: https://www.tiktok.com/@zachking/video/7095025543627705643 or 7095025543627705643 ยท Don't: https://www.tiktok.com/@zachking (a profile - the run lists it as invalid and points you to TopApi/tiktok-scraper, which walks a creator's videos). A /photo/ link works exactly like a /video/ link.

vm.tiktok.com, vt.tiktok.com and tiktok.com/t/ codes are resolved by following TikTok's redirects. A code that leads to the TikTok home page instead of a post (expired or removed) comes back as not_found with errorCode: SHORT_LINK_DEAD - only when includeUnavailable is on.

Monitor TikTok video stats with a named store per campaign

With monitorMode on, the first run delivers every post with isNew: true and remembers its six counts under monitorStoreName. Every later run re-reads the same links and delivers only the posts whose counts moved, with statsDelta showing the change and previousScrapedAt the last check. Give each client or campaign its own monitorStoreName, otherwise one list hides changes from another.

โฌ†๏ธ Output

Every TikTok post becomes one dataset item. Here is the table view of a platform run (23 video and 2 photo links, transcript and download add-ons on):

TikTok Video Scraper output table with plays, likes, comments, shares, saves, engagement rate, transcript and stored file per video

And one row as JSON (long URL fields shortened):

{
"id": "7650573331304860958",
"status": "ok",
"text": "itโ€™s not every day your favorite #MusicTok and #FilmTok corners collide. watch @Lykke Li unpack her David Lynch collab...",
"textLanguage": "en",
"createTimeISO": "2026-06-12T18:12:17.000Z",
"locationCreated": "US",
"isAd": true, "isSponsored": true, "isSlideshow": false,
"authorMeta": { "name": "tiktok", "nickName": "TikTok", "verified": true, "fans": 96000000, "heart": 464900000, "video": 1509, "createTimeISO": "2015-02-28T17:22:29.000Z", "profileUrl": "https://www.tiktok.com/@tiktok" },
"musicMeta": { "musicName": "original sound", "musicAuthor": "TikTok", "musicOriginal": true, "musicId": "7650573341283126047", "duration": 71 },
"webVideoUrl": "https://www.tiktok.com/@tiktok/video/7650573331304860958",
"videoMeta": { "height": 1280, "width": 720, "duration": 71, "definition": "720p", "format": "mp4", "bitrate": 628434, "codecType": "h264", "size": 5579713, "coverUrl": "https://p16-common-sign.tiktokcdn-us.com/...", "downloadAddr": "https://api.apify.com/v2/key-value-stores/.../records/7650573331304860958.mp4", "originalDownloadAddr": "https://v16-webapp-prime.us.tiktok.com/...", "downloadCookie": "ttwid=...; tt_csrf_token=...; tt_chain_token=...", "subtitleLinks": [{ "language": "eng-US", "source": "ASR", "downloadLink": "https://v16-webapp.tiktokcdn-eu.com/..." }] },
"videoQualityLadder": [{ "gear": "normal_720_0", "bitrate": 628434, "codec": "h264", "width": 720, "height": 1280, "sizeBytes": 5579713, "urls": ["..."] }],
"playCount": 27500000, "diggCount": 133600, "commentCount": 2663, "shareCount": 567, "collectCount": 9679, "repostCount": 0,
"engagementRate": 0.53,
"hashtags": [{ "id": "1598392089630725", "name": "musictok", "title": "Music on TikTok." }, { "id": "1639367069624326", "name": "filmtok", "title": "Celebrate the world of cinema with TikTok." }],
"mentions": ["@lykkeli", "@tmobile"],
"diversificationLabels": ["Celebrity Clips & Variety Show", "Entertainment Culture", "Entertainment"],
"transcript": "You've collaborated with an amazing list of artists.\nWhich one of those calls was the most surprising to get?\nDavid Lynch...",
"transcriptLanguage": "eng-US", "transcriptSource": "automatic speech recognition",
"mediaFile": { "url": "https://api.apify.com/v2/key-value-stores/.../records/7650573331304860958.mp4", "bytes": 4847592, "contentType": "video/mp4" },
"submittedVideoUrl": "https://www.tiktok.com/@tiktok/video/7650573331304860958"
}

Fields

FieldTypeWhat it isFill on the 25-post platform run
id, webVideoUrl, resolvedUrl, submittedVideoUrl, inputstringPost id, canonical URL (/photo/ for slideshows), the URL the input resolved to, the input line100%
statusstringok on delivered rows; not_found, private, removed, restricted, unavailable, invalid on the status rows100%
text, textLanguage, createTime, createTimeISO, locationCreatedstring, integerCaption, its language, publish time (Unix and ISO 8601), country code the post was created in100%
playCount, diggCount, commentCount, shareCount, collectCount, repostCountintegerPlays, likes, comments, shares, saves, reposts100%
engagementRatenumber(likes + comments + shares + saves) / plays, in percent100%
authorMetaobjectid, name, nickName, profileUrl, verified, signature, avatar, secUid, privateAccount, createTime, createTimeISO, downloadSetting, following, friends, fans, heart, video, digg (bioLink, region, ttSeller, commerceUserInfo when TikTok prints them on the video page)100% (verified 56%)
musicMetaobjectmusicName, musicAuthor, musicOriginal, musicAlbum, musicId, duration, playUrl, coverMediumUrl, isCopyrighted, isCommerceMusic100% (artist and cover 92%)
videoMetaobjectheight, width, duration, ratio, coverUrl, originalCoverUrl, dynamicCoverUrl, definition, format, bitrate, codecType, size, videoQuality, vqScore, loudness, peak, playAddr, downloadAddr, originalDownloadAddr, downloadCookie, subtitleLinks[], captionInfo100% (file links and resolution 92% = every video; photo posts have no video file)
durationSecintegerVideo length in seconds, 0 for photo posts100%
videoQualityLadderarrayEvery encoding TikTok lists: gear, qualityType, bitrate, codec, width, height, sizeBytes, urls[], largest first (2-5 per video)92%
coverUrlsarrayEvery static, animated and zoom-size cover URL (6-7 per video)100%
mediaUrlsarrayTikTok's signed download and play URLs (fetch them with videoMeta.downloadCookie as the Cookie header)92%
hashtags, mentions, detailedMentions, suggestedWordsarrayHashtags with ids and descriptions; mentioned accounts with id and profile URL; the search keywords TikTok attaches to the post44% / 52% / 52% / 40%
isSlideshow, slideshowImageLinksboolean, arrayPhoto posts and their images with width and height2 of 25
isAd, isSponsoredbooleanTikTok's ad flag and paid-partnership flag6 of 25 flagged
poi, locationMetaobjectThe tagged place (id, name, address, city, country, category), also in the locationMeta shape other TikTok scrapers use16%
subtitleLanguages, transcript, transcriptLanguage, transcriptSourcearray, stringCaption languages; the transcript text (add-on) with its language and source (creator caption, speech recognition, machine translation)72%
mediaFileobjectDownload add-on: kvStoreId, key, url, bytes, contentType, imageCount (and urls[] for photo posts)100% with the add-on on
diversificationLabels, categoryType, isAIGC, aigcLabelarray, integer, boolean, stringTikTok's content category labels and the AI-generated-content label88% / 100% / 0 of 25 labelled
duetEnabled, stitchEnabled, shareEnabled, commentsDisabled, playlistIdboolean, stringInteraction settings and the playlist the post sits in88% / 88% / 100% / 100% / 12%
textStickers, effectStickersarrayOn-screen text stickers; effects used20% / 0 of 25
previousStats, previousScrapedAt, statsDelta, isNewobject, string, booleanMonitor mode only: the counts stored by the previous run, when, the difference, and whether the post is new to the storemonitor runs
errorCode, error, urlstringStatus rows only: POST_NOT_FOUND, POST_PRIVATE, POST_REMOVED, POST_RESTRICTED, POST_UNAVAILABLE, SHORT_LINK_DEAD, FETCH_BLOCKED, INVALID_URL and TikTok's messagestatus rows

Not on this surface, so not shipped: isPinned, attached links (anchors) and the TikTok Shop flag are properties of a creator's feed, and TikTok's video page carried none of them on the 34 posts captured for this build; TopApi/tiktok-scraper delivers them from profile and hashtag feeds. Related videos and comments are separate products.

How can I use TikTok video data?

  • ๐Ÿ“Š Campaign and sponsorship reporting - paste the 40 creator posts of a campaign, run daily with monitorMode, and chart statsDelta.playCount per post in Google Sheets.
  • ๐ŸŽฏ Influencer vetting - check a creator's last five posts you were sent: engagementRate, authorMeta.fans, isSponsored and whether transcript matches the brief.
  • ๐Ÿ”Ž Social listening - feed text, hashtags, suggestedWords and transcript of the posts your team collects into a classifier or an LLM; compact keeps a thousand posts inside a context window.
  • ๐Ÿ—‚๏ธ Archiving and evidence - switch on downloadVideos with a named mediaStoreName to keep the MP4 and the counts as they were on a given day.
  • ๐ŸŽฌ Media and trend research - compare duration, videoQualityLadder, diversificationLabels and musicMeta across the posts of a trend.
  • ๐Ÿค– AI agents - an agent that is handed a TikTok link calls the actor through MCP and answers with the caption, counts and transcript.

How much does it cost to scrape TikTok videos?

TikTok Video Scraper is pay-per-result: $1.40 per 1,000 videos, no start fee (the Pricing tab always shows the live rate). The transcript add-on is $1.00 per 1,000 posts that receive one, the download add-on $1.20 per 1,000 posts whose file was stored.

VideosCostWith transcriptsWith transcripts and files
10$0.014$0.024$0.036
100$0.14$0.24$0.36
1,000$1.40$2.40$3.60
10,000$14.00$24.00$36.00

There is nothing else to pay: Apify platform usage (compute, storage, transfer) is included in these prices. Measured on the platform on 2026-10-03 with the default 256 MB: 2 posts in 5.7 seconds; 25 posts with 18 transcripts and 25 stored files (255 MB of video) in 315 seconds (most of it storing the files); without downloads a page takes 0.5-1.5 seconds and 5 are read in parallel.

Integrations, API, scheduling & MCP

  • Schedules: run TikTok Video Scraper hourly, daily or weekly from the Schedules tab; combine with monitorMode so each run returns only the posts whose counts moved.
  • Webhooks: fire a URL when a run finishes - push rows to your CRM, Slack or a sheet.
  • No-code: Make, Zapier, n8n, Google Sheets, Airtable, Slack via Apify integrations.
  • API: call it from Node.js or Python with apify-client - code on the API tab and the Apify API reference.
  • MCP / AI agents: connect Claude, Cursor or any MCP client through the MCP tab and ask for the details of a TikTok video in plain language; switch on compact to keep the answer small.

More TikTok video and social scrapers from TopApi

๐ŸŽต TikTok Scraper - a creator's videos, a hashtag feed or a search, when you do not have the links yet๐ŸŽฌ TikTok Video Scraper - this actor: full detail of the posts you already have links for๐Ÿ“ธ Instagram Scraper - posts, reels and profiles
๐Ÿ“˜ Facebook Search Posts Scraper - public posts by keywordโญ Google Maps Reviews Scraper - every review of a place with owner replies๐Ÿ’ผ Indeed Jobs Scraper - job postings by keyword and location
๐Ÿงญ All TopApi social-media and lead-gen actors

TikTok video limits & empty runs

  • One page per post, no per-run ceiling: every link is its own fetch, so a list of 5,000 links is 5,000 pages; at the default 5 parallel fetches that is roughly 20-30 minutes without downloads. Raise maxConcurrency to 10 for big lists.
  • Anti-bot interstitials: about 1 request in 10 is answered with TikTok's "Please wait" page; the actor retries on a fresh proxy session up to three times per post. A post that is still blocked after that is reported as blocked in the run summary (and as a status row with includeUnavailable).
  • Downloads are slow by nature: a 10 MB video takes about 12 seconds to fetch and store on 256 MB; two files are stored at a time. Files larger than about 30% of the run's memory (76 MB at 256 MB, 153 MB at 512 MB) are skipped - give long videos more memory.
  • Media URLs expire after a few hours and downloadCookie with them; mediaFile.url from the download add-on is permanent for as long as the key-value store exists.
  • Empty dataset: means every link was private, removed or invalid, your filters removed everything, or monitor mode found no changes - the status message names which.
  • Not available: comments and related videos (separate products), the pinned flag and attached links (feed properties), an author's email or phone (TikTok publishes none), view history over time (each run is a snapshot; monitor mode keeps the last one).

FAQ

How many TikTok videos can TikTok Video Scraper collect in one run?

As many links as you paste: there is no TikTok-side ceiling, because every post is its own page. On the platform 25 posts with transcripts and downloads took 315 seconds and 2 posts without add-ons 5.7 seconds; a list of a few thousand links fits one run with the default one-hour timeout.

Can I run TikTok Video Scraper on a schedule to track TikTok video stats automatically?

Yes. Save your input as a task, open Schedules, pick the cadence, and switch on monitorMode. Each run re-reads the same links and delivers only the posts whose plays, likes, comments, shares, saves or reposts moved, with statsDelta on the row. A run that finds no change delivers nothing.

Can I integrate TikTok Video Scraper with other apps?

Yes - Make, Zapier, n8n, Google Sheets, Slack and more via Apify integrations, or use webhooks to trigger an action when a run finishes.

Can I use TikTok Video Scraper with the Apify API?

Yes. The API lets you start runs, fetch datasets and manage schedules. Use apify-client for Node.js or Python; the API tab has ready-to-paste code.

Can I use TikTok Video Scraper through an MCP server?

Yes. Open the MCP tab, connect your MCP client (Claude Desktop, Cursor, LibreChat...), hand it a TikTok link and ask for the counts or the transcript in plain language. Set compact: true so a batch of posts fits the model's context.

Do I need a TikTok account, cookies or an API key?

No. TikTok Video Scraper reads only what TikTok shows a signed-out visitor on the video page; you pass links or ids and nothing else. The downloadCookie on each row is a visitor cookie TikTok handed the run, included so the signed media URL works from your own machine.

Why did my run return no TikTok videos?

In order of frequency on test runs: (1) the links were profiles, hashtags or search pages rather than posts - they are listed as invalid in the log and the run summary; (2) the posts are private, removed or restricted - switch on includeUnavailable to get a status row for each; (3) your filters removed everything - the run summary lists how many posts were read and why they were dropped; (4) monitorMode found no count changes since the last run; (5) TikTok answered every fetch with its interstitial after three fresh sessions - retry in a few minutes.

Does TikTok Video Scraper download the video files?

Yes, with downloadVideos: true: the MP4 (or every image of a photo post) is stored in the run's key-value store or in the named mediaStoreName, and the row carries mediaFile with the stored URL and size. Without the add-on you still get TikTok's own signed URLs plus the downloadCookie that makes them fetchable from anywhere for a few hours.

Can TikTok Video Scraper give me the transcript of a TikTok video?

Yes, with includeTranscript: true: it fetches TikTok's own caption file (the creator's captions or TikTok's automatic speech recognition) and delivers the plain text in transcript, with the language and source. Videos without a caption file return null; on the test run 18 of 25 posts had one.

Yes. vm.tiktok.com, vt.tiktok.com and tiktok.com/t/ links are resolved first (the resolved URL is on the row), and /photo/ posts come back as the same row shape with isSlideshow: true, their images in slideshowImageLinks and a duration of 0.

How is TikTok Video Scraper different from other TikTok video scrapers?

It delivers the same post fields as the lane's leading TikTok Video Scraper plus engagementRate, the full videoQualityLadder, every cover URL, the author's account age, TikTok's search keywords and content labels, the transcript text from TikTok's own captions, and a downloadCookie that makes the media URLs usable off-platform; it filters by date, plays, type, subtitles and ads, adds no start fee, resolves short links, and ships a monitor mode that returns only changed counts. On the 25-post test run every delivered row carried all six counts and the author's stats.

TikTok Video Scraper extracts only publicly available TikTok posts; it does not log in or collect private data. Results may still contain personal data (creator names, captions), which is regulated by laws such as GDPR. Make sure you have a legitimate purpose before you use it.

Your feedback

We keep improving TikTok Video Scraper. Found a bug or missing a field? Open an issue on the Issues tab - we answer within two working days.