YouTube Shorts API and MCP — Views, Likes & Hashtags per Short
Send a YouTube channel handle or URL and this source returns its shorts as data: title, description, hashtags, views, likes, comment count, duration and publish date — each with the channel's subscribers, total videos and total views attached.
- You send
- A YouTube channel handle or URL
- You get back
- Shorts with title, views, likes, comments, hashtags and date
- Coverage
- Shorts on public YouTube channels.
- Price
- 2 points per returned short, up to 1,000 per request — $2 per 1,000
- Billed per short actually returned, capped by max_items. A channel with no shorts costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| Browsing the Shorts tab | Open the channel and note the numbers | Free, and slow | No consistent comparison across channels |
| The YouTube Data API | A Google Cloud project, API key and quota | Free within a daily quota | No dedicated way to list a channel's shorts |
| NeuralVerge | One request per channel | $2 per 1,000, misses not billed | Public stats only — no watch time or swipe-away rate |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
total_items | number | How many videos came back. |
items[].id | string | YouTube's video ID. |
items[].url | string | Direct link to the video. |
items[].type | string | video, shorts or stream. |
items[].title | string | Video title. |
items[].description | string | Full description text. |
items[].description_links | array | Links in the description, resolved to their real targets. |
items[].hashtags | array | Hashtags on the video. |
items[].date | string | When the video was published (ISO 8601). |
items[].duration | string | Length as HH:MM:SS. |
items[].view_count | number | Views at read time. |
items[].likes | number | Likes at read time. |
items[].comments_count | number | Comment count. |
items[].comments_turned_off | boolean | Whether comments are disabled. |
items[].is_paid_content | boolean | Whether the video declares a paid promotion. |
items[].subtitles | array | Subtitle tracks, when download_subtitles is on. |
items[].channel | object | The channel: name, handle, subscribers, total videos, total views, description, links, joined date, verified. |
Example response
A real response, as returned.
{
"session_id": "2ac37171-dd30-431b-9a14-00e7e9c38c3a",
"kind": "youtube_shorts",
"channel": "https://www.youtube.com/@NASA",
"max_items": 1,
"partial": false,
"machine": {
"total_items": 1,
"items": [
{
"id": "-62C9R_41Sc",
"url": "https://www.youtube.com/shorts/-62C9R_41Sc",
"type": "shorts",
"title": "From the Moon to the 50-Yard Line",
"description": "From the Moon to the 50-yard line. Six months ago, NASA astronaut Christina Koch flew Philadelphia Eagles Super Bowl confetti around the Moon on the Artemis II mission. Yesterday, in a full circle moment, she served as honorary captain at an Eagles game, bringing a little Moon Joy to the field. #ArtemisII #FlyEaglesFly #MoonJoy",
"hashtags": ["#ArtemisII", "#FlyEaglesFly", "#MoonJoy"],
"date": "2026-10-05T23:21:46.000Z",
"duration": "00:00:39",
"view_count": 50785,
"likes": 970,
"comments_count": 0,
"comments_turned_off": false,
"is_paid_content": false,
"channel": {
"id": "UCLA_DiR1FfKNvjuUpBHmylQ",
"name": "NASA",
"username": "NASA",
"subscribers": 15100000,
"total_videos": 6194,
"total_views": 1132208768,
"joined_date": "Jun 3, 2008",
"is_verified": true
},
"found_on_url": "https://www.youtube.com/@NASA/shorts"
}
],
"errors": []
},
"total_points": 2
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
This endpoint is synchronous: the call blocks until the lookup completes and returns the records directly. If a lookup hits its time budget before finishing, the response comes back with partial: true and whatever it collected so far — re-run with smaller limits for a complete result. channel is required and accepts a handle (@NASA) or channel URL. Optional: max_items (1-1,000, default 20), sort_by (POPULAR or OLDEST; newest first when left out).
curl -X POST https://api.neuralverge.ai/functions/v1/run-youtube-shorts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "channel": "@NASA", "max_items": 20, "sort_by": "POPULAR" }'What teams use it for
Where this field shows up in an actual workflow.
Compare views per short across competitors or creators.
See which hashtags a channel uses on the shorts that travel furthest.
Pick partners by how their shorts perform, not only by subscribers.
Put a brand's shorts next to its Instagram reels.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Shorts on public YouTube channels.
Read at request time — views are a snapshot at that moment.
This source returns what a channel published publicly, stamped with the URL it was read from and a session id you can trace.
- —No subtitles here — use YouTube channel with download_subtitles when you need transcripts.
- —Watch time and audience data are private to the channel owner.
- —Like counts can be rounded the way YouTube displays them.
Questions, answered
Yes — every Data Source endpoint, including this one, is synchronous: the lookup runs inside the request and the result comes back in the same response, no polling. If a lookup hits its time budget before finishing, the response comes back with partial: true and whatever records it collected so far — re-run with smaller limits to get a complete result instead of a partial one.
Related sources
Try youtube shorts on your own data
One request format across every source in the catalog.