You can read a YouTube channel by handle, channel_id or URL and get its profile and subscriber count as JSON, then list its videos, Shorts, live streams, playlists and community posts with cursor pagination. One more endpoint searches inside a single channel. There is no Google Cloud project or daily quota to manage, and each successful call is billed on its own.
| Endpoint | What it returns | Credits/call | USD/call (Freelance plan) |
|---|---|---|---|
/v1/youtube/channel | Channel Details | 1 | $0.0017 |
/v1/youtube/channel_videos | Channel Videos | 1 | $0.0017 |
/v1/youtube/channel_shorts | Channel Shorts | 1 | $0.0017 |
/v1/youtube/channel_lives | Channel Lives | 1 | $0.0017 |
/v1/youtube/channel_playlists | Channel Playlists | 1 | $0.0017 |
/v1/youtube/channel_search | Channel Search | 1 | $0.0017 |
/v1/youtube/channel_community_posts | Channel Community Posts | 1 | $0.0017 |
/v1/youtube/community_post | Community Post Details | 1 | $0.0017 |
/v1/youtube/playlist | Playlist | 1 | $0.0017 |
/v1/youtube/channelChannel Details 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
channel_id | string | no | YouTube channel ID. Can pass a channelId, handle or url |
handle | string | no | YouTube channel handle. Can pass a channelId, handle or url |
url | string | no | YouTube channel URL. Can pass a channelId, handle or url |
cache_max_age | string | no | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). |
Sample response (trimmed):
{
"channel_id": "UCxcTeAKWJca6XyJ37_ZoKIQ",
"channel": "http://www.youtube.com/@ThePatMcAfeeShow",
"name": "The Pat McAfee Show",
"avatar": {
"image": {
"sources": [
{
"url": "https://yt3.googleusercontent.com/ytc/AIdro_nBgMGIxgHehCAlUUepEhd9Yooi1I55k6IF2WExl-v8Q-c=s72-c-k-c0x00ffffff-no-rj",
"width": 72,
"height": 72
}
],
"processor": {
"border_image_processor": {
"circular": true
}
}
},
"avatar_image_size": "AVATAR_SIZE_XL",
"logging_directives": {
"tracking_params": "CC0Q6OENIhMIkInyhaSPiwMV9wfWAB3aoR9h",
"visibility": {
"types": "12"
}
}
},
"description": "",
"subscriber_count": 2750000,
"subscriber_count_text": "2.75M subscribers",
"video_count_text": "9,221 videos",
"view_count_text": "2,170,355,382 views",
"joined_date_text": "Joined Aug 23, 2017",
"tags": "pat mcafee, football, pat mcafee show, the pat mcafee show, pat mcafee podcast, pat mcafee clips, pat mcafee reacts, pat mcafee highlights, pat mcafee live, ...",
"email": null,
"store": "https://store.patmcafeeshow.com",
"twitter": "https://twitter.com/PatMcAfeeShow",
"instagram": "https://instagram.com/patmcafeeshow",
"links": [
"https://store.patmcafeeshow.com"
],
"country": "United States"
}/v1/youtube/channel_videosChannel Videos 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
channel_id | string | no | YouTube channel ID |
handle | string | no | YouTube channel handle |
sort | string | no | Sort by latest or popular |
is_paid_promotions | string | no | Set to 'true' to search YouTube's public paid product placement / sponsorship / endorsement search surface. This returns normal YouTube videos where the creator |
include_extras | string | no | This will get you the like + comment count and the description. To get the full details of the video, use the /v1/youtube/video endpoint. Honestly, if you use t |
next_cursor_token | string | no | Continuation token to get more videos. Get 'continuationToken' from previous response. |
/v1/youtube/channel_shortsChannel Shorts 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | no | Can pass channelId or handle |
channel_id | string | no | Can pass channelId or handle |
sort | string | no | Sort by newest or popular |
next_cursor_token | string | no | Continuation token to get more videos. Get 'continuationToken' from previous response. |
/v1/youtube/channel_livesChannel Lives 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
channel_id | string | no | YouTube channel ID |
handle | string | no | YouTube channel handle |
next_cursor_token | string | no | Continuation token to get more lives. Get 'continuationToken' from previous response. |
/v1/youtube/channel_playlistsChannel Playlists 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
channel_id | string | no | YouTube channel ID |
handle | string | no | YouTube channel handle |
next_cursor_token | string | no | Continuation token to get more playlists. Get 'continuationToken' from previous response. |
/v1/youtube/channel_searchChannel Search 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | yes | YouTube channel handle, with or without @. |
query | string | yes | Keywords to search within this channel. |
next_cursor_token | string | no | Token from the previous response. Keep the same handle and query; stop when the token is null. |
/v1/youtube/channel_community_postsChannel Community Posts 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
channel_id | string | no | YouTube channel ID |
handle | string | no | YouTube channel handle |
next_cursor_token | string | no | Continuation token to get more community posts. Get 'continuationToken' from previous response. |
/v1/youtube/community_postCommunity Post Details 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | yes | The URL of the YouTube community post to get |
/v1/youtube/playlistPlaylist 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
playlist_id | string | yes | The ID of the YouTube playlist. In the YouTube URL it will be the 'list' parameter. |
next_cursor_token | string | no | Token from the previous response to get the next page. Omit for the first page. Stop when the returned continuationToken is null. |
curl -H "X-Scapi-Key: $SCAPI_KEY" "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel"import os, requests
r = requests.get("https://api.scrapall.bipsport.com/scapi/v1/youtube/channel",
headers={"X-Scapi-Key": os.environ["SCAPI_KEY"]})
print(r.json())Call the channel details endpoint with a handle, channel_id or channel URL. The JSON response includes the channel name, avatar images and subscriber count, so you do not need to resolve a channel ID first.
Yes. The channel videos endpoint returns a paginated list with title, URL and thumbnail for each video, and you continue with next_cursor_token. Shorts and live streams have their own endpoints, and sort lets you change the order.
Yes. Channel search takes a handle and a query and uses the native search of that channel, not a global search, so results stay limited to that creator.
Yes. You can list the playlists of a channel, read the videos in a playlist by playlist_id, list community posts, and read one community post by URL with its text, images and like count.
You pay per successful call from your credit balance, with no Google API quota. The exact cost per endpoint is shown in the cost table on this page.
Open the Buy page, pick the Freelance plan and pay in USDT on TRC20 or ERC20. The key is shown once, right after the payment is confirmed on-chain.
The cost table on this page lists credits per call for each endpoint. The Freelance plan is $45 for 27,000 credits per 30 days.
Full reference: all youtube endpoints.