transcript-yt-com Transcript API

The Transcript API from transcript-yt-com — 1 operation(s) for transcript.

Operations 2

GET /v1/transcript Get a YouTube video transcript #
POST /v1/transcript Get a YouTube video transcript (JSON body) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/transcript-yt-com:transcript-yt-com-transcript-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

transcript-yt-com-transcript-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Yt Com Transcript API
  version: 1.0.0
  contact:
    email: aadit@techiseasy.co.in
    url: https://transcript-yt.com
  termsOfService: https://transcript-yt.com/terms
  description: 'Operations tagged Transcript across 2 of this provider''s published API definitions: openapi.json, transcript-yt-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://transcript-yt.com
security:
- bearerAuth: []
- apiKeyHeader: []
tags:
- name: Transcript
paths:
  /v1/transcript:
    get:
      operationId: getTranscript
      summary: Get a YouTube video transcript
      description: Returns the transcript of a public YouTube video. Costs 1 credit; videos with no captions are transcribed with AI speech-to-text at 1 credit per started minute of audio. Failed requests are not billed.
      parameters:
      - name: url
        in: query
        required: true
        description: A YouTube URL (watch, youtu.be, shorts, embed) or a bare 11-character video ID.
        schema:
          type: string
          example: 5f3Pn-N6yLc
      - name: language
        in: query
        description: BCP-47 code. Defaults to the original / English track. If the video has no track in this language, the original is machine-translated.
        schema:
          type: string
          pattern: ^[A-Za-z0-9-]{2,16}$
      - name: translate_to
        in: query
        description: BCP-47 target code (150+ languages). Machine-translates the selected track, keeping timings.
        schema:
          type: string
          pattern: ^[A-Za-z0-9-]{2,16}$
      - name: format
        in: query
        schema:
          type: string
          enum:
          - json
          - text
          - srt
          - vtt
          - csv
          - md
          default: json
      - name: includeSegments
        in: query
        description: Set false to return only full text (JSON format only).
        schema:
          type: boolean
          default: true
      - name: timestamps
        in: query
        description: Prefix each line with [HH:MM:SS] in text and md output.
        schema:
          type: boolean
          default: false
      - name: paragraphs
        in: query
        description: Merge segments into paragraph-length chunks.
        schema:
          type: boolean
          default: false
      - name: chunkSize
        in: query
        description: Max characters per paragraph when paragraphs=true.
        schema:
          type: integer
          minimum: 50
          maximum: 10000
      - name: captionType
        in: query
        description: Restrict to uploaded (manual) or auto-generated (auto) captions.
        schema:
          type: string
          enum:
          - any
          - manual
          - auto
          default: any
      - name: originalLanguage
        in: query
        description: Prefer captions in the spoken language over English when no language is given.
        schema:
          type: boolean
          default: false
      - name: mode
        in: query
        description: 'auto: captions, AI fallback. captions: never AI. ai: transcribe audio even if captions exist.'
        schema:
          type: string
          enum:
          - auto
          - captions
          - ai
          default: auto
      - name: startTime
        in: query
        description: Seconds; return only the transcript from here on.
        schema:
          type: number
          minimum: 0
      - name: endTime
        in: query
        description: Seconds; return only the transcript before this.
        schema:
          type: number
          minimum: 0
      - name: search
        in: query
        description: Return only lines containing this text (case-insensitive).
        schema:
          type: string
      responses:
        '200':
          description: Transcript. JSON by default; text/plain, text/vtt, text/csv, or text/markdown for other formats.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
            X-RateLimit-Remaining:
              schema:
                type: integer
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix seconds when the window resets.
            X-Credits-Charged:
              schema:
                type: integer
            X-Credits-Remaining:
              schema:
                type: integer
            X-Cache:
              schema:
                type: string
                enum:
                - HIT
                - MISS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transcript'
            text/plain:
              schema:
                type: string
            text/vtt:
              schema:
                type: string
            text/csv:
              schema:
                type: string
            text/markdown:
              schema:
                type: string
        '400':
          description: INVALID_REQUEST or INVALID_VIDEO
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'UNAUTHORIZED: missing or invalid API key'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Out of credits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutOfCredits'
        '404':
          description: VIDEO_UNAVAILABLE, NO_CAPTIONS, or LANGUAGE_NOT_AVAILABLE
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: RATE_LIMITED
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: UPSTREAM_ERROR
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: BLOCKED (temporary, retry shortly) or SERVICE_UNAVAILABLE
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Transcript
    post:
      operationId: postTranscript
      summary: Get a YouTube video transcript (JSON body)
      description: Same as GET /v1/transcript with parameters in a JSON body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - url
              properties:
                url:
                  type: string
                language:
                  type: string
                  pattern: ^[A-Za-z0-9-]{2,16}$
                translate_to:
                  type: string
                  pattern: ^[A-Za-z0-9-]{2,16}$
                format:
                  type: string
                  enum:
                  - json
                  - text
                  - srt
                  - vtt
                  - csv
                  - md
                  default: json
                includeSegments:
                  type: boolean
                  default: true
                timestamps:
                  type: boolean
                  default: false
                paragraphs:
                  type: boolean
                  default: false
                chunkSize:
                  type: integer
                  minimum: 50
                  maximum: 10000
                captionType:
                  type: string
                  enum:
                  - any
                  - manual
                  - auto
                  default: any
                originalLanguage:
                  type: boolean
                  default: false
                mode:
                  type: string
                  enum:
                  - auto
                  - captions
                  - ai
                  default: auto
                startTime:
                  type: number
                  minimum: 0
                endTime:
                  type: number
                  minimum: 0
                search:
                  type: string
      responses:
        '200':
          description: Transcript. JSON by default; text/plain, text/vtt, text/csv, or text/markdown for other formats.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
            X-RateLimit-Remaining:
              schema:
                type: integer
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix seconds when the window resets.
            X-Credits-Charged:
              schema:
                type: integer
            X-Credits-Remaining:
              schema:
                type: integer
            X-Cache:
              schema:
                type: string
                enum:
                - HIT
                - MISS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transcript'
            text/plain:
              schema:
                type: string
            text/vtt:
              schema:
                type: string
            text/csv:
              schema:
                type: string
            text/markdown:
              schema:
                type: string
        '400':
          description: INVALID_REQUEST or INVALID_VIDEO
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'UNAUTHORIZED: missing or invalid API key'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Out of credits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutOfCredits'
        '404':
          description: VIDEO_UNAVAILABLE, NO_CAPTIONS, or LANGUAGE_NOT_AVAILABLE
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: RATE_LIMITED
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: UPSTREAM_ERROR
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: BLOCKED (temporary, retry shortly) or SERVICE_UNAVAILABLE
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Transcript
    servers:
    - url: https://transcript-yt.com
components:
  schemas:
    Segment:
      type: object
      required:
      - start
      - duration
      - end
      - timestamp
      - text
      properties:
        start:
          type: number
          description: Seconds
        duration:
          type: number
          description: Seconds
        end:
          type: number
          description: Seconds
        timestamp:
          type: string
          description: Readable start time, e.g. 1:23 or 1:02:03
        text:
          type: string
    Transcript:
      type: object
      properties:
        videoId:
          type: string
        title:
          type:
          - string
          - 'null'
        author:
          type:
          - string
          - 'null'
        channelId:
          type:
          - string
          - 'null'
        durationSeconds:
          type: number
        language:
          type: string
          description: Language delivered (the target when translated).
        translated:
          type: boolean
        autoGenerated:
          type: boolean
        source:
          type: string
          enum:
          - captions
          - speech_to_text
        segments:
          type: array
          items:
            $ref: '#/components/schemas/Segment'
        text:
          type: string
        availableLanguages:
          type: array
          items:
            type: object
            required:
            - languageCode
            - languageName
            - autoGenerated
            properties:
              languageCode:
                type: string
                example: en
              languageName:
                type: string
                example: English
              autoGenerated:
                type: boolean
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: string
              enum:
              - INVALID_REQUEST
              - INVALID_VIDEO
              - VIDEO_UNAVAILABLE
              - NO_CAPTIONS
              - LANGUAGE_NOT_AVAILABLE
              - BLOCKED
              - UPSTREAM_ERROR
              - UNAUTHORIZED
              - RATE_LIMITED
              - SERVICE_UNAVAILABLE
              - INTERNAL
            message:
              type: string
    OutOfCredits:
      type: object
      properties:
        error:
          type: string
          example: Out of credits
        plan:
          type: string
        credits_remaining:
          type: integer
        upgrade_url:
          type: string
        topup_url:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key, e.g. ts_live_...
    apiKeyHeader:
      type: apiKey
      in: header
      name: x-api-key
externalDocs:
  url: https://transcript-yt.com/docs
x-refined-from:
- openapi.json
- transcript-yt-com-openapi.json