
TikTok Video Downloader
Pricing
$10.00/month + usage

TikTok Video Downloader
Download any videos from TikTok.com
4.6 (3)
Pricing
$10.00/month + usage
13
Monthly users
45
Runs succeeded
90%
Response time
19 hours
Last modified
a day ago
Corrupted files from TikTok
Open
After downloading video through your scraper, we extract audio from it by downloading the mp4 you give us. For some video files we get this:
1Failed to transcribe video: Failed to load audio: ffmpeg version 5.1.6-0+deb12u1 Copyright (c) 2000-2024 the FFmpeg developers 2 built with gcc 12 (Debian 12.2.0-14) 3 configuration: --prefix=/usr --extra-version=0+deb12u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --disable-sndio --enable-libjxl --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-librav1e --enable-shared 4 libavutil 57. 28.100 / 57. 28.100 5 libavcodec 59. 37.100 / 59. 37.100 6 libavformat 59. 27.100 / 59. 27.100 7 libavdevice 59. 7.100 / 59. 7.100 8 libavfilter 8. 44.100 / 8. 44.100 9 libswscale 6. 7.100 / 6. 7.100 10 libswresample 4. 7.100 / 4. 7.100 11 libpostproc 56. 6.100 / 56. 6.100 12[mov,mp4,m4a,3gp,3g2,mj2 @ 0x2ac764186cc0] Format mov,mp4,m4a,3gp,3g2,mj2 detected only with low score of 1, misdetection possible! 13[mov,mp4,m4a,3gp,3g2,mj2 @ 0x2ac764186cc0] moov atom not found 14/tmp/tmpukr9k5ms/video_74d491ef-3ac3-45c7-bb97-ae307d26a010.mp4: Invalid data found when processing input 15", "timestamp":"2025-04-04T08:26:22.331421Z", "video_id":"74d491ef-3ac3-45c7-bb97-ae307d26a010", "video_url":"https://www.tiktok.com/@caregiveraction/video/7437207906296302894"}
Could you please check it out for this video https://www.tiktok.com/@caregiveraction/video/7437207906296302894 why this file is corrupted? Probably there is something on your end during conversion - my assumption is that it doesn't download the full video ("moov atom not found") but you still give us the mp4 instead of retrying download/fixing the file and then returning the mp4

Hey there,
Thank you for reaching out, and letting us know about your inquiry. Can you please share your Run ID, so that the team can investigate it in detail?
Best
sundogs
For example, this one: https://console.apify.com/view/runs/lFpxhRbn3KhT5eTH9
Create another issue to share it w/ you: https://console.apify.com/organization/j2UIRlHmbbfbBPhPG/actors/9EwE2S3mGpxx665jw/issues/HAl0VuKLBJGehwfVB
Had around 10 cases alredy
sundogs
These are a few other runs (do you have access to their logs or I need to share them the same way as above?):
1zfnfcllY97xgehzhp 2hyaxZwdg7URSotBpx 3j95gu2wFeo0vCfV0q 4J1Xm2KvBObUkbtMYq 5lFpxhRbn3KhT5eTH9 6JIGAQQflmGwdMtO7L 79CU16snFcys4TKDwP
sundogs
Here is one of corrupted video files (doesn't let me uploading here):
sundogs
Here is another one - https://console.apify.com/organization/j2UIRlHmbbfbBPhPG/actors/runs/EAArEX0ATsIqv8Sya#log
There it started downloading, but still stopped on the way.
12025-04-04T10:51:51.186Z ACTOR: Pulling Docker image of build Or78ACkjXeMC7BRab from registry. 22025-04-04T10:51:55.358Z ACTOR: Creating Docker container. 32025-04-04T10:51:56.116Z ACTOR: Starting Docker container. 42025-04-04T10:51:57.929Z INFO System info {"apifyVersion":"3.1.11","apifyClientVersion":"2.8.0","crawleeVersion":"3.5.7","osType":"Linux","nodeVersion":"v18.20.8"} 52025-04-04T10:51:57.936Z INFO PHASE -- STARTING ACTOR. 62025-04-04T10:51:58.456Z INFO PHASE -- SETTING UP CRAWLER. 72025-04-04T10:51:58.458Z INFO CRAWLER STARTED. 82025-04-04T10:51:58.692Z INFO BasicCrawler: Starting the crawler. 92025-04-04T10:52:20.389Z WARN BasicCrawler: Reclaiming failed request back to the list or queue. RequestError: Client network socket disconnected before secure TLS connection was established 102025-04-04T10:52:20.390Z at file:///usr/src/app/src/main.js:62:19 {"id":"JZB5ArL8oB0LzwE","url":"https://www.tiktok.com","retryCount":1} 112025-04-04T10:52:53.870Z WARN BasicCrawler: Reclaiming failed request back to the list or queue. RequestError: Proxy responded with 595 ECONNRESET: 0 bytes 122025-04-04T10:52:53.871Z at file:///usr/src/app/src/main.js:62:19 {"id":"JZB5ArL8oB0LzwE","url":"https://www.tiktok.com","retryCount":2} 132025-04-04T10:52:58.694Z INFO Statistics: BasicCrawler request statistics: {"requestAvgFailedDurationMillis":null,"requestAvgFinishedDurationMillis":null,"requestsFinishedPerMinute":0,"requestsFailedPerMinute":0,"requestTotalDurationMillis":0,"requestsTotal":0,"crawlerRuntimeMillis":60234,"retryHistogram":[]} 142025-04-04T10:52:58.719Z INFO BasicCrawler:AutoscaledPool: state {"currentConcurrency":1,"desiredConcurrency":3,"systemStatus":{"isSystemIdle":true,"memInfo":{"isOverloaded":false,"limitRatio":0.2,"actualRatio":0},"eventLoopInfo":{"isOverloaded":false,"limitRatio":0.6,"actualRatio":0},"cpuInfo":{"isOverloaded":false,"limitRatio":0.4,"actualRatio":0},"clientInfo":{"isOverloaded":false,"limitRatio":0.3,"actualRatio":0}}} 152025-04-04T10:53:02.061Z INFO CRAWLER: -- Fetching cookies 162025-04-04T10:53:04.763Z INFO PHASE: -- Fetching item: https://www.tiktok.com/@caregiveraction/video/7482152091666992426 172025-04-04T10:53:04.845Z INFO PHASE: -- Downloading video : https://www.tiktok.com/@caregiveraction/video/7482152091666992426 182025-04-04T10:53:09.320Z INFO Downloading video 7482152091666992426: 0% 192025-04-04T10:53:10.101Z INFO BasicCrawler: All requests from the queue have been processed, the crawler will shut down. 202025-04-04T10:53:10.329Z INFO Downloading video 7482152091666992426: ======= 35% 212025-04-04T10:53:10.567Z INFO BasicCrawler: Final request statistics: {"requestsFinished":2,"requestsFailed":0,"retryHistogram":[1,null,1],"requestAvgFailedDurationMillis":null,"requestAvgFinishedDurationMillis":6486,"requestsFinishedPerMinute":2,"requestsFailedPerMinute":0,"requestTotalDurationMillis":12972,"requestsTotal":2,"crawlerRuntimeMillis":72108} 222025-04-04T10:53:10.568Z INFO BasicCrawler: Finished! Total 2 requests: 2 succeeded, 0 failed. {"terminal":true}
sundogs
If you are unable to download the video, you need to fail the run (and not have it as 'succeeded') at least, so that we know we need to retry. But ideally you need to retry, so that we always get a video.

Hey,
When we checked the runIDs you provided, we saw that both the Input and Storage files had been deleted, so we couldn’t investigate the issue based on your specific example.
However, we tested the video found in the logs — https://www.tiktok.com/@caregiveraction/video/7437207906296302894 — by scraping it through the actor and running a conversion. We didn’t encounter any issues during this process.
You can find the run we executed, along with the input and the conversion log, at the link below:
🔗 https://console.apify.com/view/runs/egGyiNbrDKDqTuLBo
ffmpeg -i 7437207906296302894.mp4 output.mp4
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
built with Apple clang version 16.0.0 (clang-1600.0.26.6)
configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.1.1_1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.101 / 61. 19.101
libavformat 61. 7.100 / 61. 7.100
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 4.100 / 10. 4.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '7437207906296302894.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
comment : vid:v12300gd0001csr4acvog65sac7g7nq0
encoder : Lavf58.76.100
Duration: 00:01:00.01, start: 0.000000, bitrate: 650 kb/s
Stream #0:00x1: Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 576x1024 [SAR 1:1 DAR 9:16], 612 kb/s, 30 fps, 30 tbr, 15360 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream #0:10x2: Audio: aac (HE-AACv2) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 32 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
File 'output.mp4' already exists. Overwrite? [y/N] y
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x1176054f0] using SAR=1/1
[libx264 @ 0x1176054f0] using cpu capabilities: ARMv8 NEON
[libx264 @ 0x1176054f0] profile High, level 3.1, 4:2:0, 8-bit
[libx264 @ 0x1176054f0] 264 - core 164 r3108 31e19f9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
comment : vid:v12300gd0001csr4acvog65sac7g7nq0
encoder : Lavf61.7.100
Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 576x1024 [SAR 1:1 DAR 9:16], q=2-31, 30 fps, 15360 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Lavc61.19.101 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
encoder : Lavc61.19.101 aac
[out#0/mp4 @ 0x600001258000] video:4344KiB audio:956KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 1.224760%
frame= 1800 fps=740 q=-1.0 Lsize= 5365KiB time=00:00:59.93 bitrate= 733.3kbits/s speed=24.6x
[libx264 @ 0x1176054f0] frame I:8 Avg QP:16.15 size: 34851
[libx264 @ 0x1176054f0] frame P:539 Avg QP:21.83 size: 6435
[libx264 @ 0x1176054f0] frame B:1253 Avg QP:25.52 size: 559
[libx264 @ 0x1176054f0] consecutive B-frames: 2.0% 14.3% 3.7% 80.0%
[libx264 @ 0x1176054f0] mb I I16..4: 25.7% 57.4% 16.9%
[libx264 @ 0x1176054f0] mb P I16..4: 1.2% 3.4% 0.9% P16..4: 24.6% 8.1% 4.4% 0.0% 0.0% skip:57.4%
[libx264 @ 0x1176054f0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 14.9% 0.7% 0.1% direct: 0.2% skip:84.0% L0:44.3% L1:51.2% BI: 4.5%
[libx264 @ 0x1176054f0] 8x8 transform intra:60.4% inter:71.5%
[libx264 @ 0x1176054f0] coded y,uvDC,uvAC intra: 36.7% 40.2% 19.1% inter: 3.9% 3.7% 0.3%
[libx264 @ 0x1176054f0] i16 v,h,dc,p: 45% 24% 11% 19%
[libx264 @ 0x1176054f0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 18% 33% 3% 5% 5% 5% 4% 4%
[libx264 @ 0x1176054f0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 32% 23% 15% 4% 6% 7% 5% 5% 4%
[libx264 @ 0x1176054f0] i8c dc,h,v,p: 62% 18% 17% 3%
[libx264 @ 0x1176054f0] Weighted P-Frames: Y:1.7% UV:0.9%
[libx264 @ 0x1176054f0] ref P L0: 65.9% 22.4% 8.7% 3.0% 0.0%
[libx264 @ 0x1176054f0] ref B L0: 92.8% 6.0% 1.3%
[libx264 @ 0x1176054f0] ref B L1: 98.8% 1.2%
[libx264 @ 0x1176054f0] kb/s:593.01
[aac @ 0x117677740] Qavg: 643.637
Let us know if you still encounter the issue with a different video or setup, and we’ll be happy to dig deeper.
sundogs
Yes, storage files are deleted automatically to save on space. Hence I attached the file in this issue for you to investigate. Why this issue was closed if you had all the input needed?
Yes, we continue encountering this as it hasn't fixed yet..
Here are the new runs:
1fhzSmcJ9RjufvEVuw 2pBGc41oWgdXMAUp0N 3908G0QLjWFE4PfrLn 4w3gLQrVe3w1uTG8gx
sundogs
We didn’t encounter any issues during this process.
Yes, because it doesn't happen in 100% of cases. It happens on every ~8th run. So 15% of our data is corrupted. Which is a lot.
sundogs
You can clearly see in the logs that the download wasn't fully finished. We gave you a concrete file that is corrupted. We also provided logs of ffmpeg for your developers to debug. I believe we did more than enough for you to be able to reproduce it.

Hey,
We are woking on it.
Best,
Pricing
Pricing model
RentalTo use this Actor, you have to pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period. You also pay for the Apify platform usage.
Free trial
3 days
Price
$10.00