Free export
YouTube to JSON
Paste a channel, playlist or video link and download structured JSON: one object per video with its metadata and, when captions exist, the complete transcript as timed segments.
How do I export YouTube to JSON?
Paste a YouTube channel, playlist or video link into BulkTranscripts, choose JSON, and press Export. Each video becomes one JSON object with its id, title, channel, URL, duration, upload date and, when captions exist, the full transcript as timed segments. A channel or playlist comes back as a ZIP of one file per video. No API key is needed; the first 30 videos are free.
What is in each JSON file
Every video becomes one object with video_id, title, channel, url, duration in seconds, upload_date, the caption language, a source flag telling you whether the captions were written by the creator or auto-generated, the cleaned full text, and a segments array of {start, duration, text}. It is the same shape the REST API returns, so code written against one works with the other.
Export a whole channel or playlist, not one video
Paste a channel handle or a playlist link and every video is processed in one job, up to 1,000 at a time. The download is a ZIP with one JSON file per video, named by video id, so a folder of them is trivially loadable with a glob. Playlist order is preserved. Videos without captions still appear in the results list so you know what was skipped, and they are never charged.
Connect YouTube to JSON in your own code
The same engine is a REST API. One GET returns a video's transcript as JSON; the channel and playlist endpoints return the video list as JSON so you can page through an archive and fetch only what you need. There is also a hosted MCP server for Claude, ChatGPT and Cursor. The docs cover every call; the API page has the quick start.
curl "https://bulktranscripts.co/api/v1/transcript?video=dQw4w9WgXcQ" \
-H "Authorization: Bearer YOUR_KEY"
curl "https://bulktranscripts.co/api/v1/channel/videos?channel=@veritasium&limit=50" \
-H "Authorization: Bearer YOUR_KEY"Turn a whole channel into JSON with one API call
For an archive, do not fetch videos one by one. POST /api/v1/bulk with the channel or playlist URL starts a background job (up to 1,000 videos) and returns a run_id at once; poll /api/v1/bulk/{run_id} until it says completed, page /results for every video's id, title, channel, duration and word count as JSON, then fetch any transcript with /api/v1/transcript, which is free for videos the job already put in your library. Listing is free; each new transcript costs one credit.
curl -X POST "https://bulktranscripts.co/api/v1/bulk" \
-H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
-d '{"url": "https://www.youtube.com/@veritasium", "max_videos": 200}'
curl "https://bulktranscripts.co/api/v1/bulk/RUN_ID/results?limit=100" \
-H "Authorization: Bearer YOUR_KEY"Load the JSON into pandas or jq
Because every file is one object with a nested segments list, a folder of exports loads in a few lines. json_normalize gives one row per segment with the video's metadata repeated on each; jq filters by caption quality or duration without loading anything into memory.
import glob, json, pandas as pd
videos = [json.load(open(f)) for f in glob.glob("export/*.json")]
segments = pd.json_normalize(videos, record_path="segments",
meta=["video_id", "title", "channel", "upload_date"])
print(segments.head())
# jq: titles of creator-captioned videos longer than 20 minutes
# jq -r 'select(.source == "manual_caption" and .duration > 1200) | .title' export/*.jsonYouTube Data API or BulkTranscripts?
Google's YouTube Data API returns video metadata as JSON, but it will not give you the transcript of someone else's video: its captions.download call only works for videos you own or can edit, and it needs a Google Cloud project, OAuth and a daily quota. BulkTranscripts returns the transcript of any public video with captions, plus the metadata, in one JSON object, with nothing to set up for the web export.
Connect YouTube to JSON in n8n, Make or an AI agent
No-code tools take the same JSON. In n8n, install the BulkTranscripts community node or use an HTTP Request node; in Make, an HTTP module with a free API key. AI agents such as Claude, ChatGPT and Cursor get the JSON through the YouTube MCP server; every setup is on the integrations page.
Why JSON and not CSV or text
JSON keeps the nesting: one video, many timed segments, without flattening every segment into its own row. That makes it the right input for search indexes, RAG pipelines, jq, pandas via json_normalize, or any script that wants metadata and transcript together. If you want one row per segment for a spreadsheet, choose CSV instead; if you want one readable document for NotebookLM or Claude, choose the combined AI-ready export.
Sample output
One object per video: metadata, the full cleaned text, and a segments array of {start, duration, text}. source is manual_caption or auto_caption so you can filter on caption quality. Same shape as the REST API's transcript endpoint.
{
"video_id": "dQw4w9WgXcQ",
"title": "How to Build a Second Brain",
"channel": "Tiago Forte",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"duration": 1122,
"upload_date": "20240312",
"language": "en",
"source": "manual_caption",
"text": "The idea is simple: your brain is for having ideas, not holding them. ...",
"segments": [
{"start": 0.0, "duration": 3.2, "text": "The idea is simple: your brain is for having ideas,"},
{"start": 3.2, "duration": 2.7, "text": "not holding them."}
]
}Questions
Do I need an API key or a Google Cloud project?
No. The web export needs nothing: paste a link and download. The REST API does need a key, but it is free. Sign in with Google at /app and create one under MCP & API.
Can I export a YouTube playlist to JSON?
Yes. Paste the playlist link; you get one JSON file per video, in playlist order, in a single ZIP.
Can the YouTube Data API export transcripts as JSON?
Only for videos you own. The Data API's captions.download needs edit rights on the video, a Google Cloud project and OAuth. BulkTranscripts exports the transcript of any public video with captions as JSON, with no Google setup.
Is there a free YouTube to JSON converter?
Yes. The first 30 videos are free with no sign-up and no card: paste a link, choose JSON and download. After that it is a one-time credit pack that never expires.
Can I connect YouTube to JSON without writing code?
Yes. Use the web export for files, the BulkTranscripts node in n8n, an HTTP module in Make, or connect the MCP server to an AI agent like Claude or ChatGPT.
Does the JSON include the transcript?
Yes, when the video has captions: the full cleaned text plus timed segments. Videos without captions are listed as skipped and cost nothing.
Is the JSON the same as the API response?
The per-video fields match. The API adds a few extras such as word count and paragraphs, and a billing object showing credits used.
Is there a limit?
Up to 1,000 videos per job. The first 30 transcripts are free with no card; after that credits are bought once and never expire, and re-exporting anything already in your library is free.