TikTok Video Scraper — Creator Feeds avatar

TikTok Video Scraper — Creator Feeds

Pricing

from $3.00 / 1,000 video scrapeds

Go to Apify Store
TikTok Video Scraper — Creator Feeds

TikTok Video Scraper — Creator Feeds

Scrape any public TikTok creator's recent videos: views, likes, comments, shares, description, music, cover, and timestamps. Browser-signed, no login.

Pricing

from $3.00 / 1,000 video scrapeds

Rating

0.0

(0)

Developer

bootforge

bootforge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

TikTok Video Scraper

The TikTok Video Scraper is an Apify actor that extracts a public TikTok creator's recent videos by handle or profile URL — no login, no account, no cookies. It returns one structured record per video: description, timestamp, view/like/comment/share counts, duration, cover image, and TikTok's CDN video link. Optionally downloads each video's file too, so you get a link that actually plays outside TikTok.

Use it for creator research, content benchmarking, trend tracking, and social-media analytics — exported to JSON, CSV, or Excel.

How it works: this actor is browser-signed — it drives a real anti-detect browser (Camoufox) to obtain TikTok's request signature, so results are reliable but it is slower and pricier per unit than pure-HTTP scrapers. For profile identity and stats only (no videos), use the companion TikTok Profile Scraper.

Table of contents

What the TikTok video scraper does

  • 🔓 No login required — anonymous, browser-signed extraction; no TikTok account, password, or session cookie.
  • 🔗 Handle or URL input — accepts nasa, @nasa, or https://www.tiktok.com/@nasa.
  • 🎬 Recent-video feed per handle — description, timestamps, view/like/comment/share counts, duration, cover, and video URL, one row per video.
  • 🎚️ Configurable depthmax_videos caps how many recent videos to pull per handle (default 30, ~one feed page).
  • ⬇️ Optional playable download linkdownload_videos downloads each video's file and hosts it for you, so you get a download_url that plays anywhere (the raw video_url is TikTok's signed CDN link and only works from our scrape session).
  • 📊 Flat, join-ready output — every video row carries the parent creator's unique_id/sec_uid, so it joins cleanly across handles in CSV or a dataset.
  • 💵 Pay only for delivered videos — $0.003 per video; not-found, blocked, and errored handles are never charged. Video downloads are billed separately, per 10MB.

How to scrape TikTok videos

  1. Click Try for free and open the actor.
  2. Add one or more targets (handles or profile URLs).
  3. Set max_videos — how many recent videos to pull per handle.
  4. Optional: set max_profiles to cap how many handles to process.
  5. Keep the default US residential proxy prefill, then click Start.
  6. Export the data as JSON, CSV, or Excel, or pull it from the Apify API.

Scrape one creator's recent videos:

{
"targets": ["nasa"],
"max_videos": 30,
"proxy": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"}
}

Scrape several handles, capped:

{
"targets": ["nasa", "@natgeo", "https://www.tiktok.com/@bbcearth"],
"max_videos": 10,
"max_profiles": 2,
"proxy": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"}
}

Scrape with a playable download link per video:

{
"targets": ["nasa"],
"max_videos": 10,
"download_videos": true,
"proxy": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"}
}

TikTok video scraper input

FieldDescription
targetsHandles or profile URLs (nasa, @nasa, or https://www.tiktok.com/@nasa). Returns each creator's recent videos. Required.
max_videosHow many recent videos to fetch per handle (default 30, ~one feed page).
max_profilesOptional cap on how many handles from targets to process.
proxyProxy config. US residential required — TikTok blocks datacenter and non-US IPs. Prefilled with Apify RESIDENTIAL pinned to the US.
ms_tokenOptional reliability boost. Paste a fresh msToken cookie value from a logged-out tiktok.com session to warm-start the feed. Leave blank to let the browser mint its own; a stale token is ignored.
download_videosOptional, off by default. Downloads each video's file and adds a download_url you can play/download from anywhere. Adds a per-10MB charge (see pricing below).

TikTok video data output

Each delivered video is one flat dataset row, keyed by video_id and carrying the parent creator's unique_id/sec_uid. Sample (with download_videos: true):

{
"unique_id": "nasa",
"sec_uid": "MS4wLjABAAAA...",
"video_id": "7312345678901234567",
"description": "A new view of the Pillars of Creation from JWST.",
"create_time": 1751500800,
"play_count": 4200000,
"digg_count": 310000,
"comment_count": 5400,
"share_count": 22000,
"duration_sec": 34,
"cover_url": "https://p16-sign-va.tiktokcdn.com/...",
"video_url": "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/...&signature=...",
"download_url": "https://api.apify.com/v2/key-value-stores/abc123/records/7312345678901234567-tiktok-video",
"download_note": "download_url is a direct link to the video file... use download_url instead.",
"source": "item_list",
"scraped_at": "2026-07-07T00:00:00Z"
}
FieldDescription
unique_idParent creator handle the video belongs to.
sec_uidCreator's stable TikTok ID (joins rows across handles).
video_idUnique video ID.
descriptionVideo caption text.
create_timePost timestamp, Unix seconds.
play_countView count.
digg_countLike count.
comment_countComment count.
share_countShare count.
duration_secVideo length in seconds.
cover_urlThumbnail/cover image URL.
video_urlTikTok's raw, signed CDN link to the video file. Not directly playable outside our scrape session — it's signed against the proxy IP that fetched it and returns 403 from any other IP. Set download_videos: true for a link that actually plays.
download_urlOnly present when download_videos: true. A direct, playable download link (hosted in this run's Apify key-value store); its lifetime follows your Apify plan's data-retention setting.
download_noteOnly present when download_videos: true. Short explanation of the video_url vs download_url difference above.
sourceHow the row was obtained (e.g. item_list).
scraped_atISO timestamp of the scrape.

Handles that error out (not found, blocked, or fetch failure) contribute zero rows and are never charged.

How much it costs

This actor uses pay-per-event pricing — you pay for the videos you scrape, not for time.

EventUSD
Actor start (per GB memory)$0.0001
Video scraped$0.003
Video file, per 10MB (only with download_videos: true)$0.02
Typical run (default 2 GB)VideosCost
Single handle, 30 videos30~$0.0902
10 creators, 30 videos each300~$0.9002
100 creators, 10 videos each1,000~$3.0002
Single handle, 30 videos, download_videos: true (~5MB avg)30~$0.6902

You only pay for videos actually delivered. Handles that are not-found, blocked, or errored are not charged. The per-10MB video-file charge only applies when download_videos: true and only for videos successfully downloaded.

A US residential proxy is required — TikTok blocks datacenter IPs (like Apify's servers) and non-US exits. The proxy input prefills Apify's RESIDENTIAL group pinned to the US (apifyProxyCountry: "US"), and the scraper defaults any provider to a US exit unless you set a country, so the correct region is applied out of the box.

The actor supports Apify Proxy and external providers (Bright Data, Oxylabs, SmartProxy, or any raw proxy URL). If you run your own scrapers — inside or outside Apify — and need reliable residential IPs for TikTok, social, or e-commerce sites, we use and recommend DataImpulse (pay-as-you-go, per-country targeting, no monthly minimum):

👉 Get DataImpulse residential proxies (referral link)

// Apify managed proxy (easiest)
{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"}
// Bright Data
{"provider": "brightdata", "username": "YOUR_USER", "password": "YOUR_PASS", "zone": "residential", "country": "US"}
// Oxylabs
{"provider": "oxylabs", "username": "YOUR_USER", "password": "YOUR_PASS", "proxy_type": "residential", "country": "US"}
// Any proxy URL
{"provider": "raw_urls", "urls": ["http://user:pass@proxy.example.com:8080"]}

Why this TikTok video scraper

  • No login, no cookies — anonymous extraction of publicly visible video data; nothing from your TikTok account is used.
  • Browser-signed reliability — drives a real anti-detect browser (Camoufox) to produce TikTok's signed item_list request, without reverse-engineering the signer.
  • Flat, join-ready rows — one row per video, each stamped with the parent creator's unique_id/sec_uid for clean cross-handle joins in CSV.
  • Honest billing — pay only for delivered videos; not-found, blocked, and errored handles never produce rows and are never charged. If every handle fails, the run raises instead of a silent zero-result success.
  • Open source — the underlying tiktok-scraper Python package ships a Typer CLI and a FastAPI server; the Apify wrapper is a thin layer.

FAQ

Do I need a TikTok account or login? No. The actor extracts only publicly visible video data anonymously — no account, password, or session cookie. It reads the same recent-video feed a logged-out visitor sees on a creator's profile page.

Do I need a proxy? Yes — a US residential proxy is required. TikTok blocks requests from datacenter IPs (like Apify's servers) and from non-US exits. The proxy input prefills the easiest option: Apify RESIDENTIAL pinned to US, so it works out of the box.

Which proxies work best for TikTok? Residential IPs with per-country targeting, pinned to the US. Apify's RESIDENTIAL group works by default; for your own scrapers we recommend DataImpulse residential proxies (referral link) — pay-as-you-go with per-country targeting.

Why does this actor need a browser? The profile actor doesn't. TikTok's video feed (item_list) requires a signed request that only a real browser session produces reliably. This actor drives an anti-detect browser (Camoufox) to capture that signed response, which is why it needs more memory and runs slower per handle than the HTTP-only profile actor. The optional msToken input can warm-start the feed on flaky IPs.

How deep does it go — full history or just recent? Recent videos only, up to max_videos per handle (default 30, ~one feed page). It is not a full video-history crawler.

Is scraping TikTok legal? This actor collects only publicly available video data. You are responsible for complying with TikTok's terms and applicable laws. Do not collect personal data without a lawful basis.

Why doesn't video_url play in my browser or media player? video_url is TikTok's raw CDN link, signed against the specific proxy IP that fetched it — it returns 403 Forbidden from any other IP, regardless of headers, and isn't meant to be opened directly. Set download_videos: true to get a download_url that actually plays anywhere (see pricing above for the added cost).

Rate this actor ⭐

If the TikTok Video Scraper saved you time, please leave a review on its Apify Store page — ratings help other people find it and tell us what to build next. Hit a bug or missing field? Open an issue or contact us through the actor's Issues tab and we'll fix it fast — recency and reliability are what keep this actor ranking.

Building a broader social or lead pipeline? Pair this actor with our other scrapers — same proxy config format, same Pydantic-validated output, all open source.

  • TikTok Profile Scraper — public TikTok profile identity and stats (nickname, bio, avatar, follower/following/heart/video counts). No login, HTTP-only, cheaper per unit.
  • TikTok Shop Product Scraper — scrape TikTok Shop products across 10 regions (US, GB, VN, TH, PH, MY, SG, JP, MX, BR): variants, prices, seller info, ratings, sold counts.
  • Instagram Profile Scraper — public Instagram profiles: bio, followers, recent posts. No login.
  • Google Maps Business & Contact Scraper — extract business leads with emails, phone numbers, reviews, images, and social links.