TokScript APItokscript.com ↗
Fetch timestamped speech-to-text transcripts for TikTok videos plus video metadata, author details, and engagement stats via a single API endpoint.
What is the TokScript API?
The TokScript API exposes 1 endpoint — get_transcript — that returns a complete speech-to-text transcript for any public TikTok video across 14 distinct response fields. The response includes timestamped text segments, the full combined transcript text, detected language, video metadata such as dimensions and creation time, author profile data including follower count and verification status, engagement statistics, and associated music details.
curl -X GET 'https://api.parse.bot/scraper/b2d5c607-3d34-454f-8e71-f6d43c9f4ffb/get_transcript?video_url=https%3A%2F%2Fwww.tiktok.com%2F%40brookemonk_%2Fvideo%2F7603118297403378975' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace tokscript-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""TokScript SDK — fetch TikTok video transcripts with metadata."""
from parse_apis.tokscript_tiktok_transcript_api import TokScript, VideoNotFound
client = TokScript()
# Fetch transcript for a TikTok video
try:
result = client.transcripts.get(video_url="https://www.tiktok.com/@brookemonk_/video/7603118297403378975")
print(result.video.id, result.video.duration)
print(result.author.nickname, result.author.verified, result.author.follower_count)
print(result.stats.play_count, result.stats.like_count)
print(result.music.title, result.music.author)
print(result.transcript.method, result.transcript.language)
print(f"Segments: {len(result.transcript.segments)}")
if result.transcript.segments:
seg = result.transcript.segments[0]
print(f"First segment: [{seg.start} -> {seg.end}] {seg.text}")
print(f"Full text preview: {result.transcript.full_text[:100]}")
except VideoNotFound as exc:
print(f"Video not found: {exc}")
print("exercised: transcripts.get / Video / Author / Stats / Music / TranscriptContent / Segment")
Get the transcript (speech-to-text) for a TikTok video. Returns timestamped text segments, full combined text, video metadata, author details, and engagement statistics. Videos without speech or deleted videos will return an upstream_error.
| Param | Type | Description |
|---|---|---|
| video_urlrequired | string | Full TikTok video URL (e.g. https://www.tiktok.com/@username/video/<video_id>) |
{
"type": "object",
"fields": {
"music": "object containing title, author, duration",
"stats": "object containing play_count, like_count, comment_count, share_count, collect_count",
"video": "object containing id, description, create_time, duration, width, height, cover, location_created",
"author": "object containing id, unique_id, nickname, avatar, verified, follower_count",
"transcript": "object containing full_text, segments (array of timestamped text), method, language"
},
"sample": {
"data": {
"music": {
"title": "Piano famous song Chopin Deep deep clear beauty",
"author": "RYOpianoforte",
"duration": 342
},
"stats": {
"like_count": 8600000,
"play_count": 273600000,
"share_count": 135800,
"collect_count": "445193",
"comment_count": 55800
},
"video": {
"id": "7603118297403378975",
"cover": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oEx0wEBNIiAimy7EfCAAIxqiUdDg5Tpm92SIqs~tplv-tiktokx-origin.image",
"width": 720,
"height": 1280,
"duration": 62,
"create_time": "1770238937",
"description": "",
"location_created": "US"
},
"author": {
"id": "6732675975610074118",
"avatar": "https://p16-common-sign.tiktokcdn-us.com/tos-maliva-avt-0068/81dd03ab48e571529193c93e79d59201~tplv-tiktokx-cropcenter:100:100.jpeg",
"nickname": "Brooke Monk",
"verified": true,
"unique_id": "brookemonk_",
"follower_count": 46500000
},
"transcript": {
"method": "native-tiktok",
"language": "eng-US",
"segments": [
{
"end": "00:00:01",
"text": "Now.",
"start": "00:00:01"
},
{
"end": "00:00:04",
"text": "Yes. Yes, yes. Okay.",
"start": "00:00:02"
}
],
"full_text": "Now. Yes. Yes, yes. Okay."
}
},
"status": "success"
}
}About the TokScript API
What the API Returns
The get_transcript endpoint accepts a single required parameter, video_url, which must be the full TikTok URL in the format https://www.tiktok.com/@username/video/<video_id>. The response is organized into four top-level objects: transcript, video, author, and stats, plus a music object.
Transcript Object
The transcript object contains full_text (the entire spoken content as a single string), segments (an array of timestamped text chunks useful for syncing captions or searching by time offset), method (the transcription method used), and language (the detected language of the speech). If the video contains no speech or has been deleted, the endpoint returns an upstream_error rather than an empty transcript.
Video, Author, and Engagement Data
The video object includes id, description, create_time, duration, width, height, cover (thumbnail URL), and location_created. The author object provides id, unique_id, nickname, avatar, verified flag, and follower_count. The stats object exposes play_count, like_count, comment_count, share_count, and collect_count. The music object returns title, author, and duration for the audio track used in the video.
The TokScript API is a managed, monitored endpoint for tokscript.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tokscript.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official tokscript.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Index TikTok video content by spoken keywords using
full_textfrom the transcript object for searchable archives. - Build caption overlays or subtitle files using the
segmentsarray with precise timestamps fromget_transcript. - Filter or rank videos by engagement using
play_count,like_count, andshare_countfrom thestatsobject. - Identify verified creators and cross-reference follower counts using
verifiedandfollower_countfrom theauthorobject. - Track TikTok content by geographic origin using
location_createdfrom thevideoobject. - Detect language distribution across a set of videos using the
languagefield in thetranscriptobject. - Correlate background music tracks with transcript content using the
musicobject'stitleandauthorfields.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does TikTok have an official developer API that covers transcripts?+
What does get_transcript return for a video with no spoken audio?+
upstream_error response rather than an empty transcript object. The music and stats fields are not guaranteed to populate in this case.Does the API cover TikTok comments or replies?+
Can I retrieve transcripts for multiple videos in a single call?+
get_transcript endpoint accepts one video_url per request. Batch lookups across multiple videos are not supported in a single call. You can fork the API on Parse and revise it to add a batch endpoint that accepts multiple URLs.How fresh is the engagement data returned with each transcript?+
play_count, like_count, comment_count, share_count, and collect_count — reflect the state of the video at the time the request is made. The API does not return historical snapshots or time-series data for these metrics.