YouTube Channel API: channel stats, videos, shorts and playlists as JSON

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.

Buy credits

Use cases

Endpoints and cost

EndpointWhat it returnsCredits/callUSD/call (Freelance plan)
/v1/youtube/channelChannel Details1$0.0017
/v1/youtube/channel_videosChannel Videos1$0.0017
/v1/youtube/channel_shortsChannel Shorts1$0.0017
/v1/youtube/channel_livesChannel Lives1$0.0017
/v1/youtube/channel_playlistsChannel Playlists1$0.0017
/v1/youtube/channel_searchChannel Search1$0.0017
/v1/youtube/channel_community_postsChannel Community Posts1$0.0017
/v1/youtube/community_postCommunity Post Details1$0.0017
/v1/youtube/playlistPlaylist1$0.0017

Endpoint details

/v1/youtube/channel

Channel Details 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
channel_idstringnoYouTube channel ID. Can pass a channelId, handle or url
handlestringnoYouTube channel handle. Can pass a channelId, handle or url
urlstringnoYouTube channel URL. Can pass a channelId, handle or url
cache_max_agestringnoIf 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_videos

Channel Videos 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
channel_idstringnoYouTube channel ID
handlestringnoYouTube channel handle
sortstringnoSort by latest or popular
is_paid_promotionsstringnoSet to 'true' to search YouTube's public paid product placement / sponsorship / endorsement search surface. This returns normal YouTube videos where the creator
include_extrasstringnoThis 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_tokenstringnoContinuation token to get more videos. Get 'continuationToken' from previous response.

/v1/youtube/channel_shorts

Channel Shorts 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
handlestringnoCan pass channelId or handle
channel_idstringnoCan pass channelId or handle
sortstringnoSort by newest or popular
next_cursor_tokenstringnoContinuation token to get more videos. Get 'continuationToken' from previous response.

/v1/youtube/channel_lives

Channel Lives 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
channel_idstringnoYouTube channel ID
handlestringnoYouTube channel handle
next_cursor_tokenstringnoContinuation token to get more lives. Get 'continuationToken' from previous response.

/v1/youtube/channel_playlists

Channel Playlists 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
channel_idstringnoYouTube channel ID
handlestringnoYouTube channel handle
next_cursor_tokenstringnoContinuation token to get more playlists. Get 'continuationToken' from previous response.

/v1/youtube/channel_search

Channel Search 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
handlestringyesYouTube channel handle, with or without @.
querystringyesKeywords to search within this channel.
next_cursor_tokenstringnoToken from the previous response. Keep the same handle and query; stop when the token is null.

/v1/youtube/channel_community_posts

Channel Community Posts 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
channel_idstringnoYouTube channel ID
handlestringnoYouTube channel handle
next_cursor_tokenstringnoContinuation token to get more community posts. Get 'continuationToken' from previous response.

/v1/youtube/community_post

Community Post Details 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
urlstringyesThe URL of the YouTube community post to get

/v1/youtube/playlist

Playlist 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
playlist_idstringyesThe ID of the YouTube playlist. In the YouTube URL it will be the 'list' parameter.
next_cursor_tokenstringnoToken from the previous response to get the next page. Omit for the first page. Stop when the returned continuationToken is null.

Example: curl

curl -H "X-Scapi-Key: $SCAPI_KEY" "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel"

Example: Python

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())

FAQ

How do I get YouTube channel statistics with an API?

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.

Can I list all videos of a channel?

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.

Can I search inside one channel?

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.

Are playlists and community posts supported?

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.

How is it billed?

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.

How do I pay and get my API key?

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.

How many credits does one call use?

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.

Get an API key and credits

Full reference: all youtube endpoints.