Export formats
Six output formats are available across the sync transcript endpoint and bulk-job exports. Pick by use case.
| Format | Content-Type | Timestamps | Best for |
|---|---|---|---|
json | application/json | Yes | SDKs, programmatic processing |
txt | text/plain | No | curl pipes, shell scripts, simple ingestion |
srt | application/x-subrip | Yes | Video player subtitles, ffmpeg |
csv | text/csv | Yes if available | Spreadsheets, BI tools |
docx | (MS Word MIME) | No | Document delivery |
markdown | text/markdown | Yes | LLM tools, MCP servers, Claude/ChatGPT integrations |
Format examples
txt
Segment text joined with newlines. No metadata header.
welcome or welcome back to my YouTube
channel so for today's video I'll be
teaching you touch by cat saysrt
Standard SRT subtitle format.
1
00:00:00,080 --> 00:00:03,360
welcome or welcome back to my YouTube
2
00:00:01,640 --> 00:00:05,920
channel so for today's video I'll bemarkdown
Title as H1 plus timestamped lines.
# KATSEYE 'TOUCH' Dance Tutorial
**[0:00]** welcome or welcome back to my YouTube
**[0:01]** channel so for today's video I'll be
**[0:03]** teaching you touch by cat saycsv
Four columns when timestamps are available. If timestamps are unavailable, only a text column is included.
start,end,duration,text
0.08,3.36,3.28,"welcome or welcome back to my YouTube"
1.64,5.92,4.28,"channel so for today's video I'll be"docx
Microsoft Word document. Title as Heading 1, segments as paragraphs. Binary download. Available through the API only; the web app offers the other five.
json
Structured envelope. See GET /transcript/:id for the full shape returned by the sync endpoint.
JSON shape: sync vs export
Sync: GET /transcript/:id?format=json
{
"video_id": "abc12345678",
"language": "en",
"transcript": [
{ "text": "welcome to my channel", "start": 0.08, "duration": 3.28 }
],
"metadata": {
"title": "Video title",
"author_name": "Channel name",
"author_url": "https://www.youtube.com/channel/UC...",
"thumbnail_url": "https://i.ytimg.com/vi/abc12345678/hqdefault.jpg",
"channel_id": "UC...",
"duration_seconds": 620
},
"is_auto_generated": false,
"available_tracks": [
{ "language_code": "en", "language_name": "English", "is_auto_generated": false, "vss_id": "..." }
]
}Field name transcript, per-segment fields { text, start, duration }.
Export: GET /jobs/:id/export?format=json (per file in ZIP)
{
"video_id": "abc12345678",
"title": "Video title",
"language": "en",
"segments": [
{ "text": "welcome to my channel", "start": 0.08, "end": 3.36 }
]
}Field name segments, per-segment fields { text, start, end } where end = start + duration. Top-level title only; no nested metadata, no is_auto_generated, no available_tracks.
Client code that consumes both endpoints should normalize these two shapes.
Comments downloads
- The Workbench's single-page comment sample downloads as TXT.
- Transcript jobs with comments include
comments/VIDEO_ID.jsonbeside each completed transcript. The file contains video identity, Top ordering, the saved comment page or its error. Changing the transcript format does not change these JSON files. - Standalone comments collections export
manifest.jsonandVIDEO_ID.comments.jsonplusVIDEO_ID.comments.csvfor each video with saved rows. JSON files are arrays of comment objects; CSV carries the same fields as columns, without reply-continuation tokens.
Comments CSV protects spreadsheet cells that begin like formulas by prefixing an apostrophe. Use JSON when you need the unmodified string values. See comments ZIP contents for coverage and budget information in the manifest.