YouTube Transcript Scraper — Timestamped Chunks avatar

YouTube Transcript Scraper — Timestamped Chunks

Pricing

$2.00 / 1,000 video transcripts

Go to Apify Store
YouTube Transcript Scraper — Timestamped Chunks

YouTube Transcript Scraper — Timestamped Chunks

Extract captions from YouTube video URLs as text, timed segments, SRT or VTT. Add source-linked chunks for research pipelines, enforce an exact caption language, and inspect clear errors and run summaries.

Pricing

$2.00 / 1,000 video transcripts

Rating

0.0

(0)

Developer

Nick McNemar

Nick McNemar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 minutes ago

Last modified

Share

Turn captioned YouTube videos into source-linked research

YouTube Transcript Scraper extracts existing captions from individual public video URLs or IDs. Research and knowledge-base workflows can use plain text, timestamped segments, SRT, VTT and optional chunks linked back to the video. Each unique video produces one dataset row, including a clear error if usable captions are unavailable.

Try a small example

Open the starter workflow or paste this input into the Actor:

{
"videoUrls": [
"https://www.youtube.com/watch?v=_f5VEaR-F2k"
],
"language": "en",
"maxItems": 1,
"includeChunks": true,
"chunkMaxCharacters": 1000,
"outputFormats": [
"text",
"segments"
]
}

One video row containing captions and nested chunks with source URLs that open at the corresponding caption time. Start the run, inspect the result and summary, then use the export links.

Preview the output

Illustrative field example; this is not a live result or a guarantee about a named website or listing:

{
"videoId": "_f5VEaR-F2k",
"language": "en",
"languageFallback": false,
"chunks": [
{
"chunkId": "video:language:time:content-hash",
"start": 12.5,
"end": 18,
"url": "https://www.youtube.com/watch?v=_f5VEaR-F2k&t=12s",
"text": "Caption text from your selected video."
}
],
"chunkCount": 1,
"error": null,
"errorCode": null
}

The Workflow view highlights videoId, title, language, languageFallback, transcript, wordCount, chunkCount, errorCode, error. Use full JSON for all fields and nested arrays; CSV is suitable for the selected overview columns.

Use it in your workflow

Prepare caption chunks for a research pipeline

Set includeChunks: true to add nested chunks to each video row. chunkMaxCharacters defaults to 1,500 and accepts 200–20,000 characters. Each chunk includes text, start/end seconds, language, a stable content-derived chunkId and a URL with a timestamp. Download full JSON to retain these nested arrays. The Workflow CSV is an overview, not a flattened chunk table.

Chunk times come from the source captions. If one long caption is split into multiple chunks, those chunks share its timing; these are not word-level timestamps. Chunk boundaries can change when the source captions, selected language or size setting changes. Keep videoId, language and chunkId downstream, and replace a video’s stored chunks when re-ingesting changed captions.

The Actor does not summarize, embed or judge the accuracy of captions. Feed the returned chunks into your own search or AI pipeline and retain their source links so readers can check the original context.

Coverage and limitations

Choose a language and inspect failures

Exact language codes are preferred before broader language variants. With requireLanguageMatch: true, the selected caption track must exactly match language; for example, en-GB is different from en-US. Otherwise a broader or different available track can be used, and languageFallback tells you that the source track differs from your request. availableLanguages helps you select a supported track.

Optional translateTo uses a translation advertised by YouTube for that video. sourceLanguage, isTranslated and translatedTo distinguish it from original captions. Machine captions and translations can contain errors.

Unavailable captions, empty responses, unsupported languages and upstream failures have errorCode values such as NO_CAPTIONS, EMPTY_CAPTIONS, LANGUAGE_UNAVAILABLE and UPSTREAM_ERROR. Private, restricted or inaccessible videos may fail. The Actor does not use your YouTube login, transcribe audio, download video, or discover a channel’s videos. Supply individual links you are authorized to process.

Charge limits, custom proxies and restarts

The Actor checks the remaining saved-row event budget before writing and stops new work when that capacity is exhausted. SUMMARY includes chargeLimitReached; an exactly filled budget can still be complete when every requested input was handled. Requests already in flight are stopped or drained, and only confirmed dataset writes count as saved.

The proxy input supports both Apify Proxy and custom proxyUrls. A configured custom proxy is used for target requests rather than silently falling back to direct access. Keep proxy credentials private.

On a process restart within the same run, the Actor restores completed video keys and counts from its dataset and checkpoint, then resumes unfinished videos. Leave the run input unchanged. This is recovery within one run, not deduplication across separate runs. Repeated identical chunks at the same timestamp receive deterministic occurrence suffixes so every chunk ID remains distinct within the output.

What does it cost?

The current event price is $0.002 per saved video row: 1 video costs $0.002, 100 cost $0.20, and 1,000 cost $2 in Actor event fees. An error or no-caption result is still a saved row and counts. Optional chunks, text and subtitle formats stay inside that row; they do not add per-chunk events. Duplicate video IDs in one run are processed once. A later run can charge for the same video again. SUMMARY adds no dataset row. Check the live Pricing tab before scaling.

Repeat runs and integrations

For a growing research library, have your upstream workflow supply newly discovered video IDs. Skip IDs you have already ingested unless you deliberately want refreshed captions. Save a task only after testing its language and output settings. In an integration, check each row’s errorCode, store the successful chunks with their source links, and route failures for review instead of sending empty text into an AI step.

In Make or n8n, start the Actor, wait for its terminal status, then retrieve the dataset and SUMMARY. A started run is not a completed export. Keep the Apify token in the integration’s credentials. Use its error path for failed runs and review partial summaries before publishing downstream results.

Input and export reference

The Input tab lists every accepted control, default and limit. Use the JSON example above for a small first run. The Output tab links to Workflow CSV, Workflow JSON, full JSON and Run summary. When calling the dataset API for larger results, paginate until you have retrieved the full intended dataset; a single limited response may contain only its first page.

Frequently asked questions

Is this speech-to-text for videos without captions?

No. It extracts captions that YouTube exposes. It cannot create a transcript from audio when captions are unavailable.

Can I paste a playlist or channel URL?

Use individual watch, Shorts, live or embed URLs, youtu.be links, or 11-character video IDs. Discovering channel or playlist videos is a separate step.

Can I export subtitles and chunks in the same run?

Yes. Choose text, segments, srt and/or vtt in outputFormats and enable includeChunks. At least one output format is required. The same caption data supplies every selected representation.

What does a successful run mean?

The run can finish while individual videos report errors. Check the per-video error fields and SUMMARY.failed before treating the batch as usable.

Use YouTube Video Details Scraper when you need metadata without captions. It is a separate Actor with its own price and inputs.

Report a reproducible issue

Use this Actor’s Issues tab with a small public input, run ID, expected result and the relevant error or summary. Avoid posting credentials or private data. Source changes can require updates; no response-time or accuracy guarantee is implied.