TikTok data API: the official API or an Apify Actor?
TikTok has an official API with limited access. 17 Apify Actors in this catalogue return TikTok data over HTTP too: send the input to Apify's run-sync endpoint with your token and get the records back as JSON, from $0.40 a run plus $0.99 per 1,000 results at Store prices (plus platform usage).
Side by side
| TikTok APIs | Apify Actors (17) | |
|---|---|---|
| Access | Limited access | Apify API token (any account) |
| What you get | TikTok offers Display APIs for authorized accounts, a Research API for approved academic researchers, and business products. There is no open general-purpose public content API. | Rows defined by each Actor's published schema; up to 24 fields per record |
| Price | Separate products have their own terms; general access is not sold as a self-serve per-call API. | From $0.40 a run plus $0.99 per 1,000 results (Store price, Free plan), plus platform usage |
| Limits | Approval, research eligibility and rate limits apply. | Synchronous calls wait up to 300 s; longer runs go asynchronous |
| Docs | TikTok APIs | Apify API: run-sync |
Official API facts checked 2026-11-09. Public content only; respect TikTok's terms and local privacy rules; not legal advice.
Which Actor for which job
All of them list $0.99 per 1,000 results on the Store, plus a start fee per run.
| Actor | Returns | Fields include | Call it |
|---|---|---|---|
| TikTok Keyword Search & Discovery Scraper | Search TikTok by keyword or phrase and get matching videos with engagement stats, author profiles, music metadata, hashtags, and… | postId, searchType, caption | run-sync · Apify |
| TikTok Verified Mention Tracker | TikTok posts that tag or @mention the tracked accounts: mention type, matching tag, caption, post date, views, likes, comments… | targetUsername, mentionType, postUrl | run-sync · Apify |
| TikTok Comment & Reply Thread Extractor | One record per TikTok comment or reply, with text, like/reply counts, pinned/hearted flags, reply-thread links, and commenter… | rowType, commentId, postId | run-sync · Apify |
| TikTok Explore Feed Trending Post Scraper | Collect trending posts from TikTok's Explore feed across one or more content categories, with engagement stats, author snapshot… | marketRegion, categoryName, categoryId | run-sync · Apify |
| TikTok Video, Audio & Cover Downloader | One dataset row per asset (video clean/watermarked, audio, cover, slideshow frame, metadata) plus explicit status rows for… | postId, postUrl, assetType | run-sync · Apify |
| TikTok Account Stats & Repost History Scraper | Account rows with exact stats and live status, video and repost rows with engagement metrics and media metadata, and playlist… | rowType, username, displayName | run-sync · Apify |
| TikTok Anonymous For You Feed Snapshot Scraper | Posts captured from the anonymous TikTok For You feed, with rank, engagement metrics, author, music, video, subtitles, POI, and… | postId, postUrl, caption | run-sync · Apify |
| TikTok Follow Graph & Audience Export Scraper | One record per TikTok follower or following account, with profile identity, exact audience stats, source context, and optional… | sourceUsername, listType, userId | run-sync · Apify |
| TikTok Hashtag Momentum & Top Creator Tracker | Trending-hashtag rows with ranks, post and view counts, popularity curves, momentum signals and top creators; optional… | rowType, rankIndex, hashtagName | run-sync · Apify |
| TikTok LIVE Room Status & Chat Capture Tool | One row per creator (live status, room metadata, playback URLs, host and audience stats) or one row per real-time LIVE event… | isLive, hostUsername, liveTitle | run-sync · Apify |
| TikTok Sound Lookup: Metadata & Videos Using It | Sound metadata rows (rowType=music), videos using each sound (rowType=post), and optional error rows (rowType=error), joined by… | rowType, musicTitle, authorName | run-sync · Apify |
| TikTok Top Ads Leaderboard - 122 Markets & Metrics | Top-performing TikTok ads from the Creative Center. Each row includes the ad ID, title, brand, CTR, likes, cost tier, industry… | adId, adTitle, brandName | run-sync · Apify |
| TikTok Video Subtitle & Transcript Extractor | One row per video language with timestamped caption segments, full transcript, source flags, available languages and optional… | username, languageCode, segmentCount | run-sync · Apify |
| TikTok Hashtag Video Feed & Stats Extractor | Aggregate hashtag stats rows (video/view totals, source, region) and video rows (caption, author, music, engagement… | searchedHashtag, hashtagName, videoCount | run-sync · Apify |
| TikTok Keyword & Brand Mention Monitor | One row per public TikTok post matched to a keyword, hashtag, handle, photo search, related search or explicit sound, with match… | postId, mentionInCaption, caption | run-sync · Apify |
| TikTok Playlist Discovery & Video Order Scraper | Playlist and collection metadata rows, ordered video rows with engagement and media fields, and visible status rows. | rowType, playlistType, playlistId | run-sync · Apify |
| TikTok Post & Slideshow Detail Scraper | Post rows with engagement stats, author snapshot, music, media, hashtags/mentions; comment rows with replies; and explicit… | postId, postUrl, postType | run-sync · Apify |
Call TikTok Verified Mention Tracker
The call waits for the run and returns the records as JSON. Swap the Actor ID for any Actor in the table. Set APIFY_TOKEN first; runs bill to that account.
curl
curl -X POST "https://api.apify.com/v2/actors/nimbryxo-studio~tiktok-profile-mention-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"usernames":["billieeilish"],"mentionFilter":"all","excludeOwnPosts":true,"searchDepth":"standard","followRelatedVideos":false,"maxResultsPerProfile":3,"downloadVideos":false,"addPostCountry":false}' Install: pip install "apify-client>=3"
Python
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run_input = {
"usernames": [
"billieeilish",
],
"mentionFilter": "all",
"excludeOwnPosts": True,
"searchDepth": "standard",
"followRelatedVideos": False,
"maxResultsPerProfile": 3,
"downloadVideos": False,
"addPostCountry": False,
}
run = client.actor("nimbryxo-studio/tiktok-profile-mention-scraper").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run could not be started")
print(run.status, "dataset", run.default_dataset_id)
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) Install: npm install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
"usernames": [
"billieeilish"
],
"mentionFilter": "all",
"excludeOwnPosts": true,
"searchDepth": "standard",
"followRelatedVideos": false,
"maxResultsPerProfile": 3,
"downloadVideos": false,
"addPostCountry": false
};
const run = await client.actor("nimbryxo-studio/tiktok-profile-mention-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0]); Generated from the Actor's published schema and checked, not executed.
Same data, other routes
- TikTok MCP server: these Actors as tools in Claude, Cursor, ChatGPT, VS Code and Codex.
- TikTok hashtag trends to Google Sheets: an n8n workflow you can import.
- TikTok brand mentions to Notion: an n8n workflow you can import.
- Every Actor with a one-request API
When a call fails
Why does the workflow or script stop with HTTP 408?
The synchronous endpoint waits at most 300 seconds. After that it answers 408 while the run keeps going in Apify. Lower the result limit, or start the run asynchronously, wait for it to finish and then read its dataset.
Source: Apify API: run Actor synchronously and get dataset items
What do 400, 401, 402 and 403 from the Apify API mean?
Read error.type in the response body. 400 is invalid Actor input. 401 (user-or-token-not-found) means a token reached Apify but it is wrong or revoked. 402 with x402-payment-required means no token reached Apify at all: the n8n credential or the Authorization: Bearer header is missing, and Apify is offering its pay-per-run x402 route for agents instead; any other 402 is an exhausted usage limit on the account that pays for the run. 403 is a token without permission for that Actor or storage.
Source: Apify API: authentication; Apify documentation: agentic payments with x402; Apify API: run Actor synchronously and get dataset items
Why does starting an Actor through the API return run information instead of scraped results?
The Run Actor endpoint starts the Actor and immediately returns a Run object without waiting for completion. For results stored in the default dataset, pass the response's defaultDatasetId to Get dataset items; to wait and receive output directly, use the synchronous endpoint for dataset items or a key-value store record.
Source: Apify Run Actor API
Why are rows and hidden fields missing from my Apify dataset export?
The clean parameter enables both skipEmpty and skipHidden, removing empty items and fields whose names begin with #. This can produce fewer items than the requested limit; to retain those rows and fields, disable clean and ensure skipEmpty and skipHidden are also disabled.
Source: Apify Get dataset items API
Questions
Is there an official TikTok API?
TikTok offers Display APIs for authorized accounts, a Research API for approved academic researchers, and business products. There is no open general-purpose public content API. Separate products have their own terms; general access is not sold as a self-serve per-call API.
How much does TikTok data cost through an Apify Actor?
The Actors listed here charge from $0.40 a run plus $0.99 per 1,000 results on the Apify Store (Free plan), checked 2026-11-12, billed to the Apify account whose token makes the call. Actor start events and platform usage can add to that.
Can I get TikTok data as JSON in one HTTP request?
Yes, through Apify's run-sync-get-dataset-items endpoint: POST the Actor input with your token and the response is the dataset as JSON. It waits up to 300 seconds; longer runs need the asynchronous run endpoint.
Can an AI agent use the same TikTok data?
Yes. The TikTok MCP page bundles these Actors into one Apify MCP URL for Claude, Cursor, ChatGPT, VS Code and Codex.
Is it allowed to collect TikTok data?
Public content only; respect TikTok's terms and local privacy rules; not legal advice. Read TikTok's terms before you build on the data.
Sources
- TikTok APIs documentation, checked 2026-11-09
- Apify API: run Actor synchronously, checked 2026-11-11
- TikTok terms