TikTok Media Downloader
Pricing
from $15.00 / 1,000 media downloadeds
TikTok Media Downloader
This powerful tool enables the seamless downloading of premium quality TikTok content. Extract videos with or without watermarks and save audio tracks separately with just a few clicks. Perfect for content creators, marketers, and researchers who need reliable TikTok media extraction.
Pricing
from $15.00 / 1,000 media downloadeds
Rating
5.0
(1)
Developer
Web Harvester
Maintained by CommunityActor stats
2
Bookmarked
35
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
Apify Actor that downloads video or audio from TikTok post URLs. Media is resolved via upstream services, downloaded through Apify Proxy, and stored in the default key-value store with a per-URL dataset report.
Features
- Download TikTok videos in the highest available quality
- Optional watermark-free video only (
noWatermarkOnly) - Audio-only or video-only download modes
- Automatic fallback when the primary source cannot satisfy the request
- Proxy rotation on stalled or slow downloads
- In-run deduplication for duplicate input URLs
- Per-URL dataset rows for downloaded, skipped, and failed outcomes
Input Parameters
Required
-
startUrls(array) — TikTok post URLs to process.[{ "url": "https://www.tiktok.com/@mysticwild/video/7435475440392850721" }] -
downloadType(string) — What to download:"video"— video only (default)"audio"— audio only"videoOrAudio"— video when available, otherwise audio
-
proxyConfiguration(object) — Proxy settings. Apify Proxy (datacenter) is enabled by default; switch to residential in the proxy editor if you see a rise in blocked/empty CDN responses.
Optional
| Field | Type | Default | Description |
|---|---|---|---|
noWatermarkOnly | boolean | false | Skip posts that have no watermark-free video |
downloadTimeoutSecs | integer | 500 | Per-request CDN download timeout |
stallTimeoutSecs | integer | 30 | Abort and retry if no bytes arrive for this long |
slowDownloadTimeoutSecs | integer | 120 | Abort and retry if the whole download exceeds this; 0 disables |
maxRequestRetries | integer | 25 | Crawlee retry count per URL |
maxConcurrency | integer | 5 | Parallel downloads (1–15) |
verboseProgress | boolean | false | Log per-chunk download progress |
Output
Every input URL produces one dataset row.
Downloaded
{"sourceUrl": "https://www.tiktok.com/@mysticwild/video/7435475440392850721","status": "downloaded","statusNote": null,"quality": "HD Original","type": "MP4","timestamp": "2025-03-16T01:08:56.082Z","filename": "a076ba86-10e4-476b-b17e-b63caf0071b3.mp4","fileUrl": "https://api.apify.com/v2/key-value-stores/[store-id]/records/[filename]","fileSize": 9876543,"fileSizeFormatted": "9.4 MB","fileType": "video"}
status—downloaded,skipped, orfailedstatusNote— reason when skipped or failed;nullon successfileType—videooraudiofileSize— exact size in bytesfileSizeFormatted— human-readable size for display (e.g.9.4 MB)filename/fileUrl— present only whenstatusisdownloaded
Skipped or failed
{"sourceUrl": "https://www.tiktok.com/@mysticwild/video/7435475440392850721","status": "skipped","statusNote": "no watermark-free video available (all sources tried)","timestamp": "2025-03-16T01:08:56.082Z"}
Media files live in the default key-value store and are linked from fileUrl.
Usage
- Create a task on Apify and add TikTok post URLs to
startUrls. - Set
downloadTypeandproxyConfiguration(Apify Proxy is enabled by default). - Run the Actor and filter the dataset by
status.
Pricing
This Actor uses Apify's Pay Per Event pricing:
| Event | Price | When it's charged |
|---|---|---|
| Actor start | Apify's standard synthetic event price | Once per run start (covers the first few seconds of compute) |
| Media download | $15.00 per 1,000 ($0.015 each) | Once per successfully downloaded file — never for skipped or failed URLs |
You only pay for files you actually receive; duplicate, unavailable, or failed URLs are reported in the dataset for free. Set ACTOR_MAX_TOTAL_CHARGE_USD (or the Console's max cost per run) to cap spend — the run stops gracefully once the limit is reached.
Best Practices
- Proxies — Apify Proxy (datacenter) is used by default and is included for most requests; switch to residential in
proxyConfigurationif you notice more blocked/empty CDN responses. - Download type — Default
videois appropriate for most runs; useaudioorvideoOrAudiowhen needed. - Concurrency — Keep
maxConcurrencymoderate (default5); each download buffers the full file in memory. - Timeouts — Raise
downloadTimeoutSecsfor large files; tunestallTimeoutSecs/slowDownloadTimeoutSecsif proxies are slow. - URLs — Use direct TikTok post links (
tiktok.com,vm.tiktok.com,vt.tiktok.com).
Development
npm installnpm testnpm run start:dev
Live integration tests (network required):
$RUN_LIVE_TESTS=1 npm run test:live
