YouTube Channel API and MCP — Videos, Views, Subscribers & Subtitles
Send a YouTube channel handle or URL, a playlist URL or a single video URL and this source returns the videos as data: title, description and its links, views, likes, comment count, duration, hashtags, publish date and paid-promotion flag — each with the channel's subscribers, total videos, total views and links attached.
- You send
- A channel handle or URL, playlist URL or video URL
- You get back
- Videos, shorts and streams with stats, plus the channel's totals
- Coverage
- Public YouTube channels, playlists and videos.
- Price
- 5 points per returned video, up to 1,000 of each type per request — $5 per 1,000
- Billed per video, short or stream actually returned, capped by your limits. A channel with nothing to return 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 channel | Open the Videos tab and note the numbers | Free, and slow | No subtitles, no consistent numbers across channels |
| The YouTube Data API | A Google Cloud project, API key and quota management | Free within a daily quota | Workable, but quota runs out fast across many channels, and captions for videos you don't own aren't available |
| NeuralVerge | One request per channel | $5 per 1,000, misses not billed | Public stats only — watch time and audience data stay with the channel owner |
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": "041d22cf-688c-4be9-bce3-4488d7017c3c",
"kind": "youtube_channel",
"url": "https://www.youtube.com/@NASA",
"max_results": 1,
"max_results_shorts": 0,
"max_results_streams": 0,
"download_subtitles": false,
"partial": false,
"machine": {
"total_items": 1,
"items": [
{
"id": "Zezt6EsG9WE",
"url": "https://www.youtube.com/watch?v=Zezt6EsG9WE",
"type": "video",
"title": "NASA Moon Base: Rovers and Lunar Terrain Vehicles (October 2026 Update)",
"description": "There's a lot of ground to cover when you're building a Moon Base. From robotic rovers exploring the rugged lunar landscape to lunar terrain vehicles carrying Artemis astronauts across the surface, mobility will play a crucial role in establishing an enduring human presence on the Moon. …",
"description_links": [
{ "text": "https://www.nasa.gov/missions/moon-ba...", "url": "https://www.nasa.gov/missions/moon-base/nasa-provides-progress-update-on-moon-base-rovers/" },
{ "text": "https://www.nasa.gov/moonbase/", "url": "https://www.nasa.gov/moonbase/" }
],
"hashtags": [],
"date": "2026-10-20T15:02:15.000Z",
"duration": "00:09:17",
"view_count": 897152,
"likes": 10000,
"comments_count": 0,
"comments_turned_off": false,
"is_members_only": false,
"is_paid_content": false,
"subtitles": [],
"channel": {
"id": "UCLA_DiR1FfKNvjuUpBHmylQ",
"name": "NASA",
"username": "NASA",
"subscribers": 15100000,
"total_videos": 6194,
"total_views": 1132208768,
"description_links": [
{ "text": "nasa.gov", "url": "https://www.nasa.gov" },
{ "text": "Instagram", "url": "https://www.instagram.com/nasa" }
],
"joined_date": "Jun 3, 2008",
"is_verified": true
},
"found_on_url": "https://www.youtube.com/@NASA/videos"
}
],
"errors": []
},
"total_points": 5
}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. url is required. Optional: max_results (videos, 0-1,000, default 10), max_results_shorts and max_results_streams (0-1,000, default 0), sort_videos_by (POPULAR or OLDEST), download_subtitles (boolean), subtitles_language (any, de, es, fr, it, ja, ko, nl, pt, ru), subtitles_format (vtt, xml or plaintext).
curl -X POST https://api.neuralverge.ai/functions/v1/run-youtube-channel \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "@NASA", "max_results": 10, "sort_videos_by": "POPULAR", "download_subtitles": true, "subtitles_format": "plaintext" }'What teams use it for
Where this field shows up in an actual workflow.
See what a competitor publishes on YouTube and which videos get watched.
Pull subtitles from webinars and demos to search and quote what was said.
Check subscribers, upload cadence and views per video before a sponsorship.
Read a prospect's recent videos to see what they're talking about.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Public YouTube channels, playlists and videos.
Read at request time — view and like counts 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.
- —Subtitles only come back when the video has them; videos without captions return an empty list.
- —Like counts can be rounded the way YouTube displays them (the sample shows 10000).
- —Watch time, retention and audience demographics are private to the channel owner.
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 channel on your own data
One request format across every source in the catalog.