ParseForge Scrapers

YouTube Transcript Scraper

parseforge/youtube-transcript-scraper

AutomationDeveloper toolsSocial media

Scrapes YouTube video transcripts by URL or video ID. Returns full transcript text, segmented lines with timestamps, and optional SRT subtitle export. No API key required.

Run this scraper See the API call
Total users
29
Monthly active
7
Total runs
1.4K
Bookmarked
0
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

YouTube Transcript Scraper

Scrape YouTube video transcripts from any URL or video ID, up to a million per run. Get the full transcript as segmented JSON with timestamps, plus optional SRT subtitle export. No API key, no quotas. Export to CSV, JSON, Excel, or XML.

YouTube's official API needs OAuth, quotas, and only returns captions for your own videos. This reads the public transcript feeds directly from any video URL or ID, filters by language, and returns each transcript in one fixed schema. It works for videos with manually uploaded or auto-generated captions.

Who uses it What they scrape YouTube for
Content marketers Repurpose video content into blog posts, social snippets, or SEO articles
Market researchers Analyze what competitors say in their videos without watching them
Podcast producers Turn video interviews into searchable text and show notes
Data scientists Build datasets of spoken content for NLP and sentiment analysis
Accessibility teams Generate accurate captions and transcripts for video libraries

What it does

This Actor collects YouTube video transcripts by URL or video ID, and returns each one as a flat row with the full transcript text, segmented lines with timestamps, and optional SRT subtitle export.

  • ๐Ÿ“„ Segmented JSON transcript: every line with its start time, duration, and text, ready for analysis.
  • ๐ŸŽž๏ธ SRT subtitle export: optional SRT file per video, billed per video, for direct use in players.
  • ๐ŸŒ Language selection: pick any ISO language code (en, es, fr...) or leave empty for the video's default.
  • ๐Ÿ”— Flexible input: feed video URLs, video IDs, or both, and cap the run with maxItems.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with YouTube data

๐Ÿ“ Repurpose video content.

A content marketer feeds a list of YouTube video URLs and gets full transcripts to turn into blog posts, newsletters, and social media copy.

๐Ÿ” Competitor research.

A market researcher scrapes transcripts from competitor videos to identify talking points, product mentions, and messaging without watching hours of footage.

๐ŸŽ™๏ธ Podcast transcription.

A podcast producer extracts transcripts from video interviews to create searchable show notes and improve SEO.

๐Ÿ“Š NLP dataset building.

A data scientist collects thousands of transcripts by video ID to train sentiment analysis or topic modeling models.

โ™ฟ Accessibility compliance.

An accessibility team scrapes transcripts and SRT files to add captions to an existing video library.

Why choose this scraper

What you get
No API key or quotas Reads public transcript feeds directly, no OAuth or daily limits.
Full transcript text Returns the complete transcript as one string plus segmented lines with timestamps.
SRT subtitle export Optional SRT file per video for use in video players and editors.
Language control Request a specific language or get the video's default transcript.
Bulk scraping Process up to a million transcripts per run with a simple input list.

How it compares

This Actor focuses on transcript extraction with a clean segmented JSON output and optional SRT export, while the competitors below either cover broader YouTube scraping or offer transcript extraction with different feature sets.

Feature ParseForge YouTube Scraper YouTube Transcript Ninja โšก๏ธ๐Ÿฅทโšก Youtube Transcript Scraper
Full transcript text Yes Not listed Yes Yes
Segmented JSON with timestamps Yes Not listed Not listed Not listed
SRT subtitle export Yes Not listed Not listed Not listed
Language selection Yes Not listed Not listed Not listed
Bulk input via video IDs Yes Not listed Not listed Not listed
No API key required Yes Yes Not listed Not listed

Configure the run

Drive the Actor from YouTube video URLs and video IDs, alone or together, set a preferred language, and cap the run with maxItems. The includeSrt toggle adds SRT subtitle export per video. The Input tab lists every parameter.

A first run with the defaults:

{
  "startUrls": [
    {
      "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    }
  ],
  "maxItems": 10
}

A larger pull:

{
  "startUrls": [
    {
      "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    }
  ],
  "maxItems": 200
}

Pricing

Pay-per-result: $0.015 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $1.50
1,000 results $15.00
10,000 results $150.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the YouTube Transcript Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to YouTube through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/youtube-transcript-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check that the video URLs or IDs are correct and publicly accessible. Some videos have no captions at all, in which case the Actor returns an empty transcript. Try a different video to confirm.

Why is the transcript in the wrong language?

Set the language field to the desired ISO code. If that language is not available, the Actor uses the video's default. You can also leave language empty to always get the default.

Why is the SRT file missing?

Make sure includeSrt is set to true. SRT export is billed per video, so if you disabled it to save costs, only the JSON transcript is returned.

Why did the run stop before processing all my videos?

Check the maxItems setting. The Actor stops after collecting that many transcripts. Increase maxItems if you need more.

Why do I get an error for a video that has captions?

The video may be region-locked or have captions disabled for embedding. Try a different video or check the video's settings on YouTube.

FAQ

Question Answer
Does this work for auto-generated captions? Yes, it retrieves both manually uploaded and auto-generated transcripts when available. If a video has no captions at all, the Actor returns an empty transcript with a status flag.
Can I get the transcript in a specific language? Yes, set the language field to an ISO code like en, es, or fr. If that language is not available, the Actor falls back to the video's default transcript.
What is the difference between the JSON transcript and the SRT export? The JSON transcript is a structured array of segments with start time, duration, and text. The SRT export is a standard subtitle file you can use directly in video players. SRT export is billed per video and can be disabled.
How many videos can I scrape in one run? You can set maxItems up to 1,000,000. The Actor processes URLs and video IDs from your input list until it reaches that limit.
Do I need a YouTube API key? No. The Actor reads public transcript feeds directly, so there are no API keys, OAuth, or daily quotas.
Can I input a YouTube channel URL? No, this Actor accepts individual video URLs or video IDs. To get all videos from a channel, use a YouTube channel scraper first and then feed the video URLs here.
What output formats are supported? The dataset can be exported to CSV, JSON, Excel, or XML from the Apify platform. The SRT file is stored as a separate attachment per video.
Does it work with age-restricted or private videos? It works with any publicly accessible video that has captions. Private or age-restricted videos may not return transcripts.
Is the transcript returned as one string or segmented? Both. The output includes the full transcript text as one string and a segmented array with timestamps for each line.
Can I run this on a schedule? Yes, you can schedule recurring runs in Apify to collect new transcripts automatically.

Related actors

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by YouTube LLC. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
startUrls array URLs to process [{"url":"https://www.youtube.com/watch?v
videoIds array YouTube video IDs not set
language string ISO language code (en, es, fr...). Leaves empty to get the video's default. not set
maxItems integer How many transcripts to collect per run. 10
includeSrt boolean Include the transcript as SRT subtitle format (billed per video). Disable to return only the segmented JSON transcript. false

Pricing

from $10.00 per 1,000 results

Charged forWhat it isPrice each
Result item YouTube video with transcript and metadata. $0.01 to $0.015
SRT export SRT subtitle file for the video. Opt-in via includeSrt. $0.003 to $0.0045

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~youtube-transcript-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run YouTube Transcript Scraper on Apify All scrapers