TikTok Download API

Send a public TikTok video URL and get it back as an MP4 video or MP3 audio file. One request creates one job; private, removed, or restricted posts can fail.

First request

GET

Use the shared API host unless the dashboard shows an account-specific hostname.

curl --get "https://p.savenow.to/ajax/download.php" \
  --data-urlencode "url=https://www.tiktok.com/@scout2015/video/6718335390845095173" \
  --data "format=720" \
  --data "apikey=YOUR_API_KEY"

Submit one public TikTok video

Pass a TikTok video URL with its creator handle and video ID in the normal url parameter. The documented download endpoint creates one job for that video.

Choose MP4 or MP3

Use format=720 for the video as MP4, or format=mp3 for the audio track as MP3. Each request creates one job for one post.

Poll progress before fetching the file

Keep the returned id or progress_url with the source URL. Poll until progress is 1000, and use download_url only when success is 1 or true.

Handle restricted or unavailable posts

Private, removed, login-required, age-restricted, or region-restricted posts may not be downloadable. Do not promise your users a watermark-free file.

Feature details

Build a TikTok job flow

Accept a video URL

Validate that your input contains one TikTok video URL before creating a job.

Keep the API key private

Create metered account jobs from your server and read VDA_API_KEY from protected configuration.

Track each job separately

Store the job id with the submitted URL so users can retry or inspect one item without losing other work.

What to expect

Public videos

Public TikTok videos download as MP4 video or MP3 audio.

MP4 codecs

TikTok often serves HEVC (H.265) video, so check that your player or pipeline supports it.

Access controls still apply

Creator privacy, account, age, region, and post availability rules still apply to every request.

Parameters

url Required Use the complete public TikTok video URL.
format=720 Video output Returns the TikTok video as an MP4 file.
format=mp3 Audio output Returns the audio track as an MP3 file.
apikey Required for account API jobs Authenticate account download requests with a server-side dashboard key.
progress_url Response Poll the returned job until it finishes or reports a terminal error.
download_url Ready file Fetch only the non-empty URL from the successful terminal response for this job.

Request examples

cURL TikTok MP4 request

bash
curl --get "https://p.savenow.to/ajax/download.php" --data-urlencode "url=https://www.tiktok.com/@scout2015/video/6718335390845095173" --data "format=720" --data "apikey=YOUR_API_KEY"

Node.js TikTok MP4 request

javascript
const apiKey = process.env.VDA_API_KEY;
if (!apiKey) throw new Error('Set VDA_API_KEY on the server.');

const params = new URLSearchParams({
  url: 'https://www.tiktok.com/@scout2015/video/6718335390845095173',
  format: '720',
  apikey: apiKey,
});
const response = await fetch('https://p.savenow.to/ajax/download.php?' + params);
if (!response.ok) throw new Error('Download request failed: ' + response.status);
const job = await response.json();
if (!job.success || !job.id) throw new Error(job.message || 'The TikTok job was not accepted.');
console.log({ id: job.id, progressUrl: job.progress_url });

Python TikTok MP4 request

python
import os
import requests

response = requests.get(
    "https://p.savenow.to/ajax/download.php",
    params={
        "url": "https://www.tiktok.com/@scout2015/video/6718335390845095173",
        "format": "720",
        "apikey": os.environ["VDA_API_KEY"],
    },
    timeout=30,
)
response.raise_for_status()
job = response.json()
if not job.get("success") or not job.get("id"):
    raise RuntimeError(job.get("message") or "The TikTok job was not accepted.")
print({"id": job["id"], "progress_url": job.get("progress_url")})

Important details

Use API-key billing

The copyable account API examples require a dashboard API key. Store it on your server and review format pricing before production.

Get an API key

Check the shared endpoint contract

Review documented input, authentication, progress, and terminal response fields.

Read API docs

Related guides

Continue building

OpenAPI docs

Download YAML or JSON specs and inspect downloader, progress, and subtitle endpoints.

Read docs

Embed resources

Keep button, card, widget, and REST paths reachable for existing users and migrations.

View resources

Common questions

Can the API accept a TikTok video URL?

Yes. Send the public TikTok video URL in the url parameter. Private, removed, or region-restricted posts can fail.

Which formats work for TikTok?

Use format=720 for the video as MP4 and format=mp3 for the audio as MP3.

Will the downloaded video be watermark-free?

We do not guarantee a watermark-free file. The output depends on what TikTok serves for the post.

Can I read TikTok metadata with the Video Info endpoint?

No. The documented metadata-only function accepts YouTube URLs. Use the download response fields for the TikTok job itself.