Youtube Shorts

io.github.johnisanerdPublished by GitHub account johnisanerdv1.1.0Updated Nov 7, 2026

YouTube Shorts from a channel with views, likes and hashtags. Paid, on Apify's hosted MCP.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingData & AnalyticsMedia & Design

Overview

AI-generated overview

Scrapes public YouTube Shorts data for any channel — views, likes, comments, publish dates, hashtags and tags — as structured rows via Apify's hosted MCP.

What you can do
  • Collect Shorts from channels by handle, URL or channel id, or from direct Short links, sorted newest, most popular or oldest, with an optional date filter.
  • Return per-Short metrics: view and like counts, comment counts, exact UTC publish timestamp, duration, hashtags, creator tags and description links.
  • Return channel context: name, username, id, subscriber count, total views, total videos, join date and About links.
  • Deliver results as JSON, CSV or Excel rows suitable for spreadsheets, databases or dashboards, with error rows for unreadable channels or links.
When to use it
Use it for competitor and creator research on channels you do not own, such as comparing engagement across channels, tallying hashtags used by top creators, finding a Short's exact upload time, or building scheduled view-tracking snapshots.
Requirements
A remote MCP endpoint on Apify's hosted server, reached through an MCP client. A paid Apify account is required, authenticated by OAuth or an Apify API token sent as a bearer Authorization header. The README's Python path additionally needs Python 3.11+ and uv.
Before you install
Usage is paid per Short returned, with an extra charge when the date filter is used, so large runs cost money. It requires an Apify account and OAuth or an Apify API token, which is a billable credential. It reads public YouTube data only; owner-only metrics such as watch time, retention and revenue are not available, and it is not affiliated with YouTube or Google.

Installation

In SourceWeft

  1. Open Youtube Shorts in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.johnisanerd%2Fyoutube-shorts/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "youtube-shorts": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=johnvc/youtube-shorts-api"
    }
  }
}

README

📱 YouTube Shorts API: YouTube Shorts analytics for any channel, from Python or MCP

Pull YouTube Shorts analytics for channels you do not own: views, likes, comment counts, exact publish timestamps, durations, hashtags and the creator's tags for every Short, plus the channel's subscribers, total views and About links. This repo shows how to call the YouTube Shorts API from Python with uv, and how to add it as a tool in Claude, Cursor and ChatGPT through MCP.

Actor: YouTube Shorts API on Apify Store · Input schema

Give it one or more channels (a handle like siliconimist, a channel URL or a UC... id) and it reads each channel's Shorts tab, newest, most popular or oldest first. Or paste direct Short links. Every row is structured JSON you can load into a spreadsheet, a database or an AI agent, with no browser, no YouTube API quota and no login.

Video Walkthrough

[Watch the walkthrough]

Text walkthrough

YouTube Studio only shows Shorts analytics to a channel's owner, but the numbers that matter for competitor and creator research are public on every Short. The YouTube Shorts API reads them in bulk. Put a channel in channels, pick NEWEST, POPULAR or OLDEST in sortChannelShortsBy, and set maxResultsShorts (up to 500 per channel). Each row comes back with viewCount, likes, commentsCount, date as a full ISO 8601 UTC timestamp, duration, hashtags and tags, plus the channel block (channelName, numberOfSubscribers, channelTotalViews, channelDescriptionLinks). A typical use: read the 50 most popular Shorts from three channels in your niche and count which hashtags they carry, which is what the hashtags recipe below does. Add oldestPostDate: "30 days" and a schedule, and the same input becomes a weekly YouTube Shorts analytics snapshot.

Quick Start

You need Python 3.11+ and uv, plus a free Apify account for the API key: get your free API key.

bash
curl -LsSf https://astral.sh/uv/install.sh | sh   # if you do not have uv yetgit clone https://github.com/johnisanerd/Apify-YouTube-Shorts-API.gitcd Apify-YouTube-Shorts-APIuv synccp .env.example .env          # paste your Apify API token into .envuv run python youtube-shorts-api-example.py

The default run reads the three newest Shorts from one channel, so the first run costs a fraction of a cent. The recipes run with --example:

bash
uv run python youtube-shorts-api-example.py --example hashtags      # hashtags the top channels useuv run python youtube-shorts-api-example.py --example upload-date   # exact publish time by linkuv run python youtube-shorts-api-example.py --example track-views   # dated snapshot for view tracking

Sample output of the default run:

Global Trends in Semiconductors, from an Africa Vantage #Shorts #Semiconductors  https://www.youtube.com/shorts/-dhZ09km9Yg  published 2026-09-27T22:26:20.000Z  duration 00:00:20  views 12  likes 0  comments 0  engagement 0.00%  hashtags ['#Shorts', '#Semiconductors', '#ChipDesign', '#Africa', ...]  tags ['Africa technology', 'ChipMango', 'chip design', 'semiconductors', ...]  channel The Siliconimist (119 subscribers)

Why use this YouTube Shorts API?

Analytics for channels you do not own. Studio is owner-only. This API returns the public numbers for any channel: views, likes, comments and exact publish times per Short, and subscribers and total views per channel.

Only Shorts, no guesswork. The official YouTube Data API has no field that says a video is a Short, so people probe redirects or guess by duration. This API reads the channel's Shorts tab itself, so every row is a Short.

Exact numbers where YouTube gives them. viewCount and likes are exact. The publish date is a full timestamp, not "3 weeks ago".

Hashtags and tags. hashtags lists the # words from the title and description; tags lists the keywords the creator typed into YouTube Studio, which YouTube no longer shows on the page.

Cheap and quota-free. Pay per Short returned; error rows are never charged. No Google project, no API key from Google, no daily quota.

Features

FeatureDetail
Channel inputHandle (siliconimist, @MrBeast), channel URL, or UC... id; up to 20 channels per run
Direct linksstartUrls takes /shorts/<id>, watch?v=<id> or youtu.be/<id>; up to 200 per run
SortNEWEST, POPULAR or OLDEST, the three buttons on a channel's Shorts tab
Date filteroldestPostDate takes 2025-06-03 or a relative span like 7 days, 2 weeks, 3 months
VolumeUp to 500 Shorts per channel, 1,000 per run
Output43 fields per Short, same field names as other Shorts scrapers on Apify plus tags; JSON, CSV or Excel
MCPOne URL adds it as a tool to Claude, Cursor, ChatGPT and any MCP client

Recipes

The three --example recipes in youtube-shorts-api-example.py cover the most searched use cases. Each keeps its inputs small; raise maxResultsShorts once you know your budget.

  • Find the hashtags top YouTube Shorts channels really use (--example hashtags): reads the most popular Shorts from MrBeast, zachking and DanielLaBelle with sortChannelShortsBy: "POPULAR" and tallies the hashtags field with combined views. The best hashtags for YouTube Shorts in your niche are the ones the top channels already use; swap in your own channel list.
  • Find the exact upload date of any YouTube Short (--example upload-date): pastes two links into startUrls and prints each Short's date, the full publish timestamp the Shorts player hides.
  • Track YouTube Shorts views and likes on a schedule (--example track-views): reads every Short siliconimist and MrBeast posted in the last 30 days (oldestPostDate: "30 days") and saves a dated JSON snapshot of viewCount, likes and commentsCount. Run it daily and diff the files.

Put it on a schedule. Save any of these inputs as a task in the Apify Console and add a daily or weekly schedule. Each run lands in a new dataset you can send to Google Sheets, a webhook or a database, which is all a YouTube Shorts analytics dashboard needs.

Usage Examples

Basic: the newest Shorts from one channel.

python
run_input = {"channels": ["siliconimist"], "maxResultsShorts": 3, "sortChannelShortsBy": "NEWEST"}

Advanced: the most popular Shorts from several channels, plus two direct links.

python
run_input = {    "channels": ["MrBeast", "https://www.youtube.com/@nasa"],    "maxResultsShorts": 50,    "sortChannelShortsBy": "POPULAR",    "startUrls": [{"url": "https://www.youtube.com/shorts/gnuiMgTzKMQ"}],}

Everything a channel posted in the last two weeks (forces NEWEST order):

python
run_input = {"channels": ["@nasa"], "maxResultsShorts": 200, "oldestPostDate": "14 days"}

Input Parameters

ParameterTypeRequiredDefaultDescription
channelsarray of stringsone of channels or startUrlsnoneChannel handles with or without @, channel URLs, or channel ids (UC...). Up to 20 per run.
startUrlsarray of {url}one of channels or startUrlsnoneDirect Short or video links (/shorts/<id>, watch?v=<id>, youtu.be/<id>). Up to 200 per run. The date filter does not apply to these.
maxResultsShortsinteger, 1 to 500no10Shorts returned per channel. Runs stop at 1,000 Shorts in total.
sortChannelShortsByNEWEST, POPULAR or OLDESTnoNEWESTThe channel page's three sort buttons. Forced to NEWEST when oldestPostDate is set.
oldestPostDatestringnononeOnly Shorts published on or after this date: 2025-06-03, an ISO timestamp, or 7 days, 2 weeks, 3 months. Adds a small date-filter charge per returned Short.

Output Format

One row per Short (a real row from the default run; aboutChannelInfo, which repeats the channel fields, is left out here):

json
{  "title": "Global Trends in Semiconductors, from an Africa Vantage #Shorts #Semiconductors",  "type": "shorts",  "id": "-dhZ09km9Yg",  "url": "https://www.youtube.com/shorts/-dhZ09km9Yg",  "thumbnailUrl": "https://i.ytimg.com/vi/-dhZ09km9Yg/sd2.jpg?...",  "viewCount": 12,  "date": "2026-09-27T22:26:20.000Z",  "likes": 0,  "duration": "00:00:20",  "commentsCount": 0,  "commentsTurnedOff": false,  "text": "Full episode and write-up: https://www.siliconimist.com/p/designing-semiconductors-in-sub-saharan-africa ...",  "descriptionLinks": [    { "url": "https://www.siliconimist.com/p/designing-semiconductors-in-sub-saharan-africa", "text": "https://www.siliconimist.com/p/designing-semiconductors-in-sub-saharan-africa" }  ],  "hashtags": ["#Shorts", "#Semiconductors", "#ChipDesign", "#Africa", "#SubSaharanAfrica", "#TechTalent", "#ChipMango", "#Startups", "#TrustNetworks"],  "tags": ["Africa technology", "ChipMango", "Ola Fadiran", "Shorts", "The Siliconimist", "chip design", "geopolitics", "global semiconductor trends", "semiconductors", "sub-Saharan Africa"],  "isAgeRestricted": false,  "isMembersOnly": false,  "location": null,  "collaborators": [],  "channelName": "The Siliconimist",  "channelUsername": "siliconimist",  "channelId": "UChi2KMCOtX353Y5TDw6ZMrg",  "channelUrl": "https://www.youtube.com/channel/UChi2KMCOtX353Y5TDw6ZMrg",  "channelJoinedDate": "Jan 15, 2026",  "channelLocation": "United States",  "channelDescriptionLinks": [    { "text": "Spotify", "url": "https://open.spotify.com/show/0ZMWpB9nZxzCVCtJlErlb7" },    { "text": "Substack", "url": "https://www.siliconimist.com/" },    { "text": "LinkedIn", "url": "https://www.linkedin.com/company/siliconimist/" }  ],  "channelTotalVideos": 195,  "channelTotalViews": 31309,  "numberOfSubscribers": 119,  "isChannelVerified": false,  "inputChannelUrl": "https://www.youtube.com/@siliconimist",  "input": "siliconimist",  "fromYTUrl": "https://www.youtube.com/@siliconimist/shorts",  "fromChannelListPage": "shorts",  "order": 0,  "translatedTitle": null,  "translatedText": null,  "subtitles": null,  "isMonetized": null}

A channel or link that cannot be read returns a small error row instead, {url, input, error, note}, with a code such as CHANNEL_DOES_NOT_EXIST, CHANNEL_HAS_NO_SHORTS, DATE_FILTER_TOO_STRICT or VIDEO_UNAVAILABLE. The example script prints these and skips them. Error rows are never charged.

People also search for

Is this a YouTube Shorts scraper?

It does the job people search for as a YouTube Shorts scraper: it reads the public Shorts tab of any channel and returns every Short as structured data. It is packaged as an API, so you call it from code, a schedule or an MCP client instead of running a browser yourself.

How do I get YouTube Shorts analytics for a channel I do not own?

Run the API on the channel handle. Views, likes, comment counts, publish dates, durations and hashtags are public on every Short, and subscriber and total-view counts are public on the channel page; each row carries all of them. Studio-only metrics such as watch time, retention and revenue are private to the owner and not returned.

What are the best hashtags for YouTube Shorts?

Measure them instead of guessing: read the most popular Shorts from five to ten channels in your niche (sortChannelShortsBy: "POPULAR") and count the hashtags field, as the hashtags recipe does. Many of the largest channels use few or none, which is itself useful to know.

Can I extract the tags from a YouTube Short?

Yes. tags returns the keywords the creator entered in YouTube Studio, which the watch page no longer displays, next to hashtags, the title and the description. An empty list means the creator set no tags.

How do I see the upload date of a YouTube Short?

The Shorts player hides it. Put the link in startUrls and read date, the full publish timestamp in UTC.

What is a good engagement rate for YouTube Shorts?

Compute it per Short as likes plus comments over views; the default example prints it. Compare channels of similar size, since small channels often show higher rates on low view counts.

How do I detect which of a channel's videos are Shorts via an API?

Read the channel's Shorts tab, which is what this API does. Every row it returns is a Short, so there is no duration cutoff or redirect check to maintain.

Can I build a YouTube Shorts analytics dashboard with it?

Yes. Schedule a weekly run with oldestPostDate set, export the dataset as CSV or connect the Google Sheets integration, and point Looker Studio or Sheets charts at it.

How do I get YouTube Shorts transcripts?

This API returns metadata and metrics, not captions. The YouTube Transcripts API takes the same Short links and returns the spoken text.

Use from n8n

The YouTube Shorts API is also an n8n community node, n8n-nodes-youtube-shorts-api. In n8n: Settings → Community Nodes → Install, enter n8n-nodes-youtube-shorts-api, add your Apify API token as an Apify API credential, then use the YouTube Shorts node in any workflow (for example a weekly Schedule Trigger into Google Sheets for a YouTube Shorts analytics dashboard). It also works as an AI Agent tool. Self-hosted n8n only.

Install in Claude Cowork Desktop

[Install in Claude Cowork Desktop]

Cowork is the desktop app's automation mode. To give it the YouTube Shorts API as a tool, add the Apify MCP server as a connector.

  1. Open the Claude desktop app and go to Settings → Connectors (or Settings → Developer → Edit Config to edit claude_desktop_config.json directly).
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Add the Apify MCP server, preloaded with only this Actor:
json
{  "mcpServers": {    "apify": {      "command": "npx",      "args": [        "-y",        "mcp-remote",        "https://mcp.apify.com/?tools=actors,docs,johnvc/youtube-shorts-api"      ]    }  }}
  1. Restart the app. When Cowork first calls the tool, complete the OAuth prompt in your browser, or add your Apify API token in the connector settings to skip OAuth.
  2. In a Cowork chat, confirm the tool is available and ask it to run the YouTube Shorts API.

Download the desktop app and start a free trial: https://claude.ai/referral/uIlpa7nPLg More help: https://docs.apify.com/platform/integrations/claude-desktop

Install in Claude Code

[Install in Claude Code]

Claude Code is the command-line tool. Add the Actor's MCP server with one command:

bash
claude mcp add --transport http apify \  "https://mcp.apify.com/?tools=actors,docs,johnvc/youtube-shorts-api"

To use a token instead of browser OAuth:

bash
claude mcp add --transport http apify \  "https://mcp.apify.com/?tools=actors,docs,johnvc/youtube-shorts-api" \  --header "Authorization: Bearer YOUR_APIFY_TOKEN"

Then verify with claude mcp list, or run /mcp inside a session. Ask Claude Code to call the YouTube Shorts API, for example: "Compare the last 20 Shorts from @siliconimist and @MrBeast by engagement rate."

Try Claude Code free: https://claude.ai/referral/uIlpa7nPLg Claude Code MCP docs: https://code.claude.com/docs/en/mcp

Install in Claude (website)

[Install in Claude (website)]

On claude.ai you add Apify as a connector, then enable just this Actor's tool.

  1. Go to Settings → Connectors → Browse connectors and search for Apify MCP server. Install it (enable or update if prompted).
  2. When connecting, authenticate with your Apify API token, and enable the tool johnvc/youtube-shorts-api.
  3. In any chat, open + → Connectors and turn on Apify.
  4. Alternatively, choose Add custom connector and paste the full MCP URL https://mcp.apify.com/?tools=actors,docs,johnvc/youtube-shorts-api, using OAuth when prompted.
  5. Ask Claude to run the YouTube Shorts API.

Open Claude on the web: https://claude.ai

Install in Cursor

[Install in Cursor]

Cursor reads MCP servers from a project file at .cursor/mcp.json.

  1. In your project, create .cursor/mcp.json:
json
{  "mcpServers": {    "apify": {      "url": "https://mcp.apify.com/?tools=actors,docs,johnvc/youtube-shorts-api"    }  }}
  1. If you prefer token auth over browser OAuth, add a header:
json
{  "mcpServers": {    "apify": {      "url": "https://mcp.apify.com/?tools=actors,docs,johnvc/youtube-shorts-api",      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }    }  }}
  1. Open Cursor → Settings → MCP and confirm the apify server is connected (green dot).
  2. In Composer or Chat, ask Cursor to call the YouTube Shorts API.

New to Cursor? Get it here: https://cursor.com/referral?code=XQP4VBLI3NNX

Install in ChatGPT

[Install in ChatGPT]

ChatGPT connects to the Apify MCP server through Developer mode (available on ChatGPT Pro, Plus, Business, Enterprise, and Education plans).

  1. Click your profile icon, then go to Settings > Apps. If you do not see a Create app button, open Advanced settings and enable Developer mode.
  2. Click Create app and fill out the form:
    • Name: Apify
    • MCP Server URL: https://mcp.apify.com/?tools=actors,docs,johnvc/youtube-shorts-api
    • Authentication: OAuth
  3. Click Create and authorize the connection with Apify.
  4. To use the app in a conversation, click + in the chat, choose Developer mode, and select Apify.

More help: https://docs.apify.com/platform/integrations/mcp


This API is not affiliated with, endorsed by, or connected to YouTube or Google. Made with care by johnvc on Apify.

Last Updated: 2026.09.30

Source: README.md at commit 004efd9

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

2
  1. v1.1.0LatestNov 7, 2026
  2. v1.0.0Nov 4, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.