TikTok video transcript API
  1. Docs
  2. TikTok
  3. TikTok video transcript API

TikTok video transcript API

TikTok's own captions when the video has them (the English track first, else the first one); AI transcription of the audio when it does not.

GET /v1/tiktok/video/transcript

GET /v1/tiktok/video/transcript

TikTok's own captions when the video has them (the English track first, else the first one); AI transcription of the audio when it does not. language steers the AI transcription only.

  • Cost: 1 credit for captions; AI transcription 1 up to 2 minutes, then 5 per started minute of the whole video
  • Cache: Results are kept up to 30 days; send max_age_days to reuse them for free.
  • Timeout: A request still running after about 25 seconds answers 202 with a job to poll (Batch and jobs).

Parameters#

NameTypeRequiredDescription
urlURLone ofVideo URL (www.tiktok.com/@user/video/..., vm.tiktok.com/..., vt.tiktok.com/...). Accepted hosts: tiktok.com.
idstringone ofNumeric video id. Also accepted as aweme_id, video_id.
languagestringnoPreferred caption language (2-letter code: en, es, fr, de, it, ja, ko, zh). Also accepted as lang.
ai_fallbackbooleannoTranscribe the audio with AI when the video has no captions. Set false to get no transcript instead, and no AI charge. Default true. Also accepted as use_ai_as_fallback.
allow_long_transcriptionbooleannoTranscribe audio past 2 minutes with AI, at 5 credits per started minute of the whole video. Without it a longer video answers transcript_unavailable, which is free. Default false. Also accepted as allowLongTranscription.

Send at least one of url, id. If you send several, the first listed is used and the rest are ignored.

Every request also accepts:

  • trim: true for a smaller response without null fields and extra.
  • raw: true to also get the platform's original object as raw.
  • max_age_days: accept a cached result up to this many days old, for 0 credits (Caching).

Example request#

Set your key in the environment first (see Authentication).

1curl -G "https://api.socialscrape.dev/v1/tiktok/video/transcript" \2  -H "x-api-key: $SOCIALSCRAPE_API_KEY" \3  --data-urlencode "url=https://www.tiktok.com/@nasa/video/7665075736742530317"

Example response#

This is a sample from a recorded response. Status 200.

200 OKSample response
1{2  "ok": true,3  "credits_charged": 1,4  "credits_remaining": 4999,5  "cached": false,6  "cached_at": null,7  "request_id": "req_caca6f86f02fab9fc66bda7f",8  "data": {9    "object": "transcript",10    "platform": "tiktok",11    "video_id": "7665075736742530317",12    "url": "https://www.tiktok.com/@nasa/video/7665075736742530317",13    "language": "en",14    "source": "ai",15    "duration_seconds": 25.0,16    "text": "Something big just landed on TikTok.",17    "segments": [18      {19        "start": 0.0,20        "end": 2.4,21        "text": "Something big just landed on TikTok."22      }23    ],24    "available_languages": null,25    "extra": null26  },27  "cursor": null,28  "has_more": null29}

Response#

A Transcript object in data.

See Data models for every field. The envelope around data is described in Responses.

Errors#

Failures are free: credits_charged is 0. Branch on error.code, never on the message.

CodeHTTPRetryMeaning
invalid_params400noA parameter is missing, unknown or has the wrong type.
unsupported_url400noThe URL is not one this endpoint accepts (wrong platform or form).
not_found404noThe platform says this profile, post or item does not exist.
transcript_unavailable404noNo captions exist and AI transcription is not possible for this media.

Every request can also fail with the account and platform errors listed on the Errors page.

Example error:

1{2  "ok": false,3  "error": {4    "code": "transcript_unavailable",5    "message": "No captions exist and AI transcription is not possible for this media.",6    "retryable": false7  },8  "credits_charged": 0,9  "request_id": "req_1ab625f7b1d242590bfd346a"10}