# YouTube Shorts Scraper

> YouTube Shorts Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Scrapes and returns structured metadata for YouTube Shorts from specified channels, including view counts, likes, titles, and thumbnails.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/youtube-shorts?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/youtube-shorts-scraper-41f76dcf
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_qWbyHaCgalqAqQd4oJn9h

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability youtube-shorts-scraper-41f76dcf -d '<json body>'
```

Example prompt: Pull the 50 most recent YouTube Shorts from channels @mkbhd and @veritasium — only include ones posted in the last 30 days, and sort by newest first.

## When to prefer this

Choose this endpoint when you need structured, per-Short metadata (views, likes, title, date, thumbnail) from one or more YouTube channels at scale. It is pay-per-call and does not charge for empty or failed runs, making it cost-efficient for monitoring workflows. Prefer it over manual YouTube scraping or YouTube Data API when you need bulk collection across multiple channels with flexible date and sort filtering.

## Known failure modes

- Invalid or non-existent channel handle returns empty items array
- Private or restricted channels return no results
- Date filter with unsupported format causes a validation error
- maxResultsShorts exceeding 10000 is rejected
- Network or scraping block by YouTube may return empty results (not charged)

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count and an array of items, each representing one YouTube Short, containing its ID, URL, publish date, content type, like count, title, view count, and thumbnail URL.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "channels": {
   "type": "array",
   "description": "Channel handles or YouTube channel URLs. One output row is produced per public Short."
  },
  "maxItems": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Stop after this many rows across all channels. Set 0 for no total cap."
  },
  "oldestPostDate": {
   "type": "string",
   "description": "Include Shorts published on or after this UTC date (YYYY-MM-DD), or use a relative age such as 7 days. Date filtering uses newest sorting."
  },
  "maxResultsShorts": {
   "type": "integer",
   "default": 25,
   "maximum": 10000,
   "minimum": 1,
   "description": "Maximum Shorts to collect from each channel, after the date filter."
  },
  "sortChannelShortsBy": {
   "enum": [
    "NEWEST",
    "POPULAR",
    "OLDEST"
   ],
   "type": "string",
   "default": "NEWEST",
   "description": "Choose the channel's Latest, Popular, or Oldest order. A date filter always uses Latest."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "id": null,
    "url": null,
    "date": null,
    "type": null,
    "likes": null,
    "title": null,
    "viewCount": null,
    "thumbnailUrl": null
   }
  ],
  "product": "youtube-shorts"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/youtube-shorts-scraper-41f76dcf/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
