YouTube hub

YouTube Channel Videos API

Page a channel's public long-form uploads as structured rows — titles, durations, view counts, and watch URLs in the shared Social Fetch envelope.

GET /v1/youtube/channels/videos

1 credit per successful request.

About this endpoint

Agency dashboards and competitor trackers usually already know the channel. What they need next is the recent upload list: titles, publish times, view counts, and a watch URL to fan out into transcript or comment routes. Scraping the channel Videos tab yourself means chasing YouTube's client JSON and inventing your own continuation tokens every time the layout changes.

`GET /v1/youtube/channels/videos` takes `handle` or `channelId` (one is required). Optional query params: `sortBy` (`latest` or `popular`), `cursor` for the next page, and `includeExtras` when you want richer per-video fields such as description, likes, and comments when the source exposes them. The response uses the shared Social Fetch envelope: branch on `data.lookupStatus`, then read `data.videos` and `data.page` (`hasMore`, `nextCursor`). Each row can include id, url, title, thumbnailUrl, viewCount, publishedAt, durationSeconds, and related labels.

This route lists long-form uploads only. Shorts are `GET /v1/youtube/channels/shorts`. Channel identity alone is `GET /v1/youtube/channel`. A single watch URL is `GET /v1/youtube/videos`. Pricing is on the credit badge for this operation; bill from `meta.creditsCharged`.

YouTube Channel Videos API FAQ

How do I list YouTube videos for a channel via API?

Call GET /v1/youtube/channels/videos with your Social Fetch API key (x-api-key) and either handle or channelId. Read data.lookupStatus, then data.videos and data.page. Full parameters and examples are in the API docs.

How much does the YouTube channel videos API cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.

What identifiers does the channel videos endpoint accept?

A YouTube @handle or a channel ID (UC… style). Pass one of handle or channelId per request. Either field is required; empty queries are rejected.

What does each channel video row include?

id, url, title, thumbnailUrl, viewCount, viewCountText, publishedAt, publishedTimeText, durationSeconds, durationText, and optional channel title or thumbnail fields. With includeExtras=true you may also get description, likeCount, commentCount, and related extras when available.

How does pagination work on YouTube channel videos?

When data.page.hasMore is true, pass data.page.nextCursor as the cursor query param on the next request. Keep the same handle or channelId and sort across pages.

Can I sort channel videos by latest or popular?

Yes. Pass optional sortBy=latest or sortBy=popular. When you omit sortBy, the list uses the default ordering for that request.

Does found always mean the channel has videos on this page?

No. lookupStatus found means the channel resolved. data.videos may still be empty when there are no long-form uploads in the returned page. not_found means the identifier did not resolve. Persist meta.requestId when you need to debug a miss.

How is this different from channel Shorts or single-video detail?

This route pages long-form uploads for a known channel. Shorts are GET /v1/youtube/channels/shorts. One video by watch URL is GET /v1/youtube/videos. Use the list to discover ids, then video, transcript, or comments routes for depth on a single clip.

Do I need a Google Cloud project for this endpoint?

No. You authenticate to Social Fetch with an API key. The route reads public channel upload data; it does not act on behalf of a logged-in YouTube user.