ParseForge Scrapers

YouTube Transcript Scraper - Timestamps, SRT and Metadata

parseforge/youtube-transcript-scraper

VideosAutomationDeveloper tools

Get YouTube transcripts from video URLs or IDs: timestamped segments, plain text, word count, optional SRT, plus title, channel, views and caption languages. Creator-made captions come first. Videos without captions get a free error row. 37 of 37 test requests returned a transcript.

Run this scraper See the API call
Total users
37
Monthly active
8
Total runs
1.6K
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the YouTube Transcript Scraper - Timestamps, SRT and Metadata return?

ParseForge

YouTube Transcript Scraper - Timestamps, SRT and Metadata

Get the full transcript of any public YouTube video that has captions, from a URL or a video ID. Each video comes back as one row with timestamped segments, the plain text, a word count, an optional SRT file and the video metadata (title, channel, duration, views, likes, upload date, tags, caption languages). You do not need an API key or a quota.

Tested on September 24, 2026: 37 of 37 transcript requests came back, across 10 captioned videos in 18 runs (English and Spanish, creator-made and auto-generated captions). Each run finished in 4.3 to 11.1 seconds.

You pay only for videos that return a transcript. A video with no captions gets a row that says why, with its metadata, and that row is free. There is no start fee today; see Pricing for the fee scheduled on October 7, 2026.

YouTube's official API needs OAuth and quota, and it only returns captions for videos you own. This Actor reads the same caption tracks the YouTube player uses. When a video has both a creator-made track and an auto-generated one, you get the creator-made track.

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 takes YouTube video URLs or video IDs and returns one row per video with the transcript and the video's metadata.

  • ๐Ÿ“„ 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 spoken language.
  • ๐Ÿ”— Flexible input: feed video URLs, video IDs, or both, and cap the run with maxItems.

Each row also says which caption track was used (captionType is manual or auto-generated, plus captionTrackName) and lists every caption language the video offers.

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 the public caption tracks directly, with no OAuth or daily limits.
Creator captions first When a video has a human-made track, you get it instead of the auto-generated one.
Metadata on every row Title, channel, duration, views, likes, upload date, tags and caption languages, even on rows without a transcript.
Free error rows A video without captions returns a row with the reason and is not billed.
A run that failed says so If no video in the run returns a transcript, the run ends as FAILED instead of SUCCEEDED with an empty dataset.

Common complaints about transcript scrapers, and what this Actor does

These come from the 1 and 2 star reviews on the most used YouTube transcript Actor in the Apify Store, and from a 3 star question about its pricing.

"Did not give response to the video." Every video you send gets a row. If there is no transcript, the error field says why: no captions on the video, only auto-generated captions when you turned them off, or the video is private or removed. That row still carries the title, channel and caption languages, and you are not charged for it.

"Worked very well, but now it stopped." YouTube changes things, and any scraper can break. This Actor makes a breakage visible. When not a single video in a run returns a transcript, the run ends as FAILED with the reason in the status message, so a scheduled job or an API integration notices at once.

"Does $7 per 1000 items mean 1000 transcriptions?" Here, yes. One billed item is one video with its complete transcript, however long the video is. The 58-minute NASA press conference in our tests (1,590 segments, 10,129 words) was one item.

How it compares

Same videos, same day (September 24, 2026), against the most used transcript Actor in the Store, pintostudio/youtube-transcript-scraper.

This Actor pintostudio/youtube-transcript-scraper
Captioned test videos returned 6 of 6 6 of 6
Time per run 4.3 to 11.1 s 4.4 to 6.0 s
Videos per run Many (URL list, ID list, or both) One videoUrl per run
Timestamped segments Yes Yes
Plain text, word count, SRT Yes No, segments only
Video metadata and caption languages Yes, on every row No
Which track when there are several Creator-made first, captionType says which Not shown
Video with no captions Error row with the reason, not billed Empty data: [] row, billed

Configure the run

Give the Actor video URLs, video IDs, or both. Set a language if you want a specific one, and cap the run with maxItems. The Input tab lists every parameter. We ran each example below on September 24, 2026; the result is under it.

1. One video (the default input).

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

Result: 1 row, 244 segments from the creator-made English track.

2. Several videos by ID.

{
  "videoIds": ["iG9CE55wbtY", "arj7oStGLkU", "H14bBuluwB8"]
}

Result: 3 rows with 427, 315 and 117 segments, all creator-made English tracks.

3. A specific language.

{
  "startUrls": [{ "url": "https://www.youtube.com/watch?v=XUqrvbsTfck" }],
  "language": "es"
}

Result: 1 row, 365 segments from the Spanish track.

4. A short link with an SRT file.

{
  "startUrls": [{ "url": "https://youtu.be/H14bBuluwB8" }],
  "includeSrt": true
}

Result: 1 row with 117 segments and the SRT text in transcriptSrt. The SRT is billed as its own event.

5. Creator-made captions only.

{
  "videoIds": ["arj7oStGLkU", "BbPeeZLKrT0"],
  "includeAutoGenerated": false
}

Result: 1 transcript (315 segments) and 1 unbilled row for BbPeeZLKrT0, which only has auto-generated captions.

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 does a row have an error instead of a transcript?

The error field gives the reason. "No subtitles available for this video" means the video has no caption track at all, so there is nothing to read. "Manual subtitles not available" means you turned off auto-generated captions and the video only has those. "Video not available" means it is private, removed or blocked. "Could not load captions" means YouTube refused several attempts in a row; run the video again. These rows are not billed.

Why is the transcript in the wrong language?

Set the language field to the ISO code you want. If the video has no track in that language, you get the spoken language. availableSubtitleLanguages and availableAutoCaptionLanguages show what the video offers.

Why is the SRT field empty?

Set includeSrt to true. With it off, transcriptSrt stays empty and you are not charged for it.

Why did the run stop before processing all my videos?

Check maxItems. The Actor stops after that many videos. Free-plan runs stop at 10.

Why did my run end as FAILED?

No video in the run returned a transcript. The status message lists the first errors. You were not charged for those rows.

FAQ

Question Answer
Does this work for auto-generated captions? Yes. When a video only has auto-generated captions you get those, and captionType says auto-generated. Turn off includeAutoGenerated to skip them.
Which track do I get when there are several? The track in your chosen language if it exists. Otherwise the spoken language, with the creator-made track ahead of the auto-generated one.
Can I get the transcript in a specific language? Yes, set the language field to an ISO code like en, es, or fr. If the video has no track in that language, you get the spoken language.
What is the difference between the JSON transcript and the SRT export? The JSON transcript is an array of segments with start time, duration, and text. The SRT export is the same text as a subtitle file, in the transcriptSrt field. SRT is billed per video and is off by default.
How many videos can I scrape in one run? Up to 1,000,000 with maxItems. The Actor works through 10 videos at a time.
Do I need a YouTube API key? No. There are no API keys, OAuth, or daily quotas.
Can I input a YouTube channel or playlist URL? No, only single videos. To get every video of a channel or playlist, run the YouTube Scraper first and paste its url column here.
What output formats are supported? CSV, JSON, Excel, or XML from the Dataset tab or the API.
Does it work with age-restricted or private videos? Private videos do not work, and age-restricted videos may not return a transcript. When no transcript comes back, you get an error row that is not billed.
Is the transcript returned as one string or segmented? Both. transcriptPlainText has the full text and transcript has the timestamped segments.
Can I run this on a schedule? Yes, you can schedule recurring runs in Apify to collect new transcripts automatically.

Next step

Each transcript row names its video and its channel, so you can keep going with the other ParseForge YouTube Actors:

๐Ÿ†˜ 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.

What input does the YouTube Transcript Scraper - Timestamps, SRT and Metadata accept?

FieldTypeWhat it doesDefault
startUrls array Video links in any common form: youtube.com/watch?v=, youtu.be/, /shorts/, /embed/ or /live/. One row per video. Channel and playlist links are not expanded. [{"url":"https://www.youtube.com/watch?v
videoIds array 11-character YouTube video IDs, for example UF8uR6Z6KLc. You can use this list, the URL list, or both. not set
language string ISO language code such as en, es or fr. If the video has no track in that language, you get the track in the spoken language. Leave empty to get the spoken language. not set
includeAutoGenerated boolean Human-made caption tracks are always picked first. When a video only has YouTube's auto-generated captions, turn this off to skip it (you get an unbilled error row) instead of an auto transcript. true
includeSrt boolean Adds the transcript in SRT subtitle format in the transcriptSrt field. Billed as a separate event per video. Leave it off to get only the timestamped JSON segments and plain text. false
maxItems integer Upper limit on videos processed in this run. Leave empty to process every video in the input. Free-plan runs stop at 10. 10

How much does the YouTube Transcript Scraper - Timestamps, SRT and Metadata cost?

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
Actor Start Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). $0.00445 to $0.005

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

How do I call the YouTube Transcript Scraper - Timestamps, SRT and Metadata 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 '{
    "startUrls": [
      {
        "url": "https://www.youtube.com/watch?v=UF8uR6Z6KLc"
      }
    ],
    "includeAutoGenerated": true,
    "includeSrt": false,
    "maxItems": 10
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "startUrls": [
    {
      "url": "https://www.youtube.com/watch?v=UF8uR6Z6KLc"
    }
  ],
  "includeAutoGenerated": true,
  "includeSrt": false,
  "maxItems": 10
}

What do users say about the YouTube Transcript Scraper - Timestamps, SRT and Metadata?

No reviews yet. Be the first.

How do I report an issue with the YouTube Transcript Scraper - Timestamps, SRT and Metadata?

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.

What related scrapers can I use?

Run YouTube Transcript Scraper - Timestamps, SRT and Metadata on Apify All scrapers