YouTube Transcript API & Metadata Extractor avatar

YouTube Transcript API & Metadata Extractor

Pricing

Pay per usage

Go to Apify Store
YouTube Transcript API & Metadata Extractor

YouTube Transcript API & Metadata Extractor

Extract complete YouTube transcripts from one public video per run. Get clean text, timestamped segments, grouped Markdown, caption language, and video metadata for RAG, AI agents, search, and research. No YouTube API key or browser setup.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

UseAI Data

UseAI Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Extract a complete transcript from one public YouTube video per run. The API returns clean text, timestamped segments, grouped Markdown, caption language, and point-in-time video metadata for RAG, AI agents, search, and research.

TubeAI is the extraction engine behind this private candidate. The product contract is deliberately narrow: one video, transcript-only, predictable output.

What you get

ResultUse
Full transcript textRAG chunks, summaries, notes, and full-text search
Timestamped segmentsCitations and navigation back to the video
Grouped MarkdownStable context blocks for LLM prompts
Caption detailsRequested and resolved language plus manual or auto-generated track
Video metadataTitle, channel, date, counts, description, thumbnail, handle, and tags when available
Content hashDetect duplicate or changed transcript content
Structured error itemReliable handling when captions cannot be extracted

The transcript is not silently shortened. Metadata counters are a point-in-time snapshot, not live guarantees.

Quick start

In Apify Console, provide one public YouTube URL, leave language as auto, choose the grouping interval, and start the run. The same input works with the API and Apify clients:

{
"videoUrls": ["https://www.youtube.com/watch?v=BYXbuik3dgA"],
"language": "auto",
"intervalMinutes": 2
}

Python:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("scrapifiers/youtube-transcript-api").call(
run_input={
"videoUrls": ["https://www.youtube.com/watch?v=BYXbuik3dgA"],
"language": "auto",
"intervalMinutes": 2,
},
memory_mbytes=512,
timeout_secs=120,
)
items = client.dataset(run["defaultDatasetId"]).list_items().items

HTTP, n8n, and MCP integrations can call the same Apify Actor endpoint and consume the default Dataset URL. In an Apify-compatible MCP client, expose the Actor through the Apify MCP server and pass the JSON input above. Keep tokens in environment variables or platform secrets; never put them in input URLs.

Use cases

Use this Actor when

  • You need a transcript API for RAG, AI agents, search, research, or citation workflows.
  • You need original caption timing and grouped Markdown rather than a generated summary.
  • You want one stable JSON Dataset item that includes useful source metadata.
  • You prefer a narrow API contract that is easy to call from Python, HTTP, n8n, or MCP.

Do not use this Actor when

  • You need comments, channel inventories, playlists, search results, audio, or video files.
  • You need translation, summaries, sentiment analysis, or other generated content.
  • You need a multi-video batch in one run. Start separate runs or orchestrate them externally.

Input

Provide exactly one public YouTube video URL per run. Standard watch URLs, youtu.be links, Shorts, live-video URLs, and embed URLs are accepted.

FieldRequiredDescription
videoUrlsYesAn array containing exactly one public YouTube video URL
languageNoExisting caption language code, or auto; default is auto
intervalMinutesNoDeterministic Markdown group size; default is 2 minutes

auto selects the first available manual caption track, then an auto-generated track. A specific language selects an existing track in that language. Captions are not translated.

Output

Each attempted extraction produces one successful transcript item or one explicit error item in the default Dataset. A run stopped before extraction by its charge limit can contain no item.

{
"status": "ok",
"sourceUrl": "https://www.youtube.com/watch?v=BYXbuik3dgA",
"videoId": "BYXbuik3dgA",
"sourceVariant": "youtube_transcript_no_comments",
"languageRequested": "auto",
"languageResolved": "en",
"captionKind": "manual",
"title": "Example video",
"channelName": "Example channel",
"durationSeconds": 180,
"metadataCapturedAt": "2026-08-21T00:00:00Z",
"publishedAt": "2026-08-20T00:00:00Z",
"viewCount": 12345,
"likeCount": 321,
"commentCount": 42,
"transcriptText": "First line. Second line.",
"transcriptMarkdown": "[00:00:00] First line.\n[00:01:05] Second line.",
"groupedTranscriptMarkdown": "[00:00:00] First line. Second line.\n",
"transcriptSha256": "afe374c8081eb1b50d3b8d55b65c7785f8c68707b92564137feea31c0eb970cd",
"segments": [{"startSeconds": 0.0, "durationSeconds": 2.0, "text": "First line."}],
"groups": [{"startSeconds": 0, "timestamp": "00:00:00", "text": "First line. Second line."}],
"stats": {"segmentCount": 2, "groupCount": 1, "wordCount": 4, "intervalMinutes": 2},
"errorCategory": null,
"errorMessage": null,
"retryable": null
}

For an error item, status is error, errorCategory identifies the failure class, errorMessage is sanitized, and retryable indicates whether a later run may succeed.

Limits and reliability

  • One video per run; external orchestration is required for a list.
  • The video must be public and have an accessible caption track.
  • The extraction deadline is 105 seconds. The candidate is verified with a 120-second Actor timeout and 512 MiB memory.
  • Bounded retries categorize challenges, access denials, rate limits, server errors, and transport failures; non-retryable client errors fail fast.
  • A successful transcript is saved before it is counted as a successful paid result. Failed items are not counted as successful transcripts.
  • Safe parallel capacity is not promised. Start with one run at a time and measure your own workload before increasing concurrency.

Pricing

Check the current price and platform-usage treatment in Apify Console or the Store before running this private candidate. Public retail pricing is operator-gated; historical test values are not a pricing promise.

Privacy and responsible use

The result stores a canonical YouTube watch URL and does not retain input tracking parameters or URL credentials. This Actor is not affiliated with or endorsed by YouTube. Use it only for content you are authorized to access and in accordance with applicable terms and law.

FAQ

Can I submit multiple videos in one run? No. Submit one URL and start separate runs for multiple videos.

Does it download video or audio? No. It returns caption-derived transcript data only.

Are comments included? No. Comments are intentionally excluded from this transcript product.

Can it translate subtitles? No. Choose an existing caption language or use auto.

What happens when captions are unavailable? The Dataset receives a structured error item with a category, sanitized message, and retry guidance.

Where are results stored? Transcript and error items are written to the run's default Dataset and are available through Console, the Dataset API, and Apify clients.