YouTube API endpoint

Retrieve YouTube videos by tag

Returns normalized videos from the public YouTube hashtag page for the supplied tag. Set `type=shorts` to use the Shorts tab, or pass `continuation_token` from a previous response to fetch the next page.

GETapiKey3 credits/requestyoutube.tagResponseDoc/youtube/tag/{tag}

Parameters

NameInTypeRequiredEnumExampleDescription
tagpathstringYesTag to filter videos
typequerystringNoall, shortsResult tab to load
continuation_tokenquerystringNoContinuation token for pagination, first page if empty
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: tag

Failure responses

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

Example response

{
  "code": 200,
  "msg": "OK",
  "data": {
    "videos": [
      {
        "id": "QpM5pr-jS9I",
        "title": "OpenAI Playground Tutorial for Beginners",
        "duration_seconds": 938,
        "published_at": "2023-07-18T15:31:09Z",
        "channel_title": "Jennifer Marie",
        "channel_id": "UC-ooPg34j8PK3osA4l-726Q",
        "views_count": 47545
      }
    ],
    "meta": {
      "VideosCount": 123456,
      "ChannelsCount": 1200
    },
    "continuation_token": "NEXT_TOKEN"
  }
}

Request schema

No body schema

Response schema

#/definitions/youtube.tagResponseDoc

FieldTypeRequiredEnumBoundsExampleDescription
codeintegerNo200
datayoutube.TagRespNo
data.continuation_tokenstringNo
data.metayoutube.tagMetaNo
data.meta.channelsCountinteger · int64No
data.meta.videosCountinteger · int64No
data.videosarrayNo
data.videos[].channel_idstringNoUCXZCJLdBC09xxGZ6gcdrc6A
data.videos[].channel_titlestringNoOpenAI
data.videos[].comments_countintegerNo1400
data.videos[].descriptionstringNoOn the first episode of the OpenAI Podcast...
data.videos[].dislikes_countintegerNo0may be hidden
data.videos[].duration_secondsnumberNo2423length in seconds
data.videos[].idstringNoYbJOTdZBX1g
data.videos[].likes_countintegerNo11000
data.videos[].published_atstringNo2025-06-18T07:59:20-07:00
data.videos[].titlestringNoSam Altman on AGI, GPT-5, and what’s next — the OpenAI Podcast Ep. 1
data.videos[].views_countintegerNo460176
msgstringNoOK

Example request

curl -X GET "https://api.crawlora.net/api/v1/youtube/tag/%3Ctag%3E" -H "x-api-key: <api-key>"

TypeScript fetch

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