API Documentation
A REST API for YouTube transcripts, search, and metadata. Get an API key from your dashboard — 100 free credits, no card required.
Authentication
Pass your API key as a bearer token, or via x-api-key:
Authorization: Bearer sk_live_...
# or
x-api-key: sk_live_...Base URL
https://getyoutubetranscript.com/api/v1Credits & plans
| Plan | Price | Credits/mo | Top-up price | Rate limit |
|---|---|---|---|---|
| Free | $0 | 100 (one-time) | — | 60 req/min |
| Monthly | $5.00/mo | 1,000 | $2.50 / 1,000 | 200 req/min |
| Annual | $4.50/mo ($54/yr) | 1,000 | $1.50 / 1,000 | 300 req/min |
1 credit = 1 successful request. Failed requests are never charged. Top-up credits expire 30 days from purchase or at the end of your current billing period, whichever is later, and require an active subscription to spend.
Endpoints
/transcript1 creditGet the transcript for a YouTube video, with metadata (title, channel, thumbnail).
| Parameter | Required | Description |
|---|---|---|
v | Yes | Video ID or full YouTube URL |
language | No | Language code (default: en) |
Request
curl "https://getyoutubetranscript.com/api/v1/transcript?v=jNQXAC9IVRw" \
-H "Authorization: Bearer sk_live_..."Response
{
"success": true,
"data": {
"video_id": "jNQXAC9IVRw",
"language_code": "en",
"title": "Me at the zoo",
"author_name": "jawed",
"author_url": "https://www.youtube.com/channel/UC4Qob...",
"thumbnail_url": "https://...",
"transcript": "All right, so here we are...",
"word_count": 39
}
}/search1 credit / pageSearch YouTube videos with filters and pagination.
| Parameter | Required | Description |
|---|---|---|
q | Yes | Search query (min 2 characters) |
country | No | 2-letter country code (default: us) |
language | No | Language code (default: en) |
page_token | No | Previous response's pagination.next_page_token, to fetch the next page |
limit | No | Max results (default 20, max 50) |
Request
curl "https://getyoutubetranscript.com/api/v1/search?q=lofi+beats" \
-H "Authorization: Bearer sk_live_..."Response
{
"success": true,
"data": {
"query": "lofi beats",
"video_results": [ { "title": "...", "videoId": "...", "channel": { "name": "..." } } ],
"pagination": { "next_page_token": "..." }
}
}/resolveFreeResolve a channel handle, URL, or username to its real channel ID. A syntactic input (already a channel ID or URL containing one) resolves instantly with no network call; a bare handle triggers one real lookup.
| Parameter | Required | Description |
|---|---|---|
handle | Yes | Channel ID, URL, or @handle |
Request
curl "https://getyoutubetranscript.com/api/v1/resolve?handle=@mkbhd" \
-H "Authorization: Bearer sk_live_..."Response
{
"success": true,
"data": {
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"title": "Marques Brownlee",
"handle": "http://www.youtube.com/@mkbhd",
"resolved_via": "scrape"
}
}/playlist1 credit / pageGet videos in a playlist. Currently returns the first page only - has_more tells you if there are more videos, but fetching additional pages isn't supported yet.
| Parameter | Required | Description |
|---|---|---|
list | Yes | Playlist ID or URL |
Request
curl "https://getyoutubetranscript.com/api/v1/playlist?list=PLxxx" \
-H "Authorization: Bearer sk_live_..."Response
{
"success": true,
"data": {
"playlist_id": "PLxxx",
"title": "...",
"videos": [ { "position": 1, "id": "...", "title": "...", "channel": { "name": "..." } } ],
"has_more": true
}
}Errors
Errors return a JSON body with a stable code field to branch on, in addition to the HTTP status:
| Status | Code | Meaning |
|---|---|---|
| 400 | BAD_REQUEST | Missing or invalid parameter |
| 401 | MISSING_API_KEY / INVALID_API_KEY | No key provided, or key is invalid/revoked |
| 402 | PAYMENT_REQUIRED | Out of credits - buy a top-up or upgrade |
| 404 | VIDEO_UNAVAILABLE / TRANSCRIPT_NOT_FOUND | Video or resource not found |
| 429 | RATE_LIMITED | Too many requests for your plan tier |
| 503 | UPSTREAM_UNAVAILABLE | Temporary upstream issue - safe to retry |
Coming soon
Search inside a channel, list all videos in a channel, and full playlist pagination are in development. Track new uploads via RSS is temporarily unavailable due to an unrelated issue on YouTube's side.
Using this API with an AI tool
Prefer letting Claude (or another AI coding tool) call this API for you instead of hand-writing requests? Download the YouTube Transcript skill - a ready-made Claude Skill that teaches it how to fetch transcripts, search, and more.