YouTube API endpoint

Retrieve playlist metadata and items

Returns playlist metadata, normalized video items, and an optional continuation token for pagination.

GETapiKey3 credits/requestyoutube.playlistResponseDoc/youtube/playlist/{id}

Parameters

NameInTypeRequiredEnumExampleDescription
idpathstringYesYouTube playlist ID or full playlist URL
continuation_tokenquerystringNoPagination token returned by a previous request
x-api-keyheaderstringYesAPI key required

Authentication

Send your scraping API key in the x-api-key header. Use the console API Keys page to rotate or select the active key.

Billing

Endpoint usage is metered in credits. The plan prices, included credits, limits, and overage rates below match the active backend billing configuration.

Credit cost
3 credits/request
Charged response
Successful 2xx responses
PlanPriceIncluded creditsDaily capRate limitOverage
Free$0/mo2,000500 daily credits5/minNo overage
Starter$9/mo20,0005,000 daily credits15/min$0.75/1,000 overage credits when enabled
Growth$29/mo100,00025,000 daily credits45/min$0.45/1,000 overage credits when enabled
Pro$79/mo400,000No daily cap120/min$0.30/1,000 overage credits
Business$199/mo1,200,000No daily cap300/min$0.20/1,000 overage credits
Enterprise$499/mo5,000,000No daily cap1,000/min$0.12/1,000 overage credits

Catalog quality warnings

  • missing example for required path param: id

Failure responses

StatusDescriptionSchema
400Missing or invalid parameters#/definitions/app.Response
429Rate limit exceeded#/definitions/app.Response
500Internal server error#/definitions/app.Response

Example response

{
  "code": 200,
  "msg": "OK",
  "data": {
    "playlist_id": "PL1234567890abcdef",
    "title": "OpenAI Podcast",
    "url": "https://www.youtube.com/playlist?list=PL1234567890abcdef",
    "channel_title": "OpenAI",
    "channel_id": "UCXZCJLdBC09xxGZ6gcdrc6A",
    "video_count": "12 videos",
    "items": [
      {
        "type": "video",
        "position": 1,
        "title": "Episode 1",
        "video_id": "abc123xyz89",
        "duration": "12:34"
      }
    ],
    "continuation_token": "NEXT_TOKEN"
  }
}

Request schema

No body schema

Response schema

#/definitions/youtube.playlistResponseDoc

FieldTypeRequiredEnumBoundsExampleDescription
codeintegerNo200
datayoutube.PlaylistResponseNo
data.channel_idstringNoUCXZCJLdBC09xxGZ6gcdrc6A
data.channel_titlestringNoOpenAI
data.continuation_tokenstringNoNEXT_TOKEN
data.itemsarrayNo
data.items[].badgesarrayNoHD,CC
data.items[].channel_idstringNoUCXZCJLdBC09xxGZ6gcdrc6A
data.items[].channel_thumbnailstringNohttps://yt3.ggpht.com/example=s68-c-k-c0x00ffffff-no-rj
data.items[].channel_titlestringNoOpenAI
data.items[].description_snippetstringNoA concise walkthrough of GPT features.
data.items[].durationstringNo12:34
data.items[].duration_secondsintegerNo754
data.items[].handlestringNo@OpenAI
data.items[].is_livebooleanNo
data.items[].is_shortbooleanNo
data.items[].is_verifiedbooleanNo
data.items[].playlist_idstringNoPL1234567890abcdef
data.items[].positionintegerNo1
data.items[].published_textstringNo2 days ago
data.items[].short_view_countstringNo123K views
data.items[].subscriber_countstringNo1.93M subscribers
data.items[].thumbnailstringNohttps://i.ytimg.com/vi/abc123/hq720.jpg
data.items[].titlestringNoChatGPT Explained
data.items[].typestringNovideo
data.items[].urlstringNohttps://www.youtube.com/watch?v=abc123
data.items[].video_countstringNo9 lessons
data.items[].video_idstringNoabc123xyz89
data.items[].view_countstringNo123,456 views
data.playlist_idstringNoPL1234567890abcdef
data.thumbnailstringNohttps://i.ytimg.com/vi/abc123xyz89/hqdefault.jpg
data.titlestringNoOpenAI Podcast
data.urlstringNohttps://www.youtube.com/playlist?list=PL1234567890abcdef
data.video_countstringNo12 videos
msgstringNoOK

Example request

curl -X GET "https://api.crawlora.net/api/v1/youtube/playlist/user-1" -H "x-api-key: <api-key>"

TypeScript fetch

const url = new URL("https://api.crawlora.net/api/v1/youtube/playlist/user-1");
const headers = new Headers();
headers.set("x-api-key", "<api-key>");
const response = await fetch(url, {
  method: "GET",
  headers,
});
const payload = await response.json();