# TikTok Video Tracker (`searchshark/tiktok-video-tracker`) Actor

Track public TikTok videos over time with views, likes, comments, shares, 1h/24h/7d growth, views-per-hour, viral acceleration, persistent history, and fastest-growing rankings. Built for creators, agencies, brands, and researchers.

- **URL**: https://apify.com/searchshark/tiktok-video-tracker.md
- **Developed by:** [SearchShark Tools](https://apify.com/searchshark) (community)
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Tracker

**TikTok Video Tracker** monitors **public TikTok video performance over time** instead of returning only a one-time snapshot.

Track views, likes, comments, shares, historical growth, view velocity, viral acceleration, and fastest-growing videos without manually checking every post.

- 📊 Track video growth across repeated runs
- ⏱ Compare 1-hour, 24-hour, and 7-day performance
- 🚀 Detect acceleration in recent view velocity
- 🏆 Rank the fastest-growing videos in the current batch
- 🕒 Build persistent historical snapshots
- 🛡 Keep successful results when another video fails
- ⚡ Process up to 5 TikTok requests concurrently
- 🔁 Retry temporary HTTP and network failures
- 🔌 Use results through Apify Dataset, API, integrations, or downstream apps

***

### 📦 What data does TikTok Video Tracker extract?

| | |
| --- | --- |
| 🆔 **Video ID** | 🔗 **TikTok video URL** |
| 👤 **Creator username** | 📝 **Video caption** |
| 📅 **Published timestamp** | 👁 **Current views** |
| ❤️ **Current likes** | 💬 **Current comments** |
| 🔁 **Current shares** | 🕒 **Snapshot timestamp** |
| 📈 **Views gained** | ⚡ **Views per hour** |
| 🕐 **1-hour metrics** | 🗓 **24-hour metrics** |
| 📆 **7-day metrics** | 🚀 **Viral acceleration** |
| 🏆 **1-hour growth rank** | 📚 **Snapshot count** |
| ⚠️ **Status** | 🧾 **Error message when applicable** |

> Historical fields remain `null` until a suitable comparison snapshot exists. The Actor does not invent growth data.

***

### 🚀 Features

- Up to **200 TikTok video URLs per run**
- Persistent tracking history across Actor runs
- Previous-snapshot comparison
- 1-hour growth window
- 24-hour growth window
- 7-day growth window
- Views-per-hour calculations using actual elapsed time
- Viral acceleration using 1h vs 24h and 24h vs 7d velocity
- Fastest-growing ranking by 1-hour view velocity
- Duplicate video-ID protection
- Retry handling for temporary HTTP/network failures
- Partial-failure protection
- Up to 5 concurrent TikTok fetches
- Structured Dataset output
- HTTP-first architecture

***

## ⬇️ Input

Paste one or more public TikTok video URLs.

```text
Minimum: 1 TikTok video URL
Maximum: 200 TikTok video URLs
```

Expected format:

```text
https://www.tiktok.com/@username/video/VIDEO_ID
```

Example:

```json
{
  "videoUrls": [
    "https://www.tiktok.com/@creator/video/1234567890123456789",
    "https://www.tiktok.com/@anothercreator/video/9876543210987654321"
  ]
}
```

Duplicate valid video IDs are processed once.

***

## ⬆️ Output

Results are stored in the Actor's default **Apify Dataset** and can be accessed from Output, Storage, the Apify API, or integrations.

Example successful result:

```json
{
  "status": "ok",
  "videoId": "1234567890123456789",
  "url": "https://www.tiktok.com/@creator/video/1234567890123456789",
  "creator": "creator",
  "caption": "Example TikTok caption",
  "publishedAt": "2026-09-01T10:00:00.000Z",
  "currentViews": 200000,
  "currentLikes": 24000,
  "currentComments": 1800,
  "currentShares": 950,
  "checkedAt": "2026-09-08T05:00:00.000Z",
  "viewsGained1h": 10000,
  "viewsPerHour1h": 10000,
  "viewsGained24h": 48000,
  "viewsPerHour24h": 2000,
  "viewsGained7d": 84000,
  "viewsPerHour7d": 500,
  "acceleration1hVs24h": 5,
  "accelerationPercent1hVs24h": 400,
  "acceleration24hVs7d": 4,
  "accelerationPercent24hVs7d": 300,
  "snapshotCount": 42,
  "growthRank1h": 1
}
```

Example error result:

```json
{
  "status": "error",
  "videoId": "9999999999999999999",
  "url": "https://www.tiktok.com/@creator/video/9999999999999999999",
  "error": "TikTok video details were not found",
  "checkedAt": "2026-09-08T05:00:00.000Z"
}
```

***

## 🕒 Historical tracking

The first successful run creates a baseline snapshot. Later runs reuse stored history and calculate real changes over time.

History is stored in the named Apify Key-Value Store:

```text
tiktok-video-tracker-history
```

This enables repeated tracking rather than treating every run as unrelated data.

***

## 🕐 1-hour growth tracking

Fields include:

```text
viewsGained1h
likesGained1h
commentsGained1h
sharesGained1h
viewsGrowthPercent1h
viewsPerHour1h
```

The tracker looks for a snapshot around:

```text
1 hour ago ± 30 minutes
```

If no suitable snapshot exists, the fields remain `null`.

***

## 🗓 24-hour growth tracking

Fields include:

```text
viewsGained24h
likesGained24h
commentsGained24h
sharesGained24h
viewsGrowthPercent24h
viewsPerHour24h
```

Target window:

```text
24 hours ago ± 6 hours
```

***

## 📆 7-day growth tracking

Fields include:

```text
viewsGained7d
likesGained7d
commentsGained7d
sharesGained7d
viewsGrowthPercent7d
viewsPerHour7d
```

Target window:

```text
7 days ago ± 24 hours
```

***

## 🚀 Viral acceleration

The Actor compares recent velocity with longer-term velocity using:

```text
acceleration1hVs24h
accelerationPercent1hVs24h
acceleration24hVs7d
accelerationPercent24hVs7d
```

Example:

```text
1h velocity: 10,000 views/hour
24h velocity: 2,000 views/hour

acceleration1hVs24h: 5
accelerationPercent1hVs24h: 400
```

***

## 🏆 Fastest-growing video rank

`growthRank1h` ranks successful videos in the current Actor batch by valid `viewsPerHour1h`.

```text
Video A → 5,000 views/hour → rank 2
Video B → 12,000 views/hour → rank 1
Video C → no 1h history → null
```

This is a **current-batch ranking**, not a global TikTok ranking.

***

## ⚡ Performance

The Actor uses an **HTTP-first architecture** and does not launch a full browser for normal tracking.

Up to **5 TikTok requests** can be active at the same time. When one finishes, the next pending video starts immediately.

***

## 🛡 Reliability

Temporary TikTok HTTP responses are retried:

```text
429
500
502
503
504
```

Up to **3 total attempts** are made.

Temporary network errors are also retried. If all attempts fail, the final row contains a readable error.

Videos are processed independently, so one failed video does not remove successful results from the Dataset.

***

## 🔌 API & integrations

Use TikTok Video Tracker with:

- Apify API
- Google Sheets
- Make
- Zapier
- Internal APIs
- Social-media dashboards
- Data warehouses
- Creator analytics systems
- Influencer campaign tools
- Monitoring systems
- AI agents
- MCP workflows

***

## 💡 Example use cases

#### 🎬 Creator video monitoring

Track your own posts and compare growth across repeated runs.

#### 📊 Influencer campaign monitoring

Compare sponsored TikTok posts from multiple creators.

#### 🚀 Viral-content detection

Inspect short-term velocity, 24-hour velocity, acceleration, and growth rank.

#### 🏆 Multi-video comparison

Submit multiple videos and identify the fastest-growing ones.

#### 🔬 Social-media research

Collect repeated public performance snapshots for selected TikTok videos.

#### 🤖 Automated monitoring

Use Apify Schedules and API workflows to run the tracker repeatedly.

***

## ⚠️ Current limitations

The current version does **not** perform:

```text
TikTok profile discovery
Hashtag search
Keyword search
Follower tracking
Comment extraction
Separate hashtag extraction
Separate music metadata extraction
Private video access
Age-restricted/private-account bypass
TikTok login automation
Short-link resolution
Browser fallback
Proxy configuration
Built-in scheduling UI
Global TikTok rankings
```

Scheduling should currently be handled using **Apify Schedules** or another automation workflow.

TikTok may change its public page structure or apply rate limits, which can temporarily affect availability.

***

## ❓ FAQ

### Can I track the same video over time?

**Yes.** Repeated runs are the main purpose of this Actor.

### Why are historical fields null on the first run?

The first successful run creates the baseline. Historical metrics require a suitable earlier snapshot.

### How often should I run it?

For strong 1-hour tracking, an hourly Apify Schedule is recommended.

### What happens if one URL fails?

That input receives `status: "error"` while successful videos remain available.

### Can I use it through an API?

**Yes.** Start the Actor through the Apify API and consume the Dataset programmatically.

### Is a browser required?

**Not for the current normal tracking workflow.**

### Does the Actor fabricate missing data?

**No.** Missing historical comparisons remain `null`; unavailable videos return error rows.

***

## 🧭 Recommended workflow

```text
1. Add the TikTok videos you want to monitor
2. Run once to create baseline snapshots
3. Create a recurring Apify Schedule
4. Run the same videos repeatedly
5. Watch 1h / 24h / 7d metrics populate
6. Compare growthRank1h and viral acceleration
7. Export or send Dataset results to your analytics workflow
```

***

## 💬 Feedback & support

Found a bug or have a feature request?

Use the Actor's **Issues** tab on Apify.

Useful future additions may include short-link resolution, profile-based discovery, hashtag/music metadata, more growth windows, engagement-rate analytics, configurable concurrency, and additional leaderboard modes.

***

### 🚀 TikTok growth analytics without the manual checking

Paste your public TikTok video URLs, run the Actor, and receive **structured current statistics plus historical growth analytics** ready for **creator monitoring, influencer campaigns, research, APIs, dashboards, and automation**.

# Actor input Schema

## `videoUrls` (type: `array`):

Paste one or more public TikTok video URLs. Duplicate video IDs are automatically ignored.

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.tiktok.com/@cllixssss444/video/7654645616496168200"
  ]
}
```

# Actor output Schema

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

Successful TikTok tracking rows and clean per-video error rows.

# 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 = {
    "videoUrls": [
        "https://www.tiktok.com/@cllixssss444/video/7654645616496168200"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("searchshark/tiktok-video-tracker").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 = { "videoUrls": ["https://www.tiktok.com/@cllixssss444/video/7654645616496168200"] }

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

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

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

```

## CLI example

```bash
echo '{
  "videoUrls": [
    "https://www.tiktok.com/@cllixssss444/video/7654645616496168200"
  ]
}' |
apify call searchshark/tiktok-video-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,searchshark/tiktok-video-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/L494yHhFpwqr1Nvbd/builds/zTxKh27oFFrU0xnJ7/openapi.json
