TikTok Transcript & Video Metadata Scraper API avatar

TikTok Transcript & Video Metadata Scraper API

Pricing

from $1.00 / 1,000 results

Go to Apify Store
TikTok Transcript & Video Metadata Scraper API

TikTok Transcript & Video Metadata Scraper API

Extract existing TikTok transcripts, captions, WebVTT subtitles, timestamps, and structured metadata from public TikTok videos. Supports single URLs, bulk processing, and AI workflows.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(1)

Developer

LanceAPI

LanceAPI

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

7

Monthly active users

6 days ago

Last modified

Share

🎬 TikTok Transcript & Video Metadata Scraper API

Turn public TikTok video URLs into clean transcripts, subtitles, translations, and structured video metadata—one result per URL.

This Actor saves you from building a fragile multi-step workflow. It first uses captions already available for the video. If a video has no usable captions and you enable AI transcript fallback, it can generate a transcript from the spoken audio automatically. Need another language? Enable translation and receive the original transcript and translated version together in the same result.

⭐ Why users choose it

A transcript when you need certainty

Many TikTok videos have captions, but some do not. Turning on aiTranscript gives you a practical safety net: existing captions are always preferred, and AI transcription runs only when no usable caption is available. You do not need to inspect every video first or build a second workflow for missing transcripts.

Extract and translate in one run

Set translate to true, choose a target language, and the Actor handles the rest. The original transcript remains untouched, while translated text, timed segments, WebVTT, and SRT are returned separately. It is a simple one-step path from a TikTok URL to multilingual content.

Transcript plus useful context

Each successfully resolved video can include its description, creator, engagement counts, hashtags, duration, sound information, cover image, and publication time. This makes the Dataset ready for content research, competitor analysis, indexing, and AI workflows.

Safe bulk processing

Submit one URL or a batch. Each URL is processed independently, so one invalid, private, deleted, or temporarily unavailable video does not stop the rest of the run.

🚀 Quick start

{
"tiktokUrls": [
"https://www.tiktok.com/@samuelszuchan/video/7654471521490062605?is_from_webapp=1&sender_device=pc"
],
"preferredLanguage": "en",
"aiTranscript": true,
"translate": true,
"targetLanguage": "es",
"formats": ["text", "segments", "vtt", "srt"]
}

The Actor returns one Dataset record for each unique URL.

Input

FieldTypeDefaultDescription
tiktokUrlsstring[]RequiredOne or more public TikTok video URLs. A single item processes one video; multiple items form a batch.
preferredLanguagestringenPreferred language among captions already available on TikTok. English is the fallback. This setting does not translate.
aiTranscriptbooleanfalseIf no usable caption exists, generate a transcript from the video's spoken audio. Existing captions always take priority.
formatsstring[]text, segmentsChoose from text, segments, vtt, and srt. Existing compatibility fields remain available.
translatebooleanfalseKeep the original transcript and add a translated version in the same result.
targetLanguagestringenLanguage for the translated transcript. Used only when translate is enabled.

The input form provides selectable language names, so users do not need to memorize language codes. Supported translation targets include English, Spanish, Portuguese, French, German, Italian, Japanese, Korean, Simplified Chinese, Traditional Chinese, Arabic, Hindi, Russian, Indonesian, Turkish, Vietnamese, Thai, Dutch, Polish, and Ukrainian.

Free Apify users can submit up to 5 unique URLs per run. Paid Apify users can submit up to 200. Exact duplicate strings are removed before processing.

Caption language and translation are different

  • preferredLanguage chooses from captions that already exist for the video.
  • targetLanguage tells the Actor what language to create when translate is enabled.
  • If the transcript is already in the target language, it is reused without a translation charge.

Output

Core transcript fields:

FieldDescription
statussuccess, partial_success, no_transcript, private_video, deleted_video, invalid_url, or error.
transcriptTextPlain transcript text.
transcriptSegmentsTimestamped { start, end, text } segments.
transcriptVttWebVTT subtitle document.
transcriptSrtSRT subtitle document when available.
transcriptSourcetiktok_caption, tiktok_auto_caption, or ai.
languageSelected or detected transcript language.

Optional translation fields:

FieldDescription
translationTextTranslated plain text.
translationSegmentsTranslated timed segments with the original timestamps preserved.
translationVttTranslated WebVTT subtitles.
translationSrtTranslated SRT subtitles.
translationLanguageRequested target language.

Video and creator fields include videoId, tiktokUrl, videoDescription, authorUsername, authorNickname, authorId, viewsCount, likesCount, commentsCount, sharesCount, coverImageUrl, hashtags, videoDuration, video dimensions, publication time, region, sound information, creator totals, verification status, and ad status.

Status behavior

StatusWhat it meansWhat remains available
successAll requested stages completed.Metadata, transcript, and requested translation.
partial_successVideo metadata or the original transcript succeeded, but a later requested stage could not finish.Completed earlier-stage data is preserved.
no_transcriptVideo metadata was found, but no usable caption or AI transcript was produced.Video and creator metadata.
private_videoThe video is not publicly accessible.A structured status record.
deleted_videoThe video is missing or unavailable.A structured status record.
invalid_urlThe input is not a supported TikTok URL.A structured status record.
errorVideo resolution failed before usable metadata could be produced.A structured status record and safe error message.

Importantly, a transcript-stage problem does not erase video information that was already retrieved. For example, if AI transcription is temporarily unavailable, the result is partial_success with the video metadata preserved and the transcript fields empty.

Example: AI fallback with translation

{
"status": "success",
"videoId": "7654471521490062605",
"tiktokUrl": "https://www.tiktok.com/@samuelszuchan/video/7654471521490062605",
"transcriptText": "Here are three ways to improve your next video.",
"transcriptSegments": [
{ "start": 0.46, "end": 3.2, "text": "Here are three ways to improve your next video." }
],
"transcriptSource": "ai",
"language": "en",
"translationText": "Aquí tienes tres formas de mejorar tu próximo video.",
"translationSegments": [
{ "start": 0.46, "end": 3.2, "text": "Aquí tienes tres formas de mejorar tu próximo video." }
],
"translationLanguage": "es",
"videoDescription": "Three practical video tips",
"authorUsername": "samuelszuchan",
"viewsCount": 125000,
"likesCount": 8400,
"commentsCount": 316,
"sharesCount": 540,
"processedAt": "2026-09-14T12:00:00.000Z"
}

API usage

Actor ID:

lance_api/tiktok-transcript-scraper

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('lance_api/tiktok-transcript-scraper').call({
tiktokUrls: [
'https://www.tiktok.com/@samuelszuchan/video/7654471521490062605?is_from_webapp=1&sender_device=pc',
],
aiTranscript: true,
translate: true,
targetLanguage: 'es',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("lance_api/tiktok-transcript-scraper").call(run_input={
"tiktokUrls": [
"https://www.tiktok.com/@samuelszuchan/video/7654471521490062605?is_from_webapp=1&sender_device=pc"
],
"aiTranscript": True,
"translate": True,
"targetLanguage": "es",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

cURL

curl --request POST \
"https://api.apify.com/v2/acts/lance_api~tiktok-transcript-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"tiktokUrls": [
"https://www.tiktok.com/@samuelszuchan/video/7654471521490062605?is_from_webapp=1&sender_device=pc"
],
"aiTranscript": true,
"translate": true,
"targetLanguage": "es"
}'

Keep your Apify token in a secure environment variable. Do not place it in source code, prompts, screenshots, or shared logs.

🤖 Use with AI agents

What is AI Agent support?

An AI agent can run this Actor for you, collect its Dataset, and turn the results into summaries, comparisons, tables, or research notes. Instead of writing API requests yourself, you can ask ChatGPT, Claude, Cursor, Codex, or another compatible AI client in everyday language.

Before you start

You need an Apify account, an Apify API token, and an AI client compatible with the Apify MCP Server.

AI clientSupported when compatible with Apify MCP Server
ChatGPT
Claude
Cursor
Codex

Connect your AI client

This Actor works with any AI client compatible with the Apify MCP Server. Connect the client using your own Apify account and API token, then ask it to find and run lance_api/tiktok-transcript-scraper. Connection screens vary by client and can change over time, so follow the current documentation for your AI client or Apify MCP Server.

Copyable Agent prompt

Use the Apify Actor lance_api/tiktok-transcript-scraper for the TikTok URLs I provide.
Return one row per URL. Preserve every returned status, including no_transcript,
partial_success, invalid_url, private_video, deleted_video, and error. Use
preferredLanguage only to select an existing caption language; never describe it
as translation. If I request a transcript even when captions are missing, set
aiTranscript to true. If I request another language, set translate to true and use
targetLanguage. Keep the original transcript separate from the translation.
After the run, retrieve the Dataset and summarize only the data actually returned.
Never invent missing transcripts, metadata, speaker labels, or word-level timing.
Do not retry invalid URLs indefinitely. Explain partial results clearly, and never
omit URLs that returned no_transcript or another non-success status.

Example conversations

  • “Summarize these TikTok videos. If captions are missing, use AI transcript fallback.”
  • “Compare the opening hooks in these videos and show the view and like counts beside each one.”
  • “Extract every transcript, translate it to English, and export a table with the original and translated text.”
  • “Show only videos without transcripts, but keep their URLs, creators, descriptions, and engagement data.”

Pricing when used by AI agents

AI client calls use exactly the same event-based pricing as direct Actor, API, Task, or schedule runs. Pricing is not based on the number or length of prompts. Using an AI client through MCP does not change the Actor's pricing.

AI Agent FAQ

Which AI clients can use this Actor?

Any AI client compatible with the Apify MCP Server, including ChatGPT, Claude, Cursor, and Codex.

Can my AI agent summarize or compare the transcripts?

Yes. The agent can use the returned transcript and metadata for summaries, tables, comparisons, and other analysis.

Does AI Agent access cost extra?

It does not change this Actor's pricing. Your AI client or platform may have its own separate plan.

Where should I store my Apify API token?

Use the secure credential or environment-variable storage supported by your AI client. Never paste the token into an ordinary prompt.

💰 Pricing

Pricing is event-based. You pay only for the parts that successfully produce usable results.

Base result pricing

ChargeFreeAll other Apify tiersWhen charged
Video result (video-result)$0.002/result$0.001/resultWhen usable video metadata is returned, including success, no_transcript, or a metadata-preserving partial_success.
Transcript result (transcript-result)$0.001/result$0.001/resultWhen non-empty transcriptText is returned, whether it came from an existing caption or AI fallback.

Optional AI transcript and translation pricing

Optional serviceFreeStarterScaleBusiness
AI transcription, per 1,000 started video minutes$5.00$3.50$3.00$2.50
Translation, per started 1,000 source characters$0.10$0.09$0.08$0.07

AI transcription uses the transcript-minute event. Each started video minute is one unit: 60 seconds is 1 unit and 61 seconds is 2 units. It is charged only when AI fallback successfully returns a transcript.

Translation uses the translation-1k-characters event. Each started 1,000 Unicode characters in the original transcript is one unit: 1–1,000 characters is 1 unit and 1,001–2,000 is 2 units. Spaces, punctuation, numbers, English letters, and Chinese characters each count as characters. Billing is based on the original transcript, not the translated output. If source and target are the same language, translation is reused without this charge.

The events combine according to the work completed:

ResultCharged events
Metadata with an existing transcriptvideo-result + transcript-result
Metadata with a successful AI transcriptvideo-result + transcript-result + started transcript-minute units
Successful translationThe applicable result events + started translation-1k-characters units
Metadata found, but transcript unavailable or AI fallback failedvideo-result only
Original transcript succeeded, but translation failedvideo-result + transcript-result; no translation charge
private_video, deleted_video, invalid_url, or resolution errorNo result event

Requesting multiple output formats does not multiply charges. Failed AI transcription and failed translation do not trigger their service events. Exact duplicate input strings are removed before processing. The Actor's Pricing tab is the source of truth for the currently published event configuration.

🎯 Use cases

  • Summarize and classify TikTok videos with AI agents
  • Compare hooks, scripts, calls to action, and messaging
  • Create searchable transcript archives and RAG datasets
  • Produce multilingual subtitles without a separate translation workflow
  • Export transcript and engagement tables for research
  • Add public TikTok context to content-analysis pipelines

How it works

  1. Validate and deduplicate the input URLs.
  2. Resolve each public TikTok video.
  3. Retrieve publicly available caption data and select the preferred language.
  4. When requested and no usable caption exists, generate an AI transcript from the video's spoken audio.
  5. When requested, translate the final transcript while keeping the original.
  6. Normalize transcript formats and public video metadata.
  7. Write one structured Dataset record per unique URL.

FAQ

Does AI transcription replace existing TikTok captions?

No. Existing usable captions always come first. AI is a fallback only when aiTranscript is enabled and no usable caption is available.

What happens if AI transcription cannot run?

The Actor keeps any video metadata already retrieved and returns partial_success with empty transcript fields. It does not charge AI transcription or a transcript result when no transcript was produced.

Does translation overwrite the original transcript?

No. Original fields remain unchanged. The translated version is returned in separate translation* fields.

What if translation fails?

The original transcript and metadata remain available with status: "partial_success". No translation event is charged.

Can I process multiple videos?

Yes. Put all URLs in tiktokUrls. Each URL receives its own Dataset record and is isolated from failures on other inputs.

Are speaker labels or word-level timestamps included?

No. Segments include caption-level start time, end time, and text. Speaker diarization and word-level timestamps are not claimed.

Does the Actor return comments?

It returns the public comment count when available, not individual comments.

Limitations and responsible use

  • Only public TikTok videos are supported. Private, deleted, restricted, or otherwise unavailable content cannot be accessed.
  • Caption, media, metadata, and engagement availability can vary by video, region, and time.
  • AI transcription quality depends on speech clarity, language, background sound, and recording quality.
  • Translation preserves segment timing but translated sentence length and phrasing can differ from the original.
  • Cover and media URLs can expire and should not be treated as permanent assets.
  • Use the Actor responsibly and comply with applicable platform terms, privacy requirements, and copyright law.

Support

Open the Actor's Issues tab in Apify Console or email lanceapi2026@hotmail.com. Include the Run ID, returned status, safe error message, and a public example URL when appropriate. Never send API tokens, cookies, session IDs, or other secrets.