Transcript

Extract transcripts from YouTube videos in multiple formats.

Try it
POSThttps://api.crawly.bikal.co/v1/transcript

The Transcript endpoint extracts captions and subtitles from YouTube videos. It supports automatic language detection, translation, and multiple output formats including plain text, timed segments, SRT, and VTT.

Each request costs 1 credit ($0.001). Failed requests are automatically refunded. The endpoint accepts standard YouTube URLs, short URLs, and embed URLs.


Request Body

urlstringREQUIRED

YouTube video URL. Supports standard, short, and embed URL formats.

formatstringDefault: "text"

Output format for the transcript. One of: text, segments, srt, vtt.

languagestringDefault: "en"

Language code for the transcript. If the video does not have captions in this language, auto-translation is attempted.


Output Formats

FormatDescriptionUse Case
textPlain text transcript, all segments joinedAI processing, search indexing
segmentsJSON array with text, start time, and duration per segmentSubtitles, timestamped search
srtSubRip subtitle formatVideo players, subtitle editors
vttWebVTT subtitle formatHTML5 video, web players

Examples

curl -X POST https://api.crawly.bikal.co/v1/transcript \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "format": "text"}'

Response

Success 200 - text format

json
{
"success": true,
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"transcript": "We're no strangers to love, you know the rules and so do I...",
"language": "en",
"metadata": {
"title": "Rick Astley - Never Gonna Give You Up",
"duration": "3:33"
}
}

Success 200 - segments format

json
{
"success": true,
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"transcript": [
{ "text": "We're no strangers to love", "start": 0.0, "duration": 3.5 },
{ "text": "You know the rules and so do I", "start": 3.5, "duration": 3.2 }
],
"language": "en",
"metadata": {
"title": "Rick Astley - Never Gonna Give You Up",
"duration": "3:33"
}
}

Response Fields

successboolean

Whether the transcript was extracted successfully.

urlstring

The YouTube video URL.

transcriptstring | array

The transcript content. String for text/srt/vtt, array of objects for segments.

languagestring

The language of the returned transcript.

metadataobject

Video metadata including title and duration.


Errors

StatusTypeDescription
400VALIDATION_ERRORMissing url or invalid format parameter
401AUTH_ERRORMissing or invalid API key
402CREDITS_EXHAUSTEDInsufficient credits
422TRANSCRIPT_UNAVAILABLETranscript is not available for this video
422VIDEO_UNAVAILABLEVideo is unavailable or private
429RATE_LIMITEDRate limit exceeded (120 requests per minute)

Pricing

1credit per request ($0.001)

Credits are deducted upfront. Failed requests are automatically refunded to your balance.


Notes

  • Transcript extraction is fast and reliable, with smart fallback logic for multi-language support.
  • Supports standard URLs (youtube.com/watch?v=), short URLs (youtu.be/), and embed URLs.
  • If the requested language is not available, the API attempts auto-translation from available captions.
  • Videos with disabled captions will return a TRANSCRIPT_UNAVAILABLE error.
  • The segments format returns an array of objects with text, start, and duration fields.