TikTok Video Downloader - MP4 or MP3
Pricing
from $0.97 / 1,000 megabytes
TikTok Video Downloader - MP4 or MP3
Download public TikTok videos as MP4, or just their sound as MP3, from video links. No login, no cookies. Each file is stored in the run with a direct link, and its row holds the file's size, length and resolution. A link that fails is not charged. $1.00 per 1,000 MB delivered ($0.001 per MB).
Pricing
from $0.97 / 1,000 megabytes
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Download public TikTok videos as MP4 files, or their sound as MP3: paste video links and get each one back as a real file, stored in the run with a direct link you can hand to a browser, a script or the next step of a workflow.
The honest part first. This pulls the copy TikTok serves for playback, so most videos arrive without a logo, but an uploader who burned the TikTok watermark into their own video is stuck with it and nothing here can take it out. Photo posts, slideshows, profiles, sounds, hashtags and live streams are not videos this can download, and some posts TikTok only serves in certain countries.
| Input | Links to single public TikTok videos |
| Output | One MP4, or a 128 kbit/s MP3, per link in the run's storage, plus a row per file with its direct link, size, length and resolution |
| Ceiling | 500 MB per video by default, up to 4,000, and about 716 MB of files per run at the default memory |
| Speed | Roughly 2 to 8 seconds per short video on measured runs, plus the run's start |
| Account needed | None, and no cookies |
| Price | $1.00 per 1,000 MB delivered, which is $0.001 a megabyte, flat on every plan. The free plan's $5 a month covers about 5,000 MB |
๐ What TikTok Video Downloader does
One link in, one file out. It reads what TikTok offers for that post, picks the best copy at or below the quality you asked for, downloads it, checks the file actually plays as video or audio, stores it, and writes a row with a link to it.
Picture quality is measured on the short side, so 1080 means 1920x1080 for a landscape video and
1080x1920 for a vertical one. A video TikTok does not have at that size comes back at the closest it
does have.
Links to Facebook, X or YouTube are not refused blindly: the run tells you which of our downloaders takes them. Duplicate links to the same post are skipped rather than downloaded twice.
๐ What data you get from each TikTok download
| What you get | Field |
|---|---|
| The link you gave, and the site | url, host |
| The caption, used as the title | title |
| The creator's handle | author |
| Length and picture size, measured on the finished file | durationSeconds, resolution |
| File type and size | format, fileSizeBytes |
| What the file counted as for billing | billedMegabytes |
| Where the file is: its record name and a direct link | mediaKey, mediaUrl |
| Every link that did not produce a file, with the reason | ERRORS record in the key-value store |
โถ๏ธ How to download TikTok videos
- Open TikTok Video Downloader and click Try for free.
- Paste your links into TikTok video links, one per line, replacing the example.
- Pick a Max quality, or tick Audio only (MP3) if you only want the sound.
- Leave Max megabytes per video alone unless you want a tighter cap, then click Start.
- Take the files from Storage, or follow
mediaUrlfrom each row.
๐ฐ How much does it cost to download TikTok videos?
$0.001 for every megabyte delivered. Flat on every Apify plan, no volume tiers. On the free plan, the $5 Apify gives you each month covers about 5,000 MB.
A file counts as whole megabytes, rounded up, and each row tells you its own figure in
billedMegabytes. So a 5.1 MB video counts as 6.
Nothing is charged per megabyte for a link that fails, a video refused for being over your limit, a post that is not a video, or a link that belongs on another actor. Those never move any bytes.
Quality is the lever. A 360p copy of the same post is a fraction of the megabytes of the 1080p one,
and audioOnly is smaller again.
๐ฅ What you give it
{"urls": ["https://www.tiktok.com/@hankgreen1/video/7047596209028074758"],"quality": "1080","audioOnly": false,"maxMegabytes": 500}
| Field | Default | What it is |
|---|---|---|
urls | none (the box holds one example link) | One link per line, each to a single TikTok video. vm. and vt. short links, m. links and embed links are understood. Required. |
quality | 1080 | best, 1080, 720, 480 or 360, measured on the short side. A bigger picture is a bigger file, and you pay by the megabyte. |
audioOnly | false | Save the sound as a 128 kbit/s MP3 instead of the video. |
maxMegabytes | 500 | A video bigger than this is skipped before anything is downloaded, and it costs you nothing. One run holds roughly 70% of its memory in files, so raise the run's memory for anything large. |
๐ค What you get back
A real row from a recent run, with the signed link trimmed:
{"url": "https://www.tiktok.com/@hankgreen1/video/7047596209028074758","host": "tiktok","title": "TikTok video #7047596209028074758","author": "hankgreen1","durationSeconds": 21.27,"resolution": "576x1024","format": "mp4","fileSizeBytes": 5076682,"billedMegabytes": 6,"mediaKey": "tiktok-7047596209028074758.mp4","mediaUrl": "https://api.apify.com/v2/key-value-stores/83C4HbXaY1Dk88AHA/records/tiktok-7047596209028074758.mp4?signature=..."}
| Field | How to read it |
|---|---|
mediaUrl | The direct link to the file. It works without a token, so you can pass it straight to whatever comes next. |
mediaKey | The name of the record in the run's key-value store, tiktok-<id>.mp4 or .mp3. |
fileSizeBytes | The size of the file that was actually stored, checked against the stored copy after upload. |
durationSeconds, resolution | Measured on the finished file, not taken from the page. |
title | The caption. A post with no caption gets TikTok video #<id>, as above. |
๐งพ Reading the output
Two places to look, and they never mix.
| Where | What is in it | Billed |
|---|---|---|
| The dataset | One row per file that was delivered and checked | yes, by the megabyte |
ERRORS in the key-value store | A list of {url, error} for every link that did not produce a file, written as each one happens | no |
A link that fails never reaches the dataset, so a row in the dataset means a file exists. The error text says what happened in plain words: the post is not a video, the post is only served in some countries, the file is over your limit, the link belongs on another actor.
If not a single link produced a file, the run finishes as failed rather than pretending it worked.
๐ก What people use it for
- Keeping your own posts as files, instead of trusting an app's download button.
- Feeding clips into an editing or captioning step that needs a real file rather than a page.
- Pulling the sound out of a set of posts as MP3s, for transcription or a music check.
- Archiving a reference set of videos for a report, a pitch or a legal record.
From a video with no captions to a transcript, in three runs:
- Run TikTok Transcript Scraper on your
links and copy the
urlof every row whoseerrorCodeisNO_TRANSCRIPT. - Paste those links here with Audio only (MP3) ticked.
- Give each row's
mediaUrlto Video & Audio Transcriber in itsmediaUrlsbox, with your own OpenAI key.
๐ง What it does not do
- It cannot remove a watermark that is part of the video. The playback copy is what gets downloaded, so a logo the uploader baked in stays.
- Photo posts and slideshows are not downloaded. Neither are profiles, sound pages, hashtag
pages or live streams. Each gets a line in
ERRORSsaying so. - Country-limited posts fail. If TikTok only serves a post in some places, the run reports that rather than guessing.
- Private and deleted posts are out of reach, the same as they are in a browser.
- One link is one video. Give it a profile and it will not walk that account's posts.
- The file is the file. No trimming, resizing or re-encoding happens here.
- Short links are accepted but less tested than full
tiktok.com/@name/video/<id>links, so prefer the full form where you have it. - Files live in the run's storage and go when the run's data is cleaned up. Copy anything you want to keep.
๐งญ Which downloader do you need?
| If you want | Use |
|---|---|
| A public TikTok video as MP4, or its sound as MP3 | This one |
| A YouTube video, its audio or its subtitles as a file | YouTube Downloader Pro |
| A public Facebook video or reel | Facebook Video Downloader |
| The spoken words rather than the file | TikTok Transcript Scraper |
| Video links to feed in, from a hashtag | TikTok Hashtag Scraper |
| Video links to feed in, from a profile or a keyword search | TikTok Scraper |
| To post a video to your own TikTok account | TikTok Video Uploader Pro |
โ Questions people ask
Do I need a TikTok account or cookies to download videos?
No. Public posts only, and nothing is logged in.
Will the TikTok video have a watermark?
Usually not, because the playback copy is what is fetched. If the uploader burned one into the video itself, it is in the file and it stays.
Can I download a whole TikTok profile?
Not here. This takes one video link at a time. Collect the links first with one of the scrapers in the table above, then feed them in.
What if a link is dead or private?
It lands in ERRORS with the reason and costs you nothing per megabyte. The rest of the links carry
on.
Can I get just the audio?
Yes. Tick audioOnly and each link comes back as a 128 kbit/s MP3 of that video's own sound.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made
code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/tiktok-video-downloader. Either way
the run happens on your Apify account at the same price.
Is downloading a TikTok video legal?
Copyright sits with whoever made the video, and TikTok's terms apply to you as a user. Downloading your own posts or material you have rights to is the safe ground. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
๐ If something breaks
Open the Issues tab on the actor page. Send the link that failed and the run ID, and paste the
line for it from the ERRORS record. That line usually names the problem on its own.