# Is there an API for YouTube Shorts?

YouTube. Checked October 2026.

Not a dedicated one from Google. The YouTube Data API returns Shorts, but as normal videos. It has no Shorts endpoint and no Shorts filter in search, and nothing on a video says it is a Short. A short length does not prove it either.

Openhandle reads Shorts directly. `GET /v1/youtube/profiles/@{handle}/shorts` lists a channel’s Shorts tab. `GET /v1/youtube/search/posts?q={query}&type=short` searches Shorts only. Every video in every answer has a `type` of `video`, `short`, or `live`.

## GET /v1/youtube/profiles/@{handle}/shorts

```bash
curl "https://api.openhandle.dev/v1/youtube/profiles/@synthetic_youtube/shorts" \
  -H "Authorization: Bearer $OPENHANDLE_API_KEY"
```

```ts
import { OpenHandle } from '@openhandle/sdk';

const openhandle = new OpenHandle({ apiKey: process.env.OPENHANDLE_API_KEY! });
const page = await openhandle.youtube.profile('synthetic_youtube').shorts.list();

for (const short of page.data) console.log(short.url, short.metrics.views);
```

200 OK:

```json
{
  "platform": "youtube",
  "resource": "post",
  "capturedAt": "2026-10-26T18:33:16Z",
  "source": "live",
  "data": [
    {
      "id": "synthvid001",
      "type": "short",
      "title": "Synthetic video 1",
      "url": "https://www.youtube.com/shorts/synthvid001",
      "approximateCreatedAt": "2026-10-25",
      "duration": 30,
      "thumbnail": { "url": "https://media.openhandle.dev/…", "width": 1080, "height": 1920 },
      "metrics": { "views": 1200000, "isApproximate": true }
    }
  ],
  "meta": { "cursors": { "next": "b3BhcXVlLWN1cnNvcg" } }
}
```

Trimmed to one Short and the fields this question needs. The channel is in the Test dataset, so you can run it on a free Test key.

## What the YouTube Data API gives you

- **No Shorts field.** The video resource has no field that says a video is a Short.
- **No Shorts search.** search.list has a duration filter. "short" means under four minutes, which is not the same as a Short.
- **Mixed uploads.** A channel’s uploads playlist holds videos and Shorts together.

## What Openhandle gives you

| Job | Openhandle call |
|---|---|
| A channel’s Shorts | GET /v1/youtube/profiles/@handle/shorts |
| Shorts by keyword | GET /v1/youtube/search/posts?q=term&type=short |
| One Short with exact counts | GET /v1/youtube/posts/{videoId} |
| Comments on a Short | GET /v1/youtube/posts/{videoId}/comments |
| Other Shorts with the same sound | GET /v1/youtube/posts/{videoId}/sound-posts |

Start from a Shorts link? `POST /v1/urls/fetch` accepts `youtube.com/shorts/` URLs and returns the Short with its `id`. Shorts lists show rounded view counts with `isApproximate: true`. Read the Short for the exact count.

## When this does not work

These answers are definitive. Store them, do not retry them.

| Situation | Status | Code |
|---|---|---|
| The channel does not exist | 404 | `PROFILE_NOT_FOUND` |
| The Short does not exist | 404 | `POST_NOT_FOUND` |
| The cursor came from another channel | 400 | `CURSOR_MISMATCH` |

```json
{
  "error": {
    "code": "PROFILE_NOT_FOUND",
    "message": "This profile was not found.",
    "requestId": "req_01m5…",
    "retryable": false
  }
}
```

Every new workspace starts with 100 free live requests, no card needed.

## Related

- [YouTube API](https://openhandle.dev/apis/youtube): Every YouTube endpoint with examples.
- [All videos from a YouTube channel](https://openhandle.dev/questions/how-do-i-get-all-videos-from-a-youtube-channel): Videos, Shorts, and livestreams, page by page.
- [Trending TikTok hashtags and sounds](https://openhandle.dev/questions/how-do-i-get-trending-tiktok-hashtags-and-sounds): Short video trends on TikTok.
