# TikTok Video Scraper V2 (`myagizm/tiktok-video-scraper-v2`) Actor

Scrape any public TikTok video by URL with guaranteed delivery. Returns plays, likes, comments, shares, saves, duration, description, hashtags, music info, cover image and author stats.

- **URL**: https://apify.com/myagizm/tiktok-video-scraper-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.94 / 1,000 tiktok video scrapeds

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 Scraper — scrape plays, likes, shares & saves by URL (No API Key, No Login)

<p align="center">
  <a href="https://apify.com/myagizm/tiktok-video-scraper-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>

**Scrape TikTok video data from any public video URL** — no login, no cookies, no TikTok for Developers app, no access token. The TikTok Video Scraper returns each video as a structured record: caption with hashtags, plays, likes, comments, shares, **saves**, duration, cover image, sound title and author, creator handle and ID, and an ISO timestamp. Ideal for measuring creative performance, verifying influencer numbers, and building video datasets. Export to JSON, CSV, Excel, or XML.

> **Get your first video free in under 2 minutes** — paste a link, click Start. 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 Scraper V2 do? {#what-can-it-do}

- 🎬 **Scrape any public TikTok video** from its URL.
- ▶️ **Get plays** — the reach metric that matters for short-form.
- ❤️ **Get likes, comments, shares, and saves** in one row.
- ⏱️ **Get duration** to compare short vs long formats.
- 🎵 **Get the sound** — title and author, so you can spot trending audio.
- 📝 **Read the caption** with hashtags extracted as a plain array.
- 👤 **Get creator handle, display name, and numeric ID**.
- 🖼️ **Get the cover image URL** for dashboards and boards.
- 🗂️ **Batch as many video URLs as you like** in one run.
- 🚚 **Managed delivery** — consistent results on every run.
- 📤 **Export** to JSON, CSV, Excel, or XML, or pull live via API.

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 Scraper V2? {#who-uses-it}

- 📢 **Paid social teams** — measure organic performance of creatives before scaling spend.
- 🤝 **Influencer marketers** — verify the numbers a creator reports on a specific video.
- 🎵 **Trend researchers** — track which sounds carry reach across videos.
- 📊 **Analysts** — turn a spreadsheet of TikTok links into a metrics table.
- 🧑‍💻 **AI & data teams** — build labelled video datasets with captions and engagement.

---

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

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Video ID. |
| `url` | string | Direct link to the video. |
| `text` | string | Video caption / description. |
| `hashtags` | array | Hashtags from the caption, as plain strings. |
| `plays` | number | Play count. |
| `likes` | number | Likes (hearts). |
| `comments` | number | Comment count. |
| `shares` | number | Share count. |
| `saves` | number | Saves / favourites. |
| `duration` | number | Video length in seconds. |
| `coverUrl` | string | Cover image URL. |
| `musicTitle` | string | Sound title. |
| `musicAuthor` | string | Sound author. |
| `author` | string | Creator handle. |
| `authorName` | string | Creator display name. |
| `authorId` | string | Creator numeric ID. |
| `createdAt` | string | Publish timestamp (ISO). |
| `createdAtEpoch` | number | Publish timestamp as Unix epoch. |

> 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 TikTok video data {#how-to}

1. **Open the TikTok Video Scraper** on [Apify](https://apify.com/myagizm/tiktok-video-scraper-v2).
2. **Paste video URLs** into *TikTok video URLs*.
3. *(Optional)* Set **Max videos** to cap the run.
4. Click **▶ Start** and export the dataset.

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": 200
}
````

- **startUrls** — public TikTok video URLs. Queue as many as you need.
- **resultsLimit** — hard cap on videos returned per run.

***

### Output example {#output-example}

```json
{
  "id": "7665075736742530317",
  "url": "https://www.tiktok.com/@nasa/video/7665075736742530317",
  "text": "Something big just landed on TikTok.",
  "likes": 42889,
  "plays": 312798,
  "saves": 3325,
  "author": "nasa",
  "shares": 2133,
  "authorId": "7664638705177150477",
  "comments": 1071,
  "coverUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0HdfAsh9SB9VEQqqXFfDBgq90rHH8QBRvD7EM~tplv-tiktokx-shrink-aq:360:360:q75.webp?dr=11731&refresh_token=cde86df3&x-expires=1785308400&x-signature=KBOlDWEqoXq3p57YJiCK7YvsWco%3D&t=bacd0480&ps=d97f9a4f&shp=d05b14bd&shcp=1d1a97fc&idc=useast5&biz_tag=tt_video&s=AWEME_DETAIL&sc=feed_cover",
  "duration": 25,
  "hashtags": [],
  "createdAt": "2026-07-21T20:09:02.000Z",
  "authorName": "NASA",
  "musicTitle": "original sound - nasa",
  "sourceType": "tiktok",
  "musicAuthor": "NASA",
  "createdAtEpoch": 1784664542
}
```

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-scraper-v2).

***

### Tips {#tips}

- 💾 **`saves` is the underrated KPI** — high saves signal genuinely useful content, not just idle scrolling.
- ▶️ **Compare likes ÷ plays** across videos to normalise for reach.
- 🎵 **Group by `musicTitle`** to see whether a trending sound drove the numbers.
- ⏱️ **Bucket by `duration`** to find the length that performs best for an account.
- 🕒 **Use `createdAtEpoch`** for clean time-bucketing in SQL and spreadsheets.
- 🔁 **Re-run on a schedule** if you are tracking how a video accumulates plays.

***

### 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 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.
- ⬇️ **[TikTok Video Downloader](https://apify.com/myagizm/tiktok-video-downloader-v2)** — watermark-free MP4 and audio download links.

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 Scraper V2 is available through the **Apify MCP server**, so AI assistants can call it as a tool and pull TikTok video data 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:

- 📊 **Creative autopsy** — "why did this video perform? show plays, saves, sound, and duration."
- 🎵 **Sound analysis** — "which sound appears in the best-performing videos here?"
- 📈 **Benchmark** — "compare like-to-play ratios across these 20 videos."
- ✍️ **Caption patterns** — "what do the top captions have in common?"

***

### 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-scraper-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": 200}'
```

#### Start a run asynchronously

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

#### Fetch dataset items later

```bash
curl "https://api.apify.com/v2/acts/myagizm~tiktok-video-scraper-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-scraper-v2/issues)**. Please include the input you used so we can reproduce and fix it quickly.

***

### FAQ {#faq}

#### Can I download the video file?

Use the [TikTok Video Downloader](https://apify.com/myagizm/tiktok-video-downloader-v2) for watermark-free MP4 and audio links. This actor returns metrics and the cover image.

#### Can I scrape all videos of a creator?

This actor takes video URLs. For discovery, use the [Hashtag Scraper](https://apify.com/myagizm/tiktok-hashtag-scraper-v2), and pair with the [Profile Scraper](https://apify.com/myagizm/tiktok-profile-scraper-v2) for account stats.

#### Do you return comment text?

No — this actor returns the comment *count*. Use the [Comments Scraper](https://apify.com/myagizm/tiktok-comments-scraper-v2) for the comments themselves.

#### Are photo (slideshow) posts supported?

Yes, they return with their metrics; `duration` may be null for non-video posts.

#### 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 scraper · tiktok video data api · scrape tiktok video stats · tiktok plays scraper · tiktok saves metric · tiktok engagement scraper · tiktok video metrics csv · tiktok url scraper · tiktok api alternative · scrape tiktok without login · tiktok sound tracker · tiktok trending audio data · tiktok creative performance · tiktok video dataset · tiktok caption scraper

***

### 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。每条视频返回结构化数据：文案与话题标签、播放量、点赞、评论、分享、**收藏**、时长、封面图、音乐名称与作者、作者用户名与 ID，以及 ISO 时间戳。适合衡量创意表现、核实红人数据与构建视频数据集。

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

### 能做什么

- 🎬 **按链接抓取任意公开视频**。
- ▶️ **播放量** —— 短视频最关键的触达指标。
- ❤️ **点赞、评论、分享、收藏**一行齐全。
- ⏱️ **时长**，可对比长短视频。
- 🎵 **音乐信息** —— 名称与作者，便于发现热门音频。
- 📝 **文案**与已提取的话题标签。
- 👤 **作者用户名、显示名与数字 ID**。
- 🖼️ **封面图地址**。
- 🗂️ **一次可排队大量链接**。
- 🚚 **托管交付**，结果稳定。
- 📤 **导出** JSON / CSV / Excel / XML。

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

### 谁在用

- 📢 **投放团队** —— 在加预算前衡量创意的自然表现。
- 🤝 **红人营销** —— 核实达人自报的单条数据。
- 🎵 **趋势研究** —— 跟踪哪些音频带来流量。
- 📊 **分析师** —— 把链接清单变成指标表。
- 🧑‍💻 **AI 与数据团队** —— 构建含文案与互动的视频数据集。

### 可以抓取哪些数据

| 字段 | 类型 | 说明 |
|------|------|------|
| `id` | string | 视频 ID |
| `url` | string | 视频直达链接 |
| `text` | string | 视频文案 |
| `hashtags` | array | 文案中的话题标签 |
| `plays` | number | 播放量 |
| `likes` | number | 点赞（爱心）数 |
| `comments` | number | 评论数 |
| `shares` | number | 分享数 |
| `saves` | number | 收藏数 |
| `duration` | number | 视频时长（秒） |
| `coverUrl` | string | 封面图地址 |
| `musicTitle` | string | 音乐名称 |
| `musicAuthor` | string | 音乐作者 |
| `author` | string | 作者用户名 |
| `authorName` | string | 作者显示名 |
| `authorId` | string | 作者数字 ID |
| `createdAt` | string | 发布时间（ISO） |
| `createdAtEpoch` | number | 发布时间（Unix） |

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

### 使用步骤

1. 打开 [TikTok 视频抓取工具](https://apify.com/myagizm/tiktok-video-scraper-v2)。
2. 在 *TikTok video URLs* 粘贴视频链接。
3. （可选）用 **Max videos** 限制数量。
4. 点击 **▶ Start** 并导出数据。

### 输入示例

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

### 输出示例

```json
{
  "id": "7665075736742530317",
  "url": "https://www.tiktok.com/@nasa/video/7665075736742530317",
  "text": "Something big just landed on TikTok.",
  "likes": 42889,
  "plays": 312798,
  "saves": 3325,
  "author": "nasa",
  "shares": 2133,
  "authorId": "7664638705177150477",
  "comments": 1071,
  "coverUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0HdfAsh9SB9VEQqqXFfDBgq90rHH8QBRvD7EM~tplv-tiktokx-shrink-aq:360:360:q75.webp?dr=11731&refresh_token=cde86df3&x-expires=1785308400&x-signature=KBOlDWEqoXq3p57YJiCK7YvsWco%3D&t=bacd0480&ps=d97f9a4f&shp=d05b14bd&shcp=1d1a97fc&idc=useast5&biz_tag=tt_video&s=AWEME_DETAIL&sc=feed_cover",
  "duration": 25,
  "hashtags": [],
  "createdAt": "2026-07-21T20:09:02.000Z",
  "authorName": "NASA",
  "musicTitle": "original sound - nasa",
  "sourceType": "tiktok",
  "musicAuthor": "NASA",
  "createdAtEpoch": 1784664542
}
```

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

### 价格

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

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

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

### 使用建议

- 💾 **`saves` 是被低估的指标** —— 收藏高说明内容真正有用。
- ▶️ 用 **点赞 ÷ 播放** 做跨视频归一化比较。
- 🎵 按 `musicTitle` 分组，看热门音频是否是关键。
- ⏱️ 按 `duration` 分桶，找出最适合该账号的时长。
- 🕒 用 `createdAtEpoch` 做时间分桶最方便。

### 其他 TikTok 数据

- 👤 **[TikTok 账号资料抓取工具](https://apify.com/myagizm/tiktok-profile-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-video-downloader-v2)** —— 获取无水印 MP4 与音频下载链接。

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

- 🎵 **[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-scraper-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": 200}'
```

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

### 常见问题

**能下载视频文件吗？**
请用[TikTok 视频下载工具](https://apify.com/myagizm/tiktok-video-downloader-v2)获取无水印 MP4 与音频链接。

**能抓某个作者的全部视频吗？**
本工具按链接工作；发现内容请用[标签抓取工具](https://apify.com/myagizm/tiktok-hashtag-scraper-v2)，账号数据用[资料抓取工具](https://apify.com/myagizm/tiktok-profile-scraper-v2)。

**返回评论内容吗？**
只返回评论数量，评论内容请用[评论抓取工具](https://apify.com/myagizm/tiktok-comments-scraper-v2)。

**支持图文（轮播）帖吗？**
支持，会返回指标；非视频帖的 `duration` 可能为 null。

**需要 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 视频数据 api · 抓取 tiktok 视频指标 · tiktok 播放量抓取 · tiktok 收藏数据 · tiktok 互动数据 · tiktok 视频指标 csv · tiktok 链接抓取 · tiktok api 替代 · 免登录抓取 tiktok · tiktok 音乐追踪 · tiktok 热门音频数据 · tiktok 创意表现 · tiktok 视频数据集

# Actor input Schema

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

Video URLs or numeric video IDs.

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

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

## Actor input object example

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

# 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-scraper-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-scraper-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-scraper-v2 --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TikTok Video Scraper V2",
        "description": "Scrape any public TikTok video by URL with guaranteed delivery. Returns plays, likes, comments, shares, saves, duration, description, hashtags, music info, cover image and author stats.",
        "version": "0.1",
        "x-build-id": "2qN87pmNh4OHW7zml"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/myagizm~tiktok-video-scraper-v2/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-myagizm-tiktok-video-scraper-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-scraper-v2/runs": {
            "post": {
                "operationId": "runs-sync-myagizm-tiktok-video-scraper-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-scraper-v2/run-sync": {
            "post": {
                "operationId": "run-sync-myagizm-tiktok-video-scraper-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 video IDs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "resultsLimit": {
                        "title": "Max videos",
                        "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
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
