# TikTok Video Downloader V2 (no watermark) (`myagizm/tiktok-video-downloader-v2`) Actor

Get watermark-free download links for any public TikTok video, plus the cover image and the original audio track. Slideshow posts return one link per image. Each item reports exactly when the link expires.

- **URL**: https://apify.com/myagizm/tiktok-video-downloader-v2.md
- **Developed by:** [MYM](https://apify.com/myagizm) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 download link generateds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## TikTok Video Downloader — watermark-free MP4 & audio links (No API Key, No Login)

<p align="center">
  <a href="https://apify.com/myagizm/tiktok-video-downloader-v2"><img src="https://img.shields.io/badge/Apify-Actor-00b96b?logo=apify&logoColor=white" alt="Apify Actor"></a>
  <img src="https://img.shields.io/badge/No%20API%20Key-required-blue" alt="No API Key required">
  <img src="https://img.shields.io/badge/No%20Login-needed-blue" alt="No Login needed">
  <img src="https://img.shields.io/badge/No%20Cookies-needed-blue" alt="No cookies needed">
  <img src="https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel%20%7C%20XML-orange" alt="Export formats">
  <img src="https://img.shields.io/badge/MCP-AI%20agents-8A2BE2" alt="MCP AI agents">
  <img src="https://img.shields.io/badge/Pricing-pay%20per%20result-success" alt="Pay per result">
</p>

**Download TikTok videos without the watermark** — no login, no cookies, no TikTok for Developers app, no access token, no browser extension. Paste video URLs and the TikTok Video Downloader returns a **clean MP4 download link**, an **audio-only link** for the sound, the cover image, duration, caption, creator, live play and like counts, and an explicit **link expiry timestamp** so you know exactly how long you have to fetch the file. Photo (slideshow) posts are supported too, one row per slide. Export to JSON, CSV, Excel, or XML.

> **Download your first video free in under 2 minutes** — paste a link, click Start, download. No configuration, no credit card to try.

---

### Table of contents

- [What can it do?](#what-can-it-do)
- [Who uses it?](#who-uses-it)
- [What data can I scrape?](#what-data)
- [How to use it](#how-to)
- [Input example](#input-example)
- [Output example](#output-example)
- [Pricing](#pricing)
- [Tips](#tips)
- [Want other TikTok data?](#want-other-data)
- [AI agents (MCP)](#mcp)
- [Integrations & API](#integrations)
- [Support](#support)
- [FAQ](#faq)
- [Related searches](#related-searches)
- [Disclaimer](#disclaimer)
- [Resources](#resources)

---

### What can the TikTok Video Downloader do? {#what-can-it-do}

- ⬇️ **Get a watermark-free MP4 link** for any public TikTok video.
- 💧 **Or keep the watermark** with the *With watermark* switch, if you need the original branding.
- 🎵 **Get an audio-only link** to grab the sound on its own.
- 🖼️ **Get the cover image** for thumbnails.
- 🎠 **Photo posts supported** — one row per slide with `partIndex` and `partCount`.
- ⏳ **Know your deadline** — `linkExpiresAt` and `linkExpiresInMinutes` tell you exactly when the link dies.
- 📊 **Get plays and likes** at the moment of scraping, so archives keep their context.
- 🗂️ **Batch as many URLs as you like** in one run.
- 🚚 **Managed delivery** — consistent results on every run.
- 📤 **Export** the links to JSON, CSV, Excel, or XML and hand them to your downloader.

Go beyond the limits of the official TikTok API: no OAuth app, no app review, no quota juggling — paste your input and collect publicly available data.

---

### Who uses the TikTok Video Downloader? {#who-uses-it}

- ✂️ **Editors & content teams** — pull clean source files for repurposing across platforms.
- 🗄️ **Archivists & brand teams** — keep a copy of campaign videos before they are deleted.
- 📢 **Ad researchers** — build a swipe file of creatives worth studying.
- 🎵 **Sound researchers** — collect the audio behind trending videos.
- 🤖 **AI teams** — assemble video corpora for training, captioning, or moderation models.

---

### What data can I scrape? {#what-data}

| Field | Type | Description |
|-------|------|-------------|
| `videoId` | string | Video ID. |
| `postUrl` | string | Original TikTok post URL. |
| `downloadUrl` | string | **Watermark-free MP4 download link.** |
| `audioUrl` | string | Audio-only download link (the sound used in the video). |
| `coverUrl` | string | Cover image URL. |
| `watermark` | boolean | Whether the returned file carries a watermark. |
| `mediaType` | string | `video` or `image` (photo/slideshow posts). |
| `partIndex` | number | Slide index for photo posts. |
| `partCount` | number | Total slides for photo posts. |
| `duration` | number | Length in seconds. |
| `text` | string | Caption. |
| `author` | string | Creator handle. |
| `plays` | number | Play count at scrape time. |
| `likes` | number | Likes at scrape time. |
| `createdAt` | string | Publish timestamp. |
| `linkExpiresAt` | string | When the download link stops working. |
| `linkExpiresInMinutes` | number | Minutes left on the download link when the row was created. |

> Fields reflect what TikTok exposes publicly for that item. Values that do not exist for a given item are returned as `null` rather than dropped, so your schema stays stable.

---

### How to scrape download links {#how-to}

1. **Open the TikTok Video Downloader** on [Apify](https://apify.com/myagizm/tiktok-video-downloader-v2).
2. **Paste video URLs** into *TikTok video URLs*.
3. *(Optional)* Turn **With watermark** on, or set **Max videos**.
4. Click **▶ Start**, then download the files from `downloadUrl` — **before `linkExpiresAt`**.

No login, no cookies, no proxy configuration. Start with one input to see the output shape, then scale the same run — the fields stay identical, so code written against a test run keeps working.

---

### Input example {#input-example}

```json
{
  "startUrls": [
    "https://www.tiktok.com/@nasa/video/7665075736742530317"
  ],
  "resultsLimit": 100,
  "withWatermark": false
}
````

- **startUrls** — public TikTok video or photo-post URLs.
- **resultsLimit** — hard cap on videos returned per run.
- **withWatermark** — return the watermarked original instead of the clean file.

***

### Output example {#output-example}

```json
{
  "text": "Something big just landed on TikTok.",
  "likes": 42889,
  "plays": 312800,
  "author": "nasa",
  "postUrl": "https://www.tiktok.com/@nasa/video/7665075736742530317",
  "videoId": "7665075736742530317",
  "audioUrl": "https://kutt.foxtools.de/XygbgV",
  "coverUrl": "https://kutt.foxtools.de/z5SDeV",
  "duration": 25,
  "createdAt": "2026-07-21T20:09:02.000Z",
  "mediaType": "video",
  "partCount": 1,
  "partIndex": 1,
  "watermark": false,
  "sourceType": "tiktok",
  "downloadUrl": "https://kutt.foxtools.de/QTB3Wr",
  "linkExpiresAt": "2026-07-28T13:41:38.000Z",
  "linkExpiresInMinutes": 360
}
```

Every run produces a clean dataset you can page through in the Apify Console or pull via API. Export to JSON, CSV, Excel, or XML in one click.

***

> **V2 = managed delivery.** This is the V2 line: it runs on managed infrastructure for consistent, guaranteed delivery and a wider field set. If you only need best-effort data at the lowest price, the V1 actor of the same surface is also on the [store profile](https://apify.com/myagizm).

### How much will it cost? {#pricing}

Simple, predictable **pay-per-result** pricing — you pay for the videos you actually receive, not for compute time.

- 💸 **Pay per video** — budget is just videos × rate, so you can estimate spend up front.
- 📉 **Volume discounts** — Bronze, Silver, Gold, Platinum, and Diamond Apify plans get progressively lower rates.
- 🆓 **Free to try** — new Apify accounts include monthly free usage, so your first run costs nothing.
- 🚫 **No hidden fees** — no proxy add-on, no per-request API charge, no minimum spend.

See the live rate on the [Apify store page](https://apify.com/myagizm/tiktok-video-downloader-v2).

***

### Tips {#tips}

- ⏳ **Download immediately.** `linkExpiresInMinutes` is not a suggestion — fetch the file in the same session.
- 🤖 **Automate the fetch** — pipe `downloadUrl` into n8n, Make, or a script that stores files in S3 or Drive.
- 🎵 **`audioUrl` is separate** — you can archive the sound without the video.
- 🎠 **For photo posts, group rows by `videoId`** and order by `partIndex` to rebuild the slideshow.
- 💧 **Leave the watermark off** for editing; keep it on when provenance matters.
- 📊 **Snapshot `plays` and `likes` with the file** so your archive records how the video was performing.

***

### Want other TikTok data? {#want-other-data}

- 👤 **[TikTok Profile Scraper](https://apify.com/myagizm/tiktok-profile-scraper-v2)** — followers, following, likes, video count, bio, region and verified flag in bulk.
- 🎬 **[TikTok Video Scraper](https://apify.com/myagizm/tiktok-video-scraper-v2)** — video metrics: plays, likes, comments, shares, saves, duration and music.
- 💬 **[TikTok Comments Scraper](https://apify.com/myagizm/tiktok-comments-scraper-v2)** — comments with author, likes, replies and pinned flags.
- \#️⃣ **[TikTok Hashtag Scraper](https://apify.com/myagizm/tiktok-hashtag-scraper-v2)** — videos for any hashtag with full metrics and author stats.

Building a multi-platform dataset? The same no-login, pay-per-result approach covers the other networks:

- 🎵 **[TikTok Profile Scraper](https://apify.com/myagizm/tiktok-profile-scraper-v2)** · **[TikTok Video Scraper](https://apify.com/myagizm/tiktok-video-scraper-v2)** · **[TikTok Hashtag Scraper](https://apify.com/myagizm/tiktok-hashtag-scraper-v2)** · **[TikTok Comments Scraper](https://apify.com/myagizm/tiktok-comments-scraper-v2)**
- 🐦 **[X (Twitter) Tweets Scraper](https://apify.com/myagizm/x-tweets-scraper)** · **[X Profile Scraper](https://apify.com/myagizm/x-profile-scraper)** · **[X Trends Scraper](https://apify.com/myagizm/x-trends-scraper)**
- 👔 **[LinkedIn Profile Scraper](https://apify.com/myagizm/linkedin-profile-scraper)** · **[LinkedIn Company Scraper](https://apify.com/myagizm/linkedin-company-scraper)** · **[LinkedIn Jobs Scraper](https://apify.com/myagizm/linkedin-jobs-scraper)**
- 🤖 **[Reddit Scraper](https://apify.com/myagizm/reddit-scraper-v2)** · **[Reddit Search Scraper](https://apify.com/myagizm/reddit-search-scraper-v2)** · **[Reddit Subreddit Scraper](https://apify.com/myagizm/reddit-subreddit-scraper-v2)**
- ▶️ **[YouTube Channel Scraper](https://apify.com/myagizm/youtube-channel-scraper)** · **[YouTube Comment Scraper](https://apify.com/myagizm/youtube-comment-scraper)** · **[YouTube Transcript Scraper](https://apify.com/myagizm/youtube-transcript-scraper)**
- 🗺️ **[Google Maps Scraper](https://apify.com/myagizm/google-maps-scraper)** · **[Google News Scraper](https://apify.com/myagizm/google-news-scraper)**

Browse everything on the **[myagizm store profile](https://apify.com/myagizm)**.

***

### Use the data with AI agents (MCP) {#mcp}

The TikTok Video Downloader is available through the **Apify MCP server**, so AI assistants can call it as a tool and pull download links on demand.

- 🧩 **Claude** — add the Apify MCP server and let Claude fetch and analyse the data.
- 🤖 **ChatGPT** — use the actor as a tool inside research and reporting workflows.
- 🖊️ **Cursor** — pull structured results straight into your coding sessions.

Common AI-agent recipes:

- ⬇️ **Bulk fetch** — "download these ten videos and save them to my drive."
- 🎵 **Sound archive** — "get the audio for these trending videos."
- 🗄️ **Campaign backup** — "archive every video from this list with its metrics."
- ✂️ **Repurpose queue** — "prepare clean files for reposting."

***

### Integrations & API {#integrations}

Connect the actor to the tools you already use: **Make, Zapier, n8n, Slack, Airbyte, Gumloop, CrewAI, IFTTT, Lindy, GitHub, Google Sheets, and Google Drive** — plus webhooks, Apify Schedules, and the MCP server.

#### Run synchronously and get the dataset (Apify API)

```bash
curl -X POST "https://api.apify.com/v2/acts/myagizm~tiktok-video-downloader-v2/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": ["https://www.tiktok.com/@nasa/video/7665075736742530317"], "resultsLimit": 100, "withWatermark": false}'
```

#### Start a run asynchronously

```bash
curl -X POST "https://api.apify.com/v2/acts/myagizm~tiktok-video-downloader-v2/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": ["https://www.tiktok.com/@nasa/video/7665075736742530317"], "resultsLimit": 100, "withWatermark": false}'
```

#### Fetch dataset items later

```bash
curl "https://api.apify.com/v2/acts/myagizm~tiktok-video-downloader-v2/runs/last/dataset/items?token=YOUR_APIFY_TOKEN&format=csv"
```

Change `format` to `json`, `csv`, `xlsx`, or `xml` to export in your preferred format. The Apify Console also auto-generates ready-to-paste **JavaScript, Python, and CLI** snippets plus an **OpenAPI** spec for this actor.

***

### Support {#support}

Questions, feature requests, or something not looking right? Open an issue on the actor's **[Issues tab](https://apify.com/myagizm/tiktok-video-downloader-v2/issues)**. Please include the input you used so we can reproduce and fix it quickly.

***

### FAQ {#faq}

#### Are the videos really watermark-free?

Yes — with **With watermark** off you get the clean file. Turn it on if you specifically want the original watermarked version.

#### How long do download links last?

Not long — TikTok signs them. Every row includes `linkExpiresAt` and `linkExpiresInMinutes` so you can plan around it.

#### Does it work with photo (slideshow) posts?

Yes. Each slide becomes its own row with `partIndex` and `partCount`, and `mediaType` is `image`.

#### Can I download the audio only?

Yes — use `audioUrl`.

#### Does the actor store the video files for me?

No. It returns links; you decide where files are stored. That keeps the actor cheap and your storage under your control.

#### Can I use downloaded videos commercially?

That is between you and the rights holder. The actor gives you access to publicly available media; copyright still applies.

#### Do I need a TikTok account, login, cookies, or API key?

No. There is no login, no cookies, no TikTok for Developers app, no app review, and no access token. Paste your input and run.

#### Is it legal to scrape TikTok?

The actor collects only publicly available data — the same content any visitor can see without logging in. It never logs in and never accesses private accounts. You are responsible for compliant use: if the data contains personal data, follow GDPR, CCPA, and other applicable regulations, and respect TikTok's terms.

#### Can I scrape private accounts?

No. Private accounts are reported in the run log and skipped. The actor never bypasses access controls.

#### Do I need proxies?

No. Proxy handling is built in and managed for you.

#### Can I export the results to CSV, Excel, or JSON?

Yes — JSON, CSV, Excel, or XML from the Console, or the API `format` parameter.

#### Can I use it with the Apify API?

Yes, using the sync and async endpoints shown above.

#### Is there an MCP server for AI agents?

Yes. Claude, ChatGPT, and Cursor can call this actor as a tool through the Apify MCP server.

#### Can I schedule runs?

Yes. Use Apify Schedules or trigger runs via API and webhooks.

#### How fresh is the data?

There is no caching. Every run reads the current public page, so numbers are live at run time.

#### Media URLs stopped working — why?

TikTok signs its CDN links and they expire within hours. Download or re-host media in the same session you scrape it.

***

### Related searches {#related-searches}

tiktok video downloader · download tiktok without watermark · tiktok mp4 download link · tiktok no watermark api · tiktok audio downloader · tiktok sound download · bulk tiktok downloader · tiktok slideshow download · tiktok photo post download · download tiktok videos in bulk · tiktok downloader api · tiktok video backup · tiktok creative swipe file · save tiktok videos hd

***

### Disclaimer {#disclaimer}

This is an independent tool and is not affiliated with, endorsed by, or sponsored by TikTok or ByteDance Ltd.. All product names, logos, and brands are property of their respective owners.

The actor collects only **publicly available** data — the same content any visitor can see without logging in. It never logs in, never bypasses access controls, and never touches private or protected content. You are responsible for how you use the data: if it contains personal data, follow GDPR, CCPA, and other applicable regulations, and respect the platform's terms.

***

### Resources {#resources}

- 📘 [Apify API documentation](https://docs.apify.com/api/v2) — run actors and fetch datasets programmatically.
- 🤖 [Apify MCP server](https://mcp.apify.com) — use this actor as a tool in Claude, ChatGPT, and Cursor.
- 📤 [Dataset export docs](https://docs.apify.com/platform/storage/dataset) — export to JSON, CSV, Excel, and XML.
- ⏰ [Scheduling actor runs](https://docs.apify.com/platform/schedules) — keep your data fresh automatically.
- 🔌 [Apify integrations](https://docs.apify.com/platform/integrations) — n8n, Zapier, Make, Slack, and more.
- 🏪 [myagizm store profile](https://apify.com/myagizm) — the full family of no-login scrapers.

***

## 中文说明 —— TikTok 视频下载工具（V2）

**下载无水印 TikTok 视频** —— 不需要登录、Cookie、开发者应用、access token 或浏览器插件。粘贴视频链接即可返回**干净的 MP4 下载链接**、**纯音频链接**、封面图、时长、文案、作者、当前播放与点赞数，以及明确的**链接失效时间**，让你清楚还有多久可以下载。图文（轮播）帖同样支持，每张一行。

> **两分钟内免费拿到第一批数据** —— 填入内容、点击 Start 即可。无需配置，试用不需要信用卡。

### 能做什么

- ⬇️ **获取无水印 MP4 链接**。
- 💧 **也可保留水印**（*With watermark*）。
- 🎵 **纯音频链接**，可单独保存声音。
- 🖼️ **封面图地址**。
- 🎠 **支持图文帖** —— 每张一行，含 `partIndex` 与 `partCount`。
- ⏳ **明确失效时间** —— `linkExpiresAt` 与 `linkExpiresInMinutes`。
- 📊 **抓取时的播放与点赞数**，归档时保留上下文。
- 🗂️ **一次可批量处理大量链接**。
- 🚚 **托管交付**，结果稳定。
- 📤 **导出**链接为 JSON / CSV / Excel / XML。

无需 OAuth 应用、无需应用审核、无需配额管理 —— 填入内容即可采集公开数据。

### 谁在用

- ✂️ **剪辑与内容团队** —— 拿到干净素材做二次创作。
- 🗄️ **归档与品牌团队** —— 在内容被删除前留存活动视频。
- 📢 **广告研究** —— 建立值得学习的创意素材库。
- 🎵 **音频研究** —— 收集热门视频背后的声音。
- 🤖 **AI 团队** —— 构建视频语料用于训练、字幕或审核模型。

### 可以抓取哪些数据

| 字段 | 类型 | 说明 |
|------|------|------|
| `videoId` | string | 视频 ID |
| `postUrl` | string | 原始帖子链接 |
| `downloadUrl` | string | **无水印 MP4 下载链接** |
| `audioUrl` | string | 纯音频下载链接 |
| `coverUrl` | string | 封面图 |
| `watermark` | boolean | 返回文件是否带水印 |
| `mediaType` | string | `video` 或 `image`（图文帖） |
| `partIndex` | number | 图文帖的第几张 |
| `partCount` | number | 图文帖总张数 |
| `duration` | number | 时长（秒） |
| `text` | string | 文案 |
| `author` | string | 作者用户名 |
| `plays` | number | 抓取时的播放量 |
| `likes` | number | 抓取时的点赞数 |
| `createdAt` | string | 发布时间 |
| `linkExpiresAt` | string | 下载链接失效时间 |
| `linkExpiresInMinutes` | number | 生成该行时链接剩余有效分钟数 |

> 字段取决于平台对外公开了什么。某个条目没有的值会返回 `null` 而不是直接省略，因此你的数据结构始终稳定。

### 使用步骤

1. 打开 [TikTok 视频下载工具](https://apify.com/myagizm/tiktok-video-downloader-v2)。
2. 在 *TikTok video URLs* 粘贴链接。
3. （可选）开启 **With watermark** 或设置 **Max videos**。
4. 点击 **▶ Start**，然后在 `linkExpiresAt` 之前从 `downloadUrl` 下载文件。

### 输入示例

```json
{
  "startUrls": [
    "https://www.tiktok.com/@nasa/video/7665075736742530317"
  ],
  "resultsLimit": 100,
  "withWatermark": false
}
```

### 输出示例

```json
{
  "text": "Something big just landed on TikTok.",
  "likes": 42889,
  "plays": 312800,
  "author": "nasa",
  "postUrl": "https://www.tiktok.com/@nasa/video/7665075736742530317",
  "videoId": "7665075736742530317",
  "audioUrl": "https://kutt.foxtools.de/XygbgV",
  "coverUrl": "https://kutt.foxtools.de/z5SDeV",
  "duration": 25,
  "createdAt": "2026-07-21T20:09:02.000Z",
  "mediaType": "video",
  "partCount": 1,
  "partIndex": 1,
  "watermark": false,
  "sourceType": "tiktok",
  "downloadUrl": "https://kutt.foxtools.de/QTB3Wr",
  "linkExpiresAt": "2026-07-28T13:41:38.000Z",
  "linkExpiresInMinutes": 360
}
```

> **V2 = 托管交付。** 这是 V2 产品线：运行在托管基础设施上，交付更稳定、字段更全。如果你只需要最低价的尽力而为版本，同一功能的 V1 Actor 也在[商店主页](https://apify.com/myagizm)。

### 价格

采用**按结果计费**：只为真正拿到的数据付费，不按运行时间计费。

- 💸 成本 = 结果数量 × 单价，预算可提前算清。
- 📉 Apify 的 Bronze / Silver / Gold / Platinum / Diamond 套餐享阶梯折扣。
- 🆓 新账号自带每月免费额度，第一次运行不花钱。
- 🚫 无代理附加费、无单次请求费、无最低消费。

实时价格见 [Apify 商店页面](https://apify.com/myagizm/tiktok-video-downloader-v2)。

### 使用建议

- ⏳ **务必立刻下载**，`linkExpiresInMinutes` 不是建议而是硬期限。
- 🤖 **自动化抓取**：把 `downloadUrl` 接到 n8n / Make / 脚本，直接存到 S3 或云盘。
- 🎵 `audioUrl` 独立可用，可只保存音频。
- 🎠 图文帖请按 `videoId` 分组、按 `partIndex` 排序还原轮播。
- 💧 剪辑用无水印；需要溯源时保留水印。

### 其他 TikTok 数据

- 👤 **[TikTok 账号资料抓取工具](https://apify.com/myagizm/tiktok-profile-scraper-v2)** —— 批量获取粉丝数、关注数、获赞总数、视频数、简介、地区与认证状态。
- 🎬 **[TikTok 视频抓取工具](https://apify.com/myagizm/tiktok-video-scraper-v2)** —— 抓取视频的播放、点赞、评论、分享、收藏、时长与音乐信息。
- 💬 **[TikTok 评论抓取工具](https://apify.com/myagizm/tiktok-comments-scraper-v2)** —— 抓取评论的作者、点赞数、回复数与置顶标记。
- \#️⃣ **[TikTok 话题标签抓取工具](https://apify.com/myagizm/tiktok-hashtag-scraper-v2)** —— 按标签抓取视频及完整指标与作者数据。

需要多平台数据？以下工具采用同样的免登录、按结果计费方式：

- 🎵 **[TikTok 账号抓取](https://apify.com/myagizm/tiktok-profile-scraper-v2)** · **[TikTok 视频抓取](https://apify.com/myagizm/tiktok-video-scraper-v2)** · **[TikTok 话题抓取](https://apify.com/myagizm/tiktok-hashtag-scraper-v2)** · **[TikTok 评论抓取](https://apify.com/myagizm/tiktok-comments-scraper-v2)**
- 🐦 **[X（推特）推文抓取](https://apify.com/myagizm/x-tweets-scraper)** · **[X 账号资料抓取](https://apify.com/myagizm/x-profile-scraper)** · **[X 热门趋势抓取](https://apify.com/myagizm/x-trends-scraper)**
- 👔 **[LinkedIn 个人资料抓取](https://apify.com/myagizm/linkedin-profile-scraper)** · **[LinkedIn 公司抓取](https://apify.com/myagizm/linkedin-company-scraper)** · **[LinkedIn 职位抓取](https://apify.com/myagizm/linkedin-jobs-scraper)**
- 🤖 **[Reddit 抓取](https://apify.com/myagizm/reddit-scraper-v2)** · **[Reddit 搜索抓取](https://apify.com/myagizm/reddit-search-scraper-v2)** · **[子版块抓取](https://apify.com/myagizm/reddit-subreddit-scraper-v2)**
- ▶️ **[YouTube 频道抓取](https://apify.com/myagizm/youtube-channel-scraper)** · **[YouTube 评论抓取](https://apify.com/myagizm/youtube-comment-scraper)** · **[YouTube 字幕抓取](https://apify.com/myagizm/youtube-transcript-scraper)**
- 🗺️ **[Google 地图抓取](https://apify.com/myagizm/google-maps-scraper)** · **[Google 新闻抓取](https://apify.com/myagizm/google-news-scraper)**

全部工具见 **[myagizm 商店主页](https://apify.com/myagizm)**。

### 配合 AI 智能体使用（MCP）

本 Actor 已接入 **Apify MCP 服务器**，Claude、ChatGPT、Cursor 等助手可以把它当作工具直接调用，用自然语言提问即可拿到结构化结果，无需写胶水代码。

### 集成与 API

支持 **Make、Zapier、n8n、Slack、Airbyte、Gumloop、CrewAI、IFTTT、Lindy、GitHub、Google Sheets、Google Drive**，以及 Webhook、定时任务与 MCP 服务器。

```bash
curl -X POST "https://api.apify.com/v2/acts/myagizm~tiktok-video-downloader-v2/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": ["https://www.tiktok.com/@nasa/video/7665075736742530317"], "resultsLimit": 100, "withWatermark": false}'
```

把 `format` 改成 `json`、`csv`、`xlsx` 或 `xml` 即可导出不同格式。

### 常见问题

**真的没有水印吗？**
是的，关闭 **With watermark** 即为干净文件；需要原始带水印版本时可以打开。

**下载链接能用多久？**
时间很短（平台签名）。每行都给出 `linkExpiresAt` 与 `linkExpiresInMinutes`。

**支持图文（轮播）帖吗？**
支持，每张一行，`mediaType` 为 `image`。

**能只下载音频吗？**
可以，使用 `audioUrl`。

**Actor 会帮我保存视频文件吗？**
不会，只返回链接，存储位置由你决定 —— 这样更便宜也更可控。

**下载的视频能商用吗？**
这取决于你与版权方。本工具只提供对公开媒体的访问，版权依然适用。

**需要 TikTok 账号、登录、Cookie 或 API Key 吗？**
不需要。不登录、不用 Cookie、不需要开发者应用、不需要审核、不需要 access token。

**抓取 TikTok 合法吗？**
只采集公开可见的数据，即任何未登录访客都能看到的内容，不登录、不访问私密账号。合规责任由使用者承担：如涉及个人数据请遵守 GDPR / CCPA 与平台条款。

**能抓私密账号吗？**
不能，会被跳过并记录在运行日志中。

**需要配置代理吗？**
不需要，已内置托管。

**支持导出 CSV / Excel / JSON 吗？**
支持 JSON、CSV、Excel、XML。

**可以通过 Apify API 调用吗？**
可以，同步与异步接口见上方示例。

**支持 AI 智能体（MCP）吗？**
支持，Claude、ChatGPT、Cursor 均可当作工具调用。

**可以定时运行吗？**
可以，支持 Apify Schedules、API 与 Webhook。

**数据有多新？**
不缓存，每次运行都读取当前公开页面。

**媒体链接失效了？**
TikTok 的 CDN 链接带签名，数小时内过期，请在抓取的同一时段下载或转存。

### 免责声明

本工具为独立第三方工具，与 TikTok 及字节跳动（ByteDance） 无任何隶属、认可或赞助关系，所有商标归各自所有者。

本 Actor 只采集**公开可见**的数据 —— 即任何未登录访客都能看到的内容。它不登录、不绕过访问控制、不获取私密内容。数据使用的合规责任由使用者承担：如涉及个人数据，请遵守 GDPR、CCPA 等法规与平台条款。

### 相关搜索

tiktok 视频下载 · tiktok 无水印下载 · tiktok mp4 下载链接 · tiktok 去水印 api · tiktok 音频下载 · tiktok 音乐下载 · tiktok 批量下载 · tiktok 图文下载 · tiktok 轮播下载 · tiktok 下载 api · tiktok 视频备份 · tiktok 创意素材库 · 保存 tiktok 高清视频

# Actor input Schema

## `startUrls` (type: `array`):

Video URLs or numeric IDs to get download links for. Slideshows return one item per image.

## `resultsLimit` (type: `integer`):

Hard cap on how many results this run returns. A run lasts at most ~10 minutes.

## `withWatermark` (type: `boolean`):

Return the watermarked version instead of the clean one.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.tiktok.com/@tom.cashman/video/7057727079848103169"
  ],
  "resultsLimit": 100,
  "withWatermark": false
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped results as structured JSON.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://www.tiktok.com/@tom.cashman/video/7057727079848103169"
    ],
    "resultsLimit": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("myagizm/tiktok-video-downloader-v2").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": ["https://www.tiktok.com/@tom.cashman/video/7057727079848103169"],
    "resultsLimit": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("myagizm/tiktok-video-downloader-v2").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.tiktok.com/@tom.cashman/video/7057727079848103169"
  ],
  "resultsLimit": 100
}' |
apify call myagizm/tiktok-video-downloader-v2 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=myagizm/tiktok-video-downloader-v2",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TikTok Video Downloader V2 (no watermark)",
        "description": "Get watermark-free download links for any public TikTok video, plus the cover image and the original audio track. Slideshow posts return one link per image. Each item reports exactly when the link expires.",
        "version": "0.1",
        "x-build-id": "IReW9fp9l45HRE9pg"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/myagizm~tiktok-video-downloader-v2/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-myagizm-tiktok-video-downloader-v2",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/myagizm~tiktok-video-downloader-v2/runs": {
            "post": {
                "operationId": "runs-sync-myagizm-tiktok-video-downloader-v2",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/myagizm~tiktok-video-downloader-v2/run-sync": {
            "post": {
                "operationId": "run-sync-myagizm-tiktok-video-downloader-v2",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "TikTok video URLs",
                        "type": "array",
                        "description": "Video URLs or numeric IDs to get download links for. Slideshows return one item per image.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "resultsLimit": {
                        "title": "Max files",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Hard cap on how many results this run returns. A run lasts at most ~10 minutes.",
                        "default": 100
                    },
                    "withWatermark": {
                        "title": "Keep watermark",
                        "type": "boolean",
                        "description": "Return the watermarked version instead of the clean one.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
