YouTube API

YouTube Search hashtag API

Search YouTube videos by hashtag with cursor pagination (title, channel, views, length, publish time).

$1.20/1k req, pay per request, no subscription.

What the API returnedvideos[0]
{
"id": "dN1sTv7QkXo",
"url": "https://www.youtube.com/watch?v=dN1sTv7QkXo",
"title": "My dog reacts to the vacuum cleaner #funny",
"channelTitle": "Pancake the Corgi",
"views": 4820000,
"lengthText": "0:42",
"publishedTime": "3 days ago",
"image": "https://i.ytimg.com/vi/dN1sTv7QkXo/hqdefault.jpg",
... 5 more fields
}
Uptime
100.00%
30d · 122 calls
Requests
125
30d · weekly, last 12 wks
Response
1.5s
median · 30d

Pricing

YouTube Search hashtag API pricing

You pay
$12.00
$1.20/1k req, only for what you use. No monthly plan.
Your first 83 requests are free with the $0.10 starting balance.

Try it

Get YouTube search hashtag in one request

Open in
Get a free key
Sample response
Free runs return only the first 3 results. Fund a key to get the full response.

This sample shows 17 of 18 fields. See every field

{
  "found": true,
  "data": {
    "nextCursor": "EqQCCkYaGkNva1JXVzXQ0MDA1UN0aWNraGFzaHRhZw",
    "videos": [
      {
        "id": "dN1sTv7QkXo",
        "url": "https://www.youtube.com/watch?v=dN1sTv7QkXo",
        "title": "My dog reacts to the vacuum cleaner #funny",
        "channelTitle": "Pancake the Corgi",
        "views": 4820000,
        "lengthText": "0:42",
        "publishedTime": "3 days ago",
        "image": "https://i.ytimg.com/vi/dN1sTv7QkXo/hqdefault.jpg",
        "createdUtc": 1758758400,
        "authorId": "UC3fKq1n9pRxYm2oLwVzT8Cg",
        "authorHandle": "pancakethecorgi",
        "authorAvatarUrl": "https://yt3.ggpht.com/pancake-corgi-avatar.jpg",
        "durationSeconds": 42
      },
      {
        "id": "eO2uUw8RlYp",
        "url": "https://www.youtube.com/watch?v=eO2uUw8RlYp",
        "title": "Trying to explain crypto to my grandma #funny #comedy",
        "channelTitle": "Marcus Bellweather",
        "views": 1230000,
        "lengthText": "3:15",
        "publishedTime": "1 week ago",
        "image": "https://i.ytimg.com/vi/eO2uUw8RlYp/hqdefault.jpg",
        "createdUtc": 1758326400,
        "authorId": "UC7pRq2s0mXyLn3aQwYbT4Ef",
        "authorHandle": "marcusbellweather",
        "authorAvatarUrl": "https://yt3.ggpht.com/marcus-bellweather-avatar.jpg",
        "durationSeconds": 195
      },
      {
        "id": "fP3vVx9SmZq",
        "url": "https://www.youtube.com/watch?v=fP3vVx9SmZq",
        "title": "Office prank fails compilation #funny",
        "channelTitle": "Blooper Reel Weekly",
        "views": 892000,
        "lengthText": "8:04",
        "publishedTime": "2 weeks ago",
        "image": "https://i.ytimg.com/vi/fP3vVx9SmZq/hqdefault.jpg",
        "createdUtc": 1757721600,
        "authorId": "UC5oNp8q1rXwKm0bRzUcV2Gh",
        "authorHandle": "blooperreelweekly",
        "authorAvatarUrl": "https://yt3.ggpht.com/blooper-reel-avatar.jpg",
        "durationSeconds": 484
      }
    ]
  }
}

Full parameter and response reference - every field, type, and example for this endpoint.

Reference

One request, one response shape.

Every field you send and every field you get back, each with a real example.

Last verified 2026-10-31 · uptime and latency measured over 30d

Request body

JSON, posted to this endpoint.

  • hashtagstring

    funny

    Hashtag to search for (without the leading #).

  • cursorstring

    Continuation token from a previous response for pagination.

  • typeenum

    Content filter. Only "all" is served: no source we buy returns a Shorts row with the channel and publish time this endpoint requires.

You send. A small JSON body. The values shown are examples to replace with your own.

Response

JSON, one example value per field.

datadata
  • nextCursorstring

    EqQCCkYaGkNva1JXVzXQ0MDA1UN0aWNraGFzaHRhZw

    Opaque cursor for the next page of videos, or null when this lane has no more. Pass it back as cursor to continue.

each videodata.videos[]

Populated whenever the provider has data for the entity.

  • authorAvatarUrlstring

    https://yt3.ggpht.com/pancake-corgi-avatar.jpg

    URL of the publishing channel's avatar image.

  • authorHandlestring

    pancakethecorgi

    The publishing channel's @handle, without the leading @.

  • authorIdstring

    UC3fKq1n9pRxYm2oLwVzT8Cg

    YouTube channel ID of the publishing channel.

  • channelTitlestring

    Pancake the Corgi

    Populated whenever the provider has data for the entity.

  • createdUtcnumber

    1758758400

    UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.

  • durationSecondsinteger

    42

    Length of the video in seconds.

  • idstring

    dN1sTv7QkXo

    Populated whenever the provider has data for the entity.

  • imagestring

    https://i.ytimg.com/vi/dN1sTv7QkXo/hqdefault.jpg

    URL of the video thumbnail image, tracking query parameters stripped.

  • lengthTextstring

    0:42

  • publishedTimestring

    3 days ago

    Populated whenever the provider has data for the entity.

  • titlestring

    My dog reacts to the vacuum cleaner #funny

    Populated whenever the provider has data for the entity.

  • urlstring

    https://www.youtube.com/watch?v=dN1sTv7QkXo

    Populated whenever the provider has data for the entity.

  • viewsinteger

    4820000

top level
  • foundboolean

    true

  • reason"not_found"

    Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.

You get back. Named, typed fields in the same shape whichever source answers.

FAQ

About the YouTube Search hashtag API

The AnyAPI YouTube Search hashtag API returns YouTube search hashtag data as normalized JSON from one POST call to /v1/run/youtube.search_hashtag. Search YouTube videos by hashtag with cursor pagination (title, channel, views, length, publish time). AnyAPI returns one normalized schema whichever source serves it. It costs from $1.20 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 100.0% of YouTube search hashtag calls through AnyAPI succeeded, with a median response time of 1.5 seconds across 122 measured calls.

It costs from $1.20 per 1,000 requests, in US dollars with no subscription and no monthly minimum. You fund one USD wallet and each call draws it down. Some failed wallet-funded requests incur processing charges that we pass through at cost, with no markup; the error response shows the amount charged.

Search YouTube videos by hashtag with cursor pagination (title, channel, views, length, publish time). The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.

Over the last 30 days, 100.0% of YouTube search hashtag calls through AnyAPI succeeded, with a median response time of 1.5 seconds across 122 measured calls. These are AnyAPI's own measurements of traffic through the gateway, recomputed continuously, not a published service-level target.

Yes. A new AnyAPI account starts with $0.10 of free balance and no card required, which covers 83 YouTube Search hashtag calls at $0.0012 each.

Send a POST request to https://api.getanyapi.com/v1/run/youtube.search_hashtag with your AnyAPI key in an "Authorization: Bearer" header and the input as a JSON body. The same key and the same wallet work on every AnyAPI endpoint.

No. You add US dollars to one prepaid AnyAPI balance and each request draws it down. There is no monthly plan and no minimum, and the same balance pays for every AnyAPI endpoint.

Yes. Install @getanyapi/sdk from npm for TypeScript or getanyapi from pip for Python. Both call every AnyAPI endpoint with the same key, and any HTTP client works too.

Yes. An agent can connect to the AnyAPI MCP server at https://api.getanyapi.com/mcp, or create its own free-trial key with one unauthenticated POST to https://api.getanyapi.com/agent/signup and call this endpoint over HTTP.