Skip to main content
Glama

gouda_studios/youtube-transcript-extractor

gouda_studios--youtube-transcript-extractor
Destructive

Returns YouTube video or Short transcripts as plain text, timestamped text, segments, or SRT. Use when you need captions or spoken content from a video URL.

Input Schema

NameRequiredDescriptionDefault
videosYesWatch URLs, youtu.be links, Shorts, live or embed URLs.
waitSecsNoSeconds to wait for the run to finish (0-45).
languagesNoLanguage codes in priority order, e.g. en, es, de. If.
maxVideosNoStop after this many videos. Example values: 1000
includeSrtNoAdd an SRT subtitle file as a string.
translateToNoLanguage code to auto-translate the transcript into.
preferManualNoUse manually created captions over auto-generated ones.
includeSegmentsNoAdd an array of segments with start time and duration.
proxyConfigurationNoOptional. Leave off to use our built-in residential.

Output Schema

NameRequiredDescriptionDefault
tipNoAdvisory guidance RAG Web Browser wrote to its key-value.
runIdYesActor run ID
statsNoRun statistics
statusYesRun status: READY | RUNNING | TIMING-OUT | TIMED-OUT |.
actorIdYesStable Apify Actor ID from the run record
summaryYesPast-tense summary of the run state
exitCodeNoActor process exit code; populated for terminal states.
nextStepYesOne primary follow-up action with identifiers interpolated
storagesYesDataset and key-value store metadata, keyed by alias.
actorNameNo"username/actor-name"
startedAtNoISO timestamp when the run started
finishedAtNoISO timestamp when the run finished (terminal states only)
statusMessageNoPass-through from Apify run.statusMessage
apifyConsoleUrlNoPersonalized Apify Console link to the run; present only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed54 schema fields changed
    • changedInput schema / properties / includeSegments / description
      Previous value: -"Add an array of segments with start time and duration.\nExample values: true"New value: +"Add an array of segments with start time and duration."
    • removedInput schema / properties / includeSegments / examples
      Removed value: -[
      -  true
      -]
    • removedInput schema / properties / includeSegments / title
      Removed value: -"Include timed segments"
    • removedInput schema / properties / includeSrt / title
      Removed value: -"Include SRT subtitles"
    • changedInput schema / properties / languages / description
      Previous value: -"Language codes in priority order, e.g. en, es, de. If none match, the first available transcript is returned.\nExample values: [\"en\"]"New value: +"Language codes in priority order, e.g. en, es, de. If."
    • removedInput schema / properties / languages / examples
      Removed value: -[
      -  "en"
      -]
    • removedInput schema / properties / languages / items / description
      Removed value: -"Language codes in priority order, e.g. en, es, de. If none match, the first available transcript is returned."
    • removedInput schema / properties / languages / items / title
      Removed value: -"Preferred languages"
    • removedInput schema / properties / languages / title
      Removed value: -"Preferred languages"
    • changedInput schema / properties / maxVideos / description
      Previous value: -"Stop after this many videos.\nExample values: 1000"New value: +"Stop after this many videos. Example values: 1000"
    • removedInput schema / properties / maxVideos / examples
      Removed value: -[
      -  1000
      -]
    • removedInput schema / properties / maxVideos / title
      Removed value: -"Max videos"
    • changedInput schema / properties / preferManual / description
      Previous value: -"Use manually created captions over auto-generated ones when both exist.\nExample values: true"New value: +"Use manually created captions over auto-generated ones."
    • removedInput schema / properties / preferManual / examples
      Removed value: -[
      -  true
      -]
    • removedInput schema / properties / preferManual / title
      Removed value: -"Prefer human-made captions"
    • changedInput schema / properties / proxyConfiguration / description
      Previous value: -"Optional. Leave off to use our built-in residential proxy, included in the price. Set your own only if you want to.\nExample values: {\"useApifyProxy\":false}"New value: +"Optional. Leave off to use our built-in residential."
    • removedInput schema / properties / proxyConfiguration / examples
      Removed value: -[
      -  {
      -    "useApifyProxy": false
      -  }
      -]
    • removedInput schema / properties / proxyConfiguration / prefill
      Removed value: -{
      -  "useApifyProxy": false
      -}
    • changedInput schema / properties / proxyConfiguration / properties / apifyProxyGroups / description
      Previous value: -"Select specific Apify Proxy groups to use (e.g., RESIDENTIAL, DATACENTER).\n**DATACENTER:**\nThe fastest and cheapest option. It uses datacenters to change your IP address. Note that there is a chance of being blocked because of the activity of other users.\n\n**RESIDENTIAL:**\nIP addresses located in homes and offices around the world. These IPs are the least likely to be blocked."New value: +"Select specific Apify Proxy groups to use (."
    • removedInput schema / properties / proxyConfiguration / properties / apifyProxyGroups / items / description
      Removed value: -"Proxy group name"
    • removedInput schema / properties / proxyConfiguration / properties / apifyProxyGroups / items / title
      Removed value: -"Proxy group name"
    • removedInput schema / properties / proxyConfiguration / properties / apifyProxyGroups / title
      Removed value: -"Apify Proxy Groups"
    • changedInput schema / properties / proxyConfiguration / properties / proxyUrls / description
      Previous value: -"List of custom proxy URLs to be used instead of the Apify Proxy."New value: +"List of custom proxy URLs to be used instead of ."
    • removedInput schema / properties / proxyConfiguration / properties / proxyUrls / items / description
      Removed value: -"Custom proxy URL"
    • removedInput schema / properties / proxyConfiguration / properties / proxyUrls / items / title
      Removed value: -"Custom proxy URL"
    • removedInput schema / properties / proxyConfiguration / properties / proxyUrls / title
      Removed value: -"Proxy URLs"
    • changedInput schema / properties / proxyConfiguration / properties / useApifyProxy / description
      Previous value: -"Whether to use Apify Proxy. Set this to false when you want to use custom proxy URLs."New value: +"Whether to use Apify Proxy. Set this to false when you."
    • removedInput schema / properties / proxyConfiguration / properties / useApifyProxy / title
      Removed value: -"Use Apify Proxy"
    • removedInput schema / properties / proxyConfiguration / title
      Removed value: -"Proxy"
    • changedInput schema / properties / translateTo / description
      Previous value: -"Language code to auto-translate the transcript into using YouTube's translation, e.g. en."New value: +"Language code to auto-translate the transcript into."
    • removedInput schema / properties / translateTo / title
      Removed value: -"Translate to (optional)"
    • changedInput schema / properties / videos / description
      Previous value: -"**REQUIRED** Watch URLs, youtu.be links, Shorts, live or embed URLs, or bare 11-character video IDs.\nExample values: [\"https://www.youtube.com/watch?v=dQw4w9WgXcQ\"]"New value: +"Watch URLs, youtu.be links, Shorts, live or embed URLs."
    • removedInput schema / properties / videos / examples
      Removed value: -[
      -  "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
      -]
    • removedInput schema / properties / videos / items / description
      Removed value: -"**REQUIRED** Watch URLs, youtu.be links, Shorts, live or embed URLs, or bare 11-character video IDs."
    • removedInput schema / properties / videos / items / title
      Removed value: -"YouTube video URLs or IDs"
    • removedInput schema / properties / videos / prefill
      Removed value: -[
      -  "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
      -]
    • removedInput schema / properties / videos / title
      Removed value: -"YouTube video URLs or IDs"
    • changedInput schema / properties / waitSecs / description
      Previous value: -"Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget."New value: +"Seconds to wait for the run to finish (0-45)."
    • changedOutput schema / properties / apifyConsoleUrl / description
      Previous value: -"Personalized Apify Console link to the run; present only for Console sessions"New value: +"Personalized Apify Console link to the run; present only."
    • changedOutput schema / properties / exitCode / description
      Previous value: -"Actor process exit code; populated for terminal states (especially FAILED)"New value: +"Actor process exit code; populated for terminal states."
    • changedOutput schema / properties / status / description
      Previous value: -"Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED"New value: +"Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT |."
    • changedOutput schema / properties / storages / description
      Previous value: -"Dataset and key-value store metadata, keyed by alias. \"default\" is always the primary entry."New value: +"Dataset and key-value store metadata, keyed by alias."
    • changedOutput schema / properties / storages / properties / datasets / additionalProperties / properties / apifyConsoleUrl / description
      Previous value: -"Personalized Apify Console link to the dataset; present only for Console sessions"New value: +"Personalized Apify Console link to the dataset; present."
    • changedOutput schema / properties / storages / properties / datasets / additionalProperties / properties / inflatedBytes / description
      Previous value: -"Approximate uncompressed byte size of the dataset. Use with itemCount to pick limit/fields before fetching."New value: +"Approximate uncompressed byte size of the dataset. Use."
    • changedOutput schema / properties / storages / properties / datasets / description
      Previous value: -"Map of dataset alias → metadata. Key \"default\" is always the run's primary dataset."New value: +"Map of dataset alias → metadata. Key \"default\" is always."
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / apifyConsoleUrl / description
      Previous value: -"Personalized Apify Console link to the dataset; present only for Console sessions"New value: +"Personalized Apify Console link to the dataset; present."
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / inflatedBytes / description
      Previous value: -"Approximate uncompressed byte size of the dataset. Use with itemCount to pick limit/fields before fetching."New value: +"Approximate uncompressed byte size of the dataset. Use."
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / description
      Previous value: -"JSON Schema for rows in the dataset at `storages.datasets.default.id` — describes row shape only; the rows themselves are NOT returned inline in this response. Inferred from this Actor's historical successful runs. To fetch actual rows, call `get-dataset-items` with the dataset id and a `fields` projection drawn from this schema."New value: +"JSON Schema for rows in the dataset at."
    • changedOutput schema / properties / storages / properties / keyValueStores / additionalProperties / properties / apifyConsoleUrl / description
      Previous value: -"Personalized Apify Console link to the store; present only for Console sessions"New value: +"Personalized Apify Console link to the store; present."
    • changedOutput schema / properties / storages / properties / keyValueStores / description
      Previous value: -"Map of key-value store alias → metadata. Key \"default\" is always the run's primary store."New value: +"Map of key-value store alias → metadata. Key \"default\"."
    • changedOutput schema / properties / storages / properties / keyValueStores / properties / default / properties / apifyConsoleUrl / description
      Previous value: -"Personalized Apify Console link to the store; present only for Console sessions"New value: +"Personalized Apify Console link to the store; present."
    • changedOutput schema / properties / tip / description
      Previous value: -"Advisory guidance RAG Web Browser wrote to its key-value store under the reserved \"TIP\" key"New value: +"Advisory guidance RAG Web Browser wrote to its key-value."
    • changedOutput schema / properties / tip / properties / caveat / description
      Previous value: -"Present when this session cannot run the Actor the tip recommends"New value: +"Present when this session cannot run the Actor the tip."
    • changedOutput schema / properties / tip / properties / message / description
      Previous value: -"Truncated to 300 characters, with a trailing ellipsis if the Actor's message was longer"New value: +"Truncated to 300 characters, with a trailing ellipsis if."
  2. Added

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description frames the tool as a pure retrieval operation ('Returns ... transcripts'), which conflicts with the supplied annotations declaring readOnlyHint=false and destructiveHint=true. The annotations over-warn rather than the description under-warning, but the agent receives no reconciliation. Credit is given for disclosing the four output shapes, which is real behavioral value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the output forms front-loaded before the usage cue. Nothing redundant or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the format options are covered. However, for a 9-parameter tool with batch input, language priority, translation, and proxy settings, the description says nothing about batch limits, language fallback behavior, or the waitSecs polling semantics an agent must reason about.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter, including the nested proxy object, is already documented structurally; the baseline is 3. The description's mention of SRT and segments implicitly maps to includeSrt and includeSegments but adds no syntax or semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource — 'Returns YouTube video or Short transcripts' — and enumerates the available output forms (plain text, timestamped text, segments, SRT). This is far more specific than the name alone, though it does not explicitly contrast itself with the other Apify actor tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need captions or spoken content from a video URL' gives a clear trigger condition, but there is no guidance on when not to use it, no mention of alternatives, and no hint about the batch/language/translation options that would steer an agent's call. Adequate but thin.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.