Create your Scrape.ly account
Create your account and get access to ready-made APIs, scrapers, and automation tools.
Get the transcript of any public YouTube video as JSON, SRT, VTT, or plain text: the captions YouTube already has, in the language you pick, with timestamps. No YouTube Data API key and no quota.
Connect to Scrape.ly using Python, JavaScript, HTTP, cURL, OpenAPI, or MCP and start extracting YouTube Transcript data in minutes.
Pass video URLs, channel URLs, playlists, and search terms into Scrape.ly. Get structured outputs with full transcript text with timestamps, SRT, VTT, XML, or plain-text format, manual or auto-generated captions, the list of caption languages on each video, and video title, channel, duration, and views, and more.
One request returns each video with its transcript in the subtitles field. Send video URLs (or a channel, playlist or search, to get the transcripts of many videos at once) and turn subtitles on; the transcript costs nothing on top of the video row.
POST https://api.scrape.ly/v2/actors/echofield~youtube-scraper/run-sync-get-dataset-itemsStarts a run, waits up to 90 seconds and returns the dataset items. Add ?format=csv for CSV. For longer jobs, start the run with POST /v2/actors/{actorId}/runs and read the dataset when it finishes. From $2.04 per 1,000 videos, transcript included.
curl -X POST "https://api.scrape.ly/v2/actors/echofield~youtube-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $SCRAPELY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.youtube.com/watch?v=jNQXAC9IVRw"}],"maxResults":1,"transcriptionAndSubtitle":"ALWAYS_SUBTITLES","subtitlesLanguage":"en","subtitlesFormat":"srt"}'| Name | Type | Description |
|---|---|---|
| startUrls | object[] | YouTube video, channel, playlist, hashtag or search URLs, each as { "url": "…" }. A channel handle such as @NASA works too. |
| searchQueries | string[] | Search terms, used when no URLs are given. |
| maxResults | integer | Videos per search term or channel (default 10). |
| transcriptionAndSubtitle | enum | Set ALWAYS_SUBTITLES to download the captions that are already on each video. NONE (default) skips them. |
| subtitlesLanguage | enum | en (default), de, es, fr, it, ja, ko, nl, pt, ru, or any. |
| subtitlesFormat | enum | srt (default), vtt, xml, or plaintext. |
| preferAutoGeneratedSubtitles | boolean | Use YouTube's auto-generated captions when a video has both kinds. |
| saveSubsToKVS | boolean | Also save each subtitle file to the run's key-value store and link it from the video. |
subtitles holds one track per video: type (user_generated or auto_generated), language and the text in the format you chose. subtitleLanguages lists every caption track the video has.
A video without captions comes back with no subtitles. For those, the Audio & Video Transcriber (querystone/audio-transcriber) transcribes the audio itself, billed per audio minute.
| Status | Type | Meaning |
|---|---|---|
| 200 | — | The run succeeded. The body is the dataset items, a JSON array. |
| 400 | run-failed | The run ended in a status other than SUCCEEDED. |
| 401 | token-not-provided / token-not-valid | No Authorization: Bearer header, or an unknown, expired or revoked token. |
| 402 | payment-required | The run cannot reserve enough credits. |
| 408 | run-timeout-exceeded | The run did not finish within 90 seconds. It keeps going: wait with GET /v2/actor-runs/{runId}?waitForFinish=60 instead of starting another. |
| 429 | rate-limit-exceeded / concurrency-limit-exceeded | Too many requests or concurrent runs. Retry with exponential backoff. |
Full details in the Actors API docs.
Scrape.ly keeps the setup simple so you can move from signup to live YouTube Transcript data without wasting time on scraping infrastructure.
Create your account and get access to ready-made APIs, scrapers, and automation tools.
Copy your API token from the Scrape.ly dashboard and use it to authenticate your requests.
Choose Python, JavaScript, HTTP, or MCP and connect Scrape.ly to your app or workflow.
Send your video URLs, channel URLs, playlists, and search terms, then receive clean structured data ready for analysis.
Scrape.ly gives you ready-made APIs, proxy support, monitoring, exports, integrations, and scalable infrastructure in one platform.
Use built-in proxy support to reduce blocks, rate limits, and failed requests.
Get results in JSON, CSV, Excel, XML, HTML table, RSS, or other workflow-friendly formats.
Track scraper status, performance, failures, retries, and outputs from one dashboard.
Connect with webhooks, APIs, automation tools, cloud apps, and internal systems.
Run small tests or high-volume extraction jobs without rebuilding your scraping stack.
Use clean APIs, SDKs, docs, examples, and structured outputs built for real workflows.
Connect Scrape.ly with your apps, dashboards, sheets, agents, and automation workflows to turn YouTube Transcript data into action.
Browse ready-made YouTube Transcript scrapers and APIs available inside Scrape.ly and choose the one that fits your workflow.
Quick answers about using Scrape.ly's YouTube Transcript API, available data, setup, and legal usage.
Not for other people's videos. The YouTube Data API's captions.download method needs OAuth authorization and "requires the user to have permission to edit the video", and each call costs 200 quota units. It is built for channel owners managing their own captions. Scrape.ly's YouTube Transcript API reads the captions shown on any public video and returns them as JSON, with no Google Cloud project or API key.

The best web scraper Chrome extensions in 2026 (Web Scraper, Instant Data Scraper, Data Miner and Evomi Web Data), what each is good at, where every extension stops, and how a cloud scraper takes over for schedules, thousands of pages and API access.
Read the article
The best MCP servers in 2026, grouped by job: web data, documentation, code, browsers, errors, databases and the official reference servers. Each with its hosted URL or install command, how it signs in, and the caveats its own README states.
Read the article
The n8n Puppeteer node needs Chromium inside your n8n container and installs only on self-hosted n8n. How it and the Playwright nodes install, where they break, and how to run the same browser scrape on Scrape.ly from n8n instead, with a real tested run.
Read the articleScrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.