{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Transcript Scraper & API: $1 per 1,000 Transcripts",
    "description": "Get YouTube transcripts, subtitles and captions with video info (title, channel, date, views, likes) from videos, channels, playlists or searches. Full text plus timestamped segments in the original language, ready for AI. $1 per 1,000 transcripts; no captions = free.",
    "version": "1.0",
    "x-build-id": "1Ley41RITve9Rjgwq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fit_melon~youtube-transcript-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fit_melon-youtube-transcript-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/fit_melon~youtube-transcript-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fit_melon-youtube-transcript-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/fit_melon~youtube-transcript-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fit_melon-youtube-transcript-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "videoUrls": {
            "title": "🎬 Video links or IDs",
            "type": "array",
            "description": "One per line: watch links, youtu.be links, Shorts, /live/ and /embed/ links, or 11-character video IDs. Channel and playlist links pasted here also work.",
            "items": {
              "type": "string"
            }
          },
          "channelUrls": {
            "title": "📺 Channels",
            "type": "array",
            "description": "Channel links (/@handle, /channel/UC…, /c/…, /user/…) or @handles. The newest videos first, up to the maximum below (0 = all of them).",
            "items": {
              "type": "string"
            }
          },
          "channelContent": {
            "title": "Channel content",
            "enum": [
              "all",
              "videos",
              "shorts"
            ],
            "type": "string",
            "description": "Which uploads to take from each channel: all of them, long videos only (no Shorts), or Shorts only. Only applies to channels.",
            "default": "all"
          },
          "publishedAfter": {
            "title": "Channels and playlists: published after",
            "type": "string",
            "description": "Only keep the videos of channels and playlists published on or after this day: a date (2026-11-01) or a period (7 days, 2 weeks, 3 months, 1 year). Ideal for a daily or weekly schedule that collects only a channel's new videos. Older videos are left out and never charged. Leave empty for all videos."
          },
          "playlistUrls": {
            "title": "📃 Playlists",
            "type": "array",
            "description": "Playlist links (…/playlist?list=…) or playlist IDs.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "🔎 Search terms",
            "type": "array",
            "description": "One search per line: the first videos of each YouTube search (live streams are skipped).",
            "items": {
              "type": "string"
            }
          },
          "searchUploadDate": {
            "title": "Search: upload date",
            "enum": [
              "any",
              "hour",
              "today",
              "week",
              "month",
              "year"
            ],
            "type": "string",
            "description": "Only keep search results uploaded in this period, e.g. to collect the new videos about a topic every day. Only applies to searches.",
            "default": "any"
          },
          "searchSortBy": {
            "title": "Search: sort by",
            "enum": [
              "relevance",
              "views"
            ],
            "type": "string",
            "description": "Order of the search results: YouTube's relevance, or the most viewed videos first. Only applies to searches.",
            "default": "relevance"
          },
          "maxVideos": {
            "title": "Max videos per channel, playlist or search",
            "minimum": 0,
            "type": "integer",
            "description": "Limit for each channel, playlist and search (video links are always all processed). 0 = no limit.",
            "default": 50
          },
          "language": {
            "title": "Preferred transcript language",
            "type": "string",
            "description": "Language code, e.g. en, fr, es, de, pt-BR. Manual subtitles are preferred over auto-generated ones. When the video has no transcript in this language, its original language is returned. Empty = the video's original language."
          },
          "translateTo": {
            "title": "Translate to (optional)",
            "type": "string",
            "description": "Language code for YouTube's own automatic translation, e.g. en. YouTube often refuses translations: the original transcript is then returned with translationUnavailable: true (no extra cost). Empty = no translation."
          },
          "transcriptType": {
            "title": "Transcript type",
            "enum": [
              "any",
              "manual",
              "auto"
            ],
            "type": "string",
            "description": "Any: manual subtitles when they exist, else auto-generated captions. Manual only, or auto-generated only.",
            "default": "any"
          },
          "includeTimestamps": {
            "title": "Include timestamped segments",
            "type": "boolean",
            "description": "Adds `segments`: [{start, duration, text}] in seconds. The full text (`transcriptText`) is always included.",
            "default": true
          },
          "outputFormats": {
            "title": "Extra formats",
            "type": "array",
            "description": "Also return the transcript as readable paragraphs, SRT or WebVTT subtitles.",
            "items": {
              "type": "string",
              "enum": [
                "paragraphs",
                "srt",
                "vtt",
                "text",
                "segments"
              ],
              "enumTitles": [
                "Readable paragraphs",
                "SRT subtitles",
                "WebVTT subtitles",
                "Plain text (always included)",
                "Timestamped segments (see the option above)"
              ]
            },
            "default": []
          },
          "includeMetadata": {
            "title": "Include publish date and likes",
            "type": "boolean",
            "description": "Title, channel, duration, views and description are always included. This adds the publish date and like count (one more request per video).",
            "default": true
          },
          "searchCountry": {
            "title": "Search country",
            "type": "string",
            "description": "Two-letter country code used for search results, e.g. US, FR, BR.",
            "default": "US"
          },
          "maxConcurrency": {
            "title": "Parallel videos",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many videos are fetched at the same time.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Included in the price. YouTube is reached through Apify datacenter proxies; residential proxies are only a limited automatic fallback (choosing residential here does not change that). Custom proxy URLs are used as given.",
            "default": {
              "useApifyProxy": true
            }
          },
          "autoResidentialFallback": {
            "title": "Residential fallback",
            "type": "boolean",
            "description": "When YouTube blocks a video on datacenter IPs, retry it once through a residential proxy (included in the price).",
            "default": true
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}