How to scrape YouTube Channel Shorts with Node.js
A channel's Shorts, newest first, with views and likes. This tutorial gets it with a short Node.js program and the YouTube Channel Shorts API. Each successful call costs 1 credit; errors and not-found answers are free.
1. Get an API key
Sign in to get a key and 100 free credits, no card. Then put the key in an environment variable so it stays out of your code:
export SCRAPEIO_API_KEY="your_key_here"2. Set up Node.js
Node 18 or newer; fetch is built in3. Write the code
Save this as scrape.mjs.
const url = new URL("https://scrapeio.com/v1/youtube/channel/shorts");
url.searchParams.set("handle", "nike");
const headers = { "x-api-key": process.env.SCRAPEIO_API_KEY };
const items = [];
while (true) {
const res = await fetch(url, { headers });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { data } = await res.json();
items.push(...(data.items ?? []));
if (!data.has_more || !data.cursor || items.length >= 100) break;
url.searchParams.set("cursor", data.cursor);
}
console.log(items.length, "items");
console.log(items.slice(0, 3));The loop follows data.cursor until data.has_more is false, and stops at 100 items. Each page is one call, so it costs 1 credit.
4. Run it
node scrape.mjsThe response has the same envelope on every endpoint: success, cached, credits_used, credits_remaining and data. Shared fields such as handle, followers, plays, likes and created_at have the same names on every platform.
Parameters
| Name | Type | Description |
|---|---|---|
handle | string | Channel handle, e.g. @MrBeast. |
channelId | string | Channel id (UC...). Send this or handle. |
cursor | string | Cursor from the previous page's data.cursor. |
Errors and what you pay
| Status | Meaning | Charged |
|---|---|---|
200 | Success | Yes, unless cached |
400 | A parameter is missing or wrong | No |
401 | The key is missing or invalid | No |
402 | Not enough credits | No |
403 | The account or post is private | No |
404 | Not found on the platform | No |
429 | More than 300 requests a minute | No |
502 | Every source is down; retry shortly | No |
Same endpoint in other languages
Python · JavaScript · TypeScript · Go · Rust · Java · C# · PHP · Ruby · Kotlin · Swift · R
Prefer no code?
Connect the MCP server to Claude Code, Cursor or Codex and ask in plain English. The agent uses the youtube_channel_shorts tool for you.
100 free credits, no card. Credits never expire.
Get API keyMore YouTube tutorials in Node.js
- How to scrape YouTube Channel with Node.js
- How to scrape YouTube Channel Videos with Node.js
- How to scrape YouTube Video with Node.js
- How to scrape YouTube Comments with Node.js
- How to scrape YouTube Search with Node.js
- How to scrape YouTube Download with Node.js
- How to scrape YouTube Transcript with Node.js
- How to scrape YouTube Playlist with Node.js
- How to scrape YouTube Channel Playlists with Node.js
- How to scrape YouTube Channel Lives with Node.js
- How to scrape YouTube Comment Replies with Node.js
- How to scrape YouTube Search Typeahead with Node.js
- How to scrape YouTube Community Posts with Node.js
- How to scrape YouTube Community Post with Node.js
- How to scrape YouTube Channel Search with Node.js
- How to scrape YouTube Search Hashtag with Node.js
- How to scrape YouTube Shorts Trending with Node.js
- How to scrape YouTube Video Sponsors with Node.js