apihq/youtube-shorts-scraper · YouTube

YouTube Shorts Scraper

Export a YouTube channel's Shorts to JSON from a URL, @handle, or channel ID. One record per Short with title, views, and thumbnail.

$0.0004/short · failed items $0.0000 — on your existing Apify account, a one-item first run costs under a cent.

What does YouTube Shorts Scraper do?

Export a YouTube channel's Shorts to JSON by URL, @handle, or channel ID. No YouTube Data API key or quota. One record per Short with title, views, and thumbnail. Pay-per-Short: a channel that can't be resolved or has no Shorts returns a success:false row and is not charged.

Best for

Use it to track short-form trends, watch creators and competitors, or collect Short IDs to feed transcript jobs.

Use something else when

It reads the Shorts tab only. Use the YouTube Channel Scraper for long-form uploads.

Price
$0.40 per 1,000 shorts · failed items $0

Example run

input
{ "channelUrls": ["@MrBeast", "@totally-wrong-handle"], "maxResults": 5 }

outcome

  • 5 success: true Short rows from @MrBeast — billed
  • 1 success: false row, code: CHANNEL_NOT_FOUND, for the bad handle — not billed
  • Run status: SUCCEEDED
  • Charged: 5 shorts = $0.002

Good input returns billed rows. Bad input returns free error rows in the same dataset, and the run still succeeds.


Why pipelines pick it

A bad channel never breaks the batch

Misspell a handle or hit a channel that never posted a Short and you get a success:false row back. The rest of the batch keeps going.

You pay only for Shorts

The charge fires per Short delivered, not per dataset write. There is no start fee, so a run that returns zero Shorts costs $0.

Every failure is machine-readable

Stable codes like CHANNEL_NOT_FOUND and NO_SHORTS let your pipeline branch on the error type instead of parsing error text.

No YouTube Data API key or quota

The official Data API needs a Google key and rations daily quota. This actor reads public data from a plain channel URL, @handle, or UC… ID.

Best for: Use it to track short-form trends, watch creators and competitors, or collect Short IDs to feed transcript jobs.


Input & output

input example
{
  "channelUrls": [
    "https://www.youtube.com/@MrBeast",
    "@mkbhd",
    "UCX6OQ3DkcsbYNE6H8uQQuVA"
  ],
  "maxResults": 100
}
output — success (billed)
{
  "success": true,
  "channel_id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "channel_title": "MrBeast",
  "video_id": "LgbyEFILLJI",
  "title": "$1 vs $10,000 Cake",
  "url": "https://www.youtube.com/shorts/LgbyEFILLJI",
  "type": "short",
  "view_count": "2M views",
  "thumbnail_url": "https://i.ytimg.com/vi/LgbyEFILLJI/oardefault.jpg",
  "author": "MrBeast"
}
output — failure (free, same dataset)
{
  "success": false,
  "channel_url": "@totally-wrong-handle",
  "code": "CHANNEL_NOT_FOUND",
  "error": "Could not resolve YouTube channel: @totally-wrong-handle",
  "request_id": "req_911f37d2e55644ff9d9e4a3f",
  "status_code": 404
}

Branch on the success field to split hits from misses. Quote the request_id in any support issue and we can trace the exact request.

output fields

fieldtypewhat it is
successbooleantrue for a Short (billed), false for a channel that could not be listed (free).
channel_idstringThe UC… channel ID the Short belongs to.
channel_titlestringThe channel's display name.
video_idstringThe 11-character YouTube video ID of the Short.
titlestringShort title.
urlstringCanonical Short URL: youtube.com/shorts/<video_id>.
typestringContent type. Always "short".
view_countstringView count as a display string (e.g. "2M views"). May be empty.
thumbnail_urlstringURL of the largest available thumbnail.
authorstringChannel author name.

Error codes, stable across releases

Every failure record carries one of these machine-readable codes. None of them are ever charged.

codebilledmeaning
CHANNEL_NOT_FOUND$0.0000The URL, @handle, or ID could not be resolved to a channel.
NO_SHORTS$0.0000The channel exists but has never posted a Short.
VALIDATION_FAILED$0.0000The input was not a valid channel URL, @handle, or UC… ID.
RESOLVE_TIMEOUT$0.0000Resolving the channel identity timed out.
CHANNEL_SHORTS_TIMEOUT$0.0000Listing the channel's Shorts timed out.
DEADLINE_EXCEEDED$0.0000The per-channel deadline was hit. No charge.

Every error code across the eight APIs, in one reference →


What a run costs

per short$0.0004
per 1,000 shorts$0.40
per failed item$0.0000
per-run start fee$0.0000

The charge fires only when a result is delivered, and platform compute is included in the per-result price. To cap the spend of a run, set a limit in Apify's Run Limits panel. The actor stops at the cap and reports how far it got.

How pay-per-result billing works →


What this actor doesn't do

  • It reads the Shorts tab only. Use the YouTube Channel Scraper for long-form uploads.
  • It returns what the Shorts tab exposes: title, view count, and thumbnail. The tab carries no duration or publish date. Likes, comments, and descriptions are out of scope.
  • It returns Shorts newest first. There is no sort by popularity or oldest.
  • It reads public channels only. Private and unavailable channels return success:false.

Frequently asked questions

What input formats are accepted?
A full channel URL, an @handle, or a UC… channel ID, mixed freely in the same batch. Up to 50 unique channels run per job.
How many Shorts does it return per channel?
Each channel is walked newest-first up to maxResults Shorts (default 30).
Why is there no publish date or duration on Shorts?
The Shorts tab does not expose them. Rather than guess or scrape each Short individually (which would multiply your cost), the Actor returns exactly what the tab carries: title, view count, and thumbnail.
What does a channel with no Shorts cost?
$0. It returns one success:false row with code NO_SHORTS and the run continues.
Do I need a YouTube Data API key?
No. The Actor reads YouTube's public data directly. No Google key, no quota.

Pairs with

Run it on the Apify account you already have

Paste one input into the actor's console and check the dataset it returns. A one-item first run costs under a cent — no new subscription, pay only for delivered results.

List a channel's Shorts