YouTube

18 endpoints.

GET /v1/youtube/channel

Channel Details

Retrieves comprehensive YouTube channel profile data including name, avatar images, subscriber count (subscribers), total video and view counts, join date, tags, and linked social accounts like Twitter and Instagram. Accepts a channelId, handle, or full channel URL as input. Returns channel metadata such as country, email, and external store links when available. Contact fields come from the submitted public profile. To request removal of your own information from Scrapall results, email Telegram @rajoulzsannax123 with the profile URL.

Parameters

NameInTypeDescription
channel_idquerystringYouTube channel ID. Can pass a channelId, handle or url
handlequerystringYouTube channel handle. Can pass a channelId, handle or url
urlquerystringYouTube channel URL. Can pass a channelId, handle or url
cache_max_agequerystringIf 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). Otherwise, scrape a live result (1 credit). See the Caching page for details.
one of: 1d, 3d, 7d, 14d, 30d

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/channel", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "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"
}

GET /v1/youtube/channel_videos

Channel Videos

Fetches a paginated list of videos uploaded by a YouTube channel, including each video's title, URL, thumbnail, view count (views), publish date, duration, and description. Supports sorting by latest or popular, and use the continuationToken to page through all results. Optionally include extras like like count, comment count, and descriptions for each video.

Parameters

NameInTypeDescription
channel_idquerystringYouTube channel ID
handlequerystringYouTube channel handle
sortquerystringSort by latest or popular
one of: latest, popular
is_paid_promotionsquerystringSet to 'true' to search YouTube's public paid product placement / sponsorship / endorsement search surface. This returns normal YouTube videos where the creator declared paid promotion. Cannot be combined with filter, uploadDate, sortBy, type, duration, or includeExtras.
include_extrasquerystringThis 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 this param, the error rate is higher. We might deprecate this param in the future.
next_cursor_tokenquerystringContinuation token to get more videos. Get 'continuationToken' from previous response.

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_videos" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_videos", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_videos",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "videos": [
    {
      "type": "video",
      "id": "5EWaxmWgQMI",
      "url": "https://www.youtube.com/watch?v=5EWaxmWgQMI",
      "title": "Russell Wilson Hopes To Finish Career As A Steeler, Reflects On NFL Career With Pat McAfee",
      "description": "Welcome to The Pat McAfee Show LIVE from Noon-3PM EST Mon-Fri. You can also find us live on ESPN, ESPN+, & TikTok!\n\nBecome a #McAfeeMafia member! https://www...",
      "thumbnail": "https://i.ytimg.com/vi/5EWaxmWgQMI/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBZIBEJGcYDrduIZJpaSmYHcIHJ6g",
      "channel": {
        "title": "",
        "thumbnail": null
      },
      "view_count_text": "110,447 views",
      "view_count_int": 110447,
      "published_time_text": "9 days ago",
      "published_time": "2025-01-23T22:48:53.914Z",
      "length_text": "37:25",
      "length_seconds": 2245,
      "badges": []
    }
  ],
  "next_cursor_token": "4qmFsgLlFhIYV...."
}

GET /v1/youtube/channel_community_posts

Channel Community Posts

Fetches community posts from a YouTube channel's Posts tab, including post ID, URL, content, images, attached video, like count, publish time, channel info, and a continuationToken when YouTube has more results. Pass a handle or channelId for the first page, then pass continuationToken to page through more posts.

Parameters

NameInTypeDescription
channel_idquerystringYouTube channel ID
handlequerystringYouTube channel handle
next_cursor_tokenquerystringContinuation token to get more community posts. Get 'continuationToken' from previous response.

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_community_posts" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_community_posts", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_community_posts",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "posts": [
    {
      "id": "UgkxfMvMnSnV3Ww9HwAY2wFGmVevmhRaYAYO",
      "url": "https://www.youtube.com/post/UgkxfMvMnSnV3Ww9HwAY2wFGmVevmhRaYAYO",
      "channel": {
        "id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
        "title": "MrBeast",
        "url": "https://www.youtube.com/@MrBeast",
        "handle": "MrBeast"
      },
      "content": "New video is live",
      "image": "https://yt3.ggpht.com/example-image=s640-c-fcrop64",
      "images": [
        "https://yt3.ggpht.com/example-image=s640-c-fcrop64"
      ],
      "like_count_text": "250K",
      "like_count": 250000,
      "published_time_text": "2 days ago",
      "published_time": "2026-05-24T12:00:00.000Z",
      "video": {
        "id": "tnTPaLOaHz8",
        "title": "If You Survive, You Win",
        "thumbnail": "https://i.ytimg.com/vi/tnTPaLOaHz8/hqdefault.jpg",
        "url": "https://www.youtube.com/watch?v=tnTPaLOaHz8",
        "view_count_text": "10M views",
        "view_count_int": 10000000,
        "published_time_text": "2 days ago",
        "length_text": "18:42",
        "length_seconds": 1122
      }
    }
  ],
  "next_cursor_token": "4qmFsgLlFhIYV...."
}

GET /v1/youtube/channel_lives

Channel Lives

Fetches live streams and past streams from a YouTube channel's Live tab, including title, URL, thumbnail, view count, publish time, duration, and a continuationToken when YouTube has more results. Pass a handle or channelId for the first page, then pass continuationToken to page through more lives.

Parameters

NameInTypeDescription
channel_idquerystringYouTube channel ID
handlequerystringYouTube channel handle
next_cursor_tokenquerystringContinuation token to get more lives. Get 'continuationToken' from previous response.

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_lives" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_lives", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_lives",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "lives": [
    {
      "type": "live",
      "id": "JpVtso3S9rM",
      "url": "https://www.youtube.com/watch?v=JpVtso3S9rM",
      "title": "IShowSpeed Live Stream",
      "thumbnail": "https://i.ytimg.com/vi/JpVtso3S9rM/hqdefault.jpg",
      "channel": {
        "id": null,
        "title": null,
        "handle": null,
        "thumbnail": null
      },
      "view_count_text": "1.2M views",
      "view_count_int": 1200000,
      "published_time_text": "Streamed 2 days ago",
      "length_text": "2:14:52",
      "length_seconds": 8092,
      "badges": []
    }
  ],
  "next_cursor_token": "4qmFsgLlFhIYV...."
}

GET /v1/youtube/channel_playlists

Channel Playlists

Fetches playlists from a YouTube channel's Playlists tab, including playlist ID, title, thumbnail, video count, channel info, playlist URL, and a continuationToken when YouTube has more results. Pass a handle or channelId for the first page, then pass continuationToken to page through more playlists.

Parameters

NameInTypeDescription
channel_idquerystringYouTube channel ID
handlequerystringYouTube channel handle
next_cursor_tokenquerystringContinuation token to get more playlists. Get 'continuationToken' from previous response.

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_playlists" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_playlists", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_playlists",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "playlists": [
    {
      "type": "playlist",
      "id": "PLYMWLvk9WbU8",
      "title": "The Diary Of A Polarizing Figure",
      "thumbnail": "https://i.ytimg.com/vi/gQ8QVZuDLGQ/hqdefault.jpg",
      "playlist_url": "https://www.youtube.com/playlist?list=PLYMWLvk9WbU8",
      "video_id": "gQ8QVZuDLGQ",
      "video_url": "https://www.youtube.com/watch?v=gQ8QVZuDLGQ",
      "video_count": 14,
      "channel": {
        "id": "UCxcTeAKWJca6XyJ37_ZoKIQ",
        "title": "The Pat McAfee Show",
        "handle": "ThePatMcAfeeShow",
        "channel_url": "https://www.youtube.com/@ThePatMcAfeeShow"
      }
    }
  ],
  "next_cursor_token": "4qmFsgLlFhIYV...."
}

GET /v1/youtube/channel_shorts

Channel Shorts

Retrieves a paginated list of short-form videos (Shorts) from a YouTube channel, including each short's title, URL, view count (views), likes, comments, description, and publish date. publishDate is a full ISO 8601 timestamp with an offset when YouTube exposes the exact publish time; otherwise it is null. It does not return date-only strings. Supports sorting by newest or popular; use the continuationToken to page through all results. Returns data in the shorts array.

Parameters

NameInTypeDescription
handlequerystringCan pass channelId or handle
channel_idquerystringCan pass channelId or handle
sortquerystringSort by newest or popular
one of: newest, popular
next_cursor_tokenquerystringContinuation token to get more videos. Get 'continuationToken' from previous response.

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_shorts" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_shorts", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_shorts",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "videos": [],
  "channels": [],
  "playlists": [],
  "shorts": [
    {
      "type": "short",
      "id": "VREVC0wXPfs",
      "url": "https://www.youtube.com/watch?v=VREVC0wXPfs",
      "title": "This idea validation formula has made him $500K from iOS apps",
      "thumbnail": "https://img.youtube.com/vi/VREVC0wXPfs/maxresdefault.jpg",
      "view_count_text": "17,066",
      "view_count_int": 17066,
      "description": "Most founders think their app isn’t selling because of market conditions.\n\nIt’s not.\n\nThis founder sold multiple apps and noticed the same pattern every time...",
      "comment_count_text": "2",
      "comment_count_int": 2,
      "like_count_int": 495,
      "like_count_text": "495",
      "publish_date": "2026-04-22T10:44:35-07:00",
      "genre": "People & Blogs",
      "duration_ms": 37000,
      "duration_formatted": "00:00:37"
    }
  ],
  "shelves": [],
  "lives": [],
  "next_cursor_token": "4qmFsgK7DBIY....."
}

GET /v1/youtube/community_post

Community Post Details

Retrieves the full details of a YouTube community post, including its text content, attached images, like count, publish date, and associated channel info. Also returns a linked video if the post includes one.

Parameters

NameInTypeDescription
url requiredquerystringThe URL of the YouTube community post to get

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/community_post?url=https://www.youtube.com/post/Ugkxvj2KoApYAXoqLWnKVr6zZe5JjeHrQeP8" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/community_post?url=https://www.youtube.com/post/Ugkxvj2KoApYAXoqLWnKVr6zZe5JjeHrQeP8", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/community_post?url=https://www.youtube.com/post/Ugkxvj2KoApYAXoqLWnKVr6zZe5JjeHrQeP8",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "id": "Ugkxvj2KoApYAXoqLWnKVr6zZe5JjeHrQeP8",
  "channel": {
    "id": "UChhw6DlKKTQ9mYSpTfXUYqA",
    "title": "Starter Story",
    "url": "https://www.youtube.com/@starterstory",
    "handle": "starterstory"
  },
  "content": "How to build something meaningful\n\n1. sit down\n2. set a timer for 2 hours\n3. work\n4. do that over and over and over\n\nNOTHING meaningful was built in a day, a...",
  "images": [
    "https://yt3.ggpht.com/uer4ij-RqnTqudtdT5VZNvEjzVXA3PGLHwNpjMfraB7mfbX_Bm0-fSpaFXkfw3EA4uZ7BY8YPa1gU08=s640-c-fcrop64=1,20000000dfffffff-rw-nd-v1"
  ],
  "like_count": 759,
  "published_time_text": "5 days ago",
  "published_time": "2025-11-07T18:49:57.492Z",
  "video": null
}

GET /v1/youtube/playlist

Playlist

Retrieves a page of videos in a YouTube playlist, including each video's title, URL, thumbnail, duration, and channel. Accepts the playlist ID found in the 'list' URL parameter. The first page includes title, owner, and totalVideos. Later pages return videos and continuationToken without playlist metadata. Pass the previous response's continuationToken to get the next page. Stop when continuationToken is null. Each page costs 1 credit.

Parameters

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

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/playlist?playlist_id=PLP32wGpgzmIlInfgKVFfCwVsxgGqZNIiS" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/playlist?playlist_id=PLP32wGpgzmIlInfgKVFfCwVsxgGqZNIiS", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/playlist?playlist_id=PLP32wGpgzmIlInfgKVFfCwVsxgGqZNIiS",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "title": "Songs with Lyrics 2025 - New Songs 2025 - Music 2025 New Songs",
  "owner": {
    "id": "UC0-wiBH12UgtWqLjo-EvpOw",
    "name": "Lovely Tunes",
    "url": "https://www.youtube.com/@lovelytunes7622",
    "handle": "lovelytunes7622"
  },
  "total_videos": 98,
  "videos": [
    {
      "id": "AdBzzpq3xV4",
      "title": "Lady Gaga, Bruno Mars - Die With A Smile",
      "thumbnail": "https://i.ytimg.com/vi/AdBzzpq3xV4/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLABnTkQJmfW0s1BMl_qa0FGqIGGqw",
      "url": "https://www.youtube.com/watch?v=AdBzzpq3xV4",
      "length_text": "4:15",
      "length_seconds": 255,
      "channel": {
        "title": "LatinHype",
        "url": "https://www.youtube.com/@LatinHype."
      }
    }
  ],
  "next_cursor_token": null
}

GET /v1/youtube/search_hashtag

Search by Hashtag

Searches YouTube for content matching a specific hashtag and returns matching videos with title, URL, thumbnail, view count (views), publish date, duration, and channel info. Supports pagination via continuationToken and filtering to return all content types or only shorts.

Parameters

NameInTypeDescription
hashtag requiredquerystringHashtag to search for
typequerystringSearch for all types of content or only shorts
one of: all, shorts
next_cursor_tokenquerystringContinuation token to get more videos. Get 'continuationToken' from previous response.

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/search_hashtag?hashtag=funny" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/search_hashtag?hashtag=funny", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/search_hashtag?hashtag=funny",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "videos": [
    {
      "type": "video",
      "id": "jXMISgQq9MM",
      "url": "https://www.youtube.com/watch?v=jXMISgQq9MM",
      "title": "Epic fails 🤣🤣🤣 #shorts #funny #fails",
      "description": "",
      "thumbnail": "https://i.ytimg.com/vi/jXMISgQq9MM/hqdefault.jpg?sqp=-oaymwFBCNACELwBSFryq4qpAzMIARUAAIhCGADYAQHiAQoIGBACGAY4AUAB8AEB-AG2CIACgA-KAgwIABABGGUgXyhVMA8=&rs=AOn4...",
      "channel": {
        "id": "UCvUzWu1Whyw1FWuLl9GOo_g",
        "title": "ZZang Funny",
        "thumbnail": "https://yt3.ggpht.com/rcZKcfewHTzkauGknat3NeC53rGBofYDbL8AjFkwvsk2fXzM1clht7OTn9-1IIPnmbeZkrNGdxI=s68-c-k-c0x00ffffff-no-rj"
      },
      "view_count_text": "22,668,056 views",
      "view_count_int": 22668056,
      "published_time_text": "4 weeks ago",
      "published_time": "2025-01-04T23:12:42.919Z",
      "length_text": "1:00",
      "length_seconds": 60,
      "badges": []
    }
  ],
  "next_cursor_token": "4qmFsgLtBRIJRkVoYX...."
}

GET /v1/youtube/search_typeahead

Search Typeahead

Returns the live search suggestions YouTube displays while a user types. Each result includes the suggested text and whether it is a normal query or a channel. When YouTube returns a channel suggestion, the response also includes its public channel ID, handle, name, and thumbnail.

Parameters

NameInTypeDescription
query requiredquerystringPartial or complete YouTube search query

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/search_typeahead?query=mr beast" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/search_typeahead?query=mr beast", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/search_typeahead?query=mr beast",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "data": {
    "query": "mr beast",
    "suggestions": [
      {
        "text": "mrbeast",
        "type": "channel",
        "channel": {
          "id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
          "handle": "@MrBeast",
          "name": "MrBeast",
          "thumbnail_url": "https://yt3.googleusercontent.com/example=s88-c-k-c0x00ffffff-no-rj"
        }
      }
    ]
  }
}

GET /v1/youtube/video

Video/Short Details

Fetches full details for a YouTube video or short, including title, description, thumbnail, view count (views), like count (likes), comment count, publish date, duration, genre, keywords, chapters, collaborators, and available caption tracks (subtitles/captions). isPaidPromotion is true when YouTube marks the video as including paid promotion and false when it does not. Also returns related recommended videos in watchNextVideos and channel info for the uploader. When YouTube exposes its public Most replayed graph, most_replayed contains normalized graph buckets in markers and YouTube's highlighted ranges in ranges. The field is null when the graph is not available. YouTube says the graph may be unavailable when the channel has active strikes, the content is potentially inappropriate, the video is too new or has too few views, or its systems deem the video ineligible for another reason. YouTube does not publish fixed age or view-count thresholds. Age-restricted videos return 403 with message: "This video is age restricted" because Scrapall only uses the public logged-out YouTube source. Need to download a YouTube video? We open sourced our YouTube downloader. You can use it and host it wherever you want. We don't offer a hosted YouTube downloading service because it's expensive and compute-intensive to run.

Parameters

NameInTypeDescription
url requiredquerystringYouTube video or short URL
languagequerystringPreferred response language (mapped to Accept-Language header; not guaranteed due to YouTube localization behavior). 2 letter language code, ie 'en', 'es', 'fr' etc.
cache_max_agequerystringIf 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). Otherwise, scrape a live result (1 credit). See the Caching page for details.
one of: 1d, 3d, 7d, 14d, 30d

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/video?url=https://youtu.be/gTCi7PaOPLY" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/video?url=https://youtu.be/gTCi7PaOPLY", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/video?url=https://youtu.be/gTCi7PaOPLY",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "id": "Y2Ah_DFr8cw",
  "thumbnail": "https://img.youtube.com/vi/Y2Ah_DFr8cw/maxresdefault.jpg",
  "url": "https://www.youtube.com/watch?v=Y2Ah_DFr8cw",
  "publish_date": "2019-02-22T03:19:54-08:00",
  "type": "video",
  "title": "Inside the NBA: Chuck Trolls Jussie Smollett \"Do not commit crimes with checks, use cash!\"",
  "description": null,
  "description_links": [],
  "comment_count_text": "358",
  "comment_count_int": 358,
  "like_count_text": "4043",
  "like_count_int": 4043,
  "view_count_text": "372,864",
  "view_count_int": 372864,
  "publish_date_text": "Feb 22, 2019",
  "collaborators": [],
  "channel": {
    "id": "UCWH3hing1Qb4LnkRfQdxsxQ",
    "url": "https://www.youtube.com/@afroballer8906",
    "handle": "afroballer8906",
    "title": "Afroballer"
  },
  "chapters": [],
  "watch_next_videos": [
    {
      "id": "lzDTK5kEdkM",
      "title": "Charles Barkley and Shaq FUNNIEST MOMENTS",
      "thumbnail": "https://i.ytimg.com/vi/lzDTK5kEdkM/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAq_osvQnsGV3A7uz4L1CPTaLqppg",
      "channel": {
        "title": "SkyHooked",
        "url": "https://www.youtube.com/@SkyHooked",
        "handle": "SkyHooked",
        "id": "UCrX8GD5f_O-Cu5Y2vQuSSvw"
      },
      "published_time_text": "11 months ago",
      "published_time": "2025-02-16T19:25:39.493Z",
      "publish_date_text": "11 months ago",
      "publish_date": "2025-02-16T19:25:39.493Z",
      "view_count_text": "1.8M views",
      "view_count_int": 1800000,
      "length_text": "18:01",
      "length_in_seconds": 1081,
      "video_url": "https://www.youtube.com/watch?v=lzDTK5kEdkM"
    }
  ],
  "keywords": [],
  "genre": "People & Blogs",
  "duration_ms": 348000,
  "duration_formatted": "00:05:48",
  "is_paid_promotion": false,
  "most_replayed": null,
  "...": "1 more fields"
}

GET /v1/youtube/video_comment_replies

Comment Replies

Fetches replies to a specific comment on a YouTube video, including each reply's text content, author details (name, channel ID, avatar, verified/creator status), like count, and publish date. Requires a continuationToken obtained from the 'repliesContinuationToken' field on comments returned by the Comments endpoint. Supports paginating through additional replies with the continuationToken returned in each response.

Parameters

NameInTypeDescription
next_cursor_token requiredquerystringContinuation token for the comment replies. Use 'repliesContinuationToken' from the Comments endpoint, or 'continuationToken' from a previous replies response to paginate.

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/video_comment_replies?next_cursor_token=Eg0SC2RRdzR3OVdnWGNRGAYygwEaUBIa..." \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/video_comment_replies?next_cursor_token=Eg0SC2RRdzR3OVdnWGNRGAYygwEaUBIa...", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/video_comment_replies?next_cursor_token=Eg0SC2RRdzR3OVdnWGNRGAYygwEaUBIa...",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "comments": [
    {
      "id": "UgyfayX-QqgkPGkcKbt4AaABAg.AV5O1akOhw9AV5RdnpN-SY",
      "content": "Me",
      "published_time_text": "20 hours ago",
      "published_time": "2026-04-03T05:52:36.883Z",
      "reply_level": 1,
      "author": {
        "name": "@pepisakkout2522",
        "channel_id": "UCjEBcO_VQ32GUzUZGwlxy1w",
        "is_verified": false,
        "is_creator": false,
        "avatar_url": "https://yt3.ggpht.com/ytc/AIdro_lYQDmh7-5JOb_QcEsPJIp4vmKm5a0uyzAXT-JC0rY=s88-c-k-c0x00ffffff-no-rj",
        "channel_url": "https://youtube.com/@pepisakkout2522"
      },
      "engagement": {
        "likes": 2,
        "replies": 0
      }
    }
  ],
  "next_cursor_token": "Eg0SC2RRdzR3OVdnWGNRGAYy1AEK..."
}

GET /v1/youtube/video_comments

Comments

Fetches comments and replies from a YouTube video, including each comment's text content, author details, like count, reply count, and publish date. Supports ordering by top or newest, and paginating with continuationToken. Limited to approximately 1,000 top comments or 7,000 newest comments.

Parameters

NameInTypeDescription
url requiredquerystringYouTube video URL
orderquerystringOrder of comments
one of: top, newest
next_cursor_tokenquerystringContinuation token to get more comments. Get 'continuationToken' from previous response.

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/video_comments?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/video_comments?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/video_comments?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "comments": [
    {
      "id": "UgwVfRopfS2F-WB3aF14AaABAg",
      "content": "I love how in the middle he said \"I've been able to work with 2 great coaches... Pete and Coach Tomlin\"... Side shade to Coach Sean Payton, love it :)",
      "published_time_text": "9 days ago",
      "published_time": "2025-01-23T23:14:02.948Z",
      "reply_level": 0,
      "author": {
        "name": "@SimonT80",
        "channel_id": "UC8JC3uSUmmXTCTKl-bgr1DA",
        "is_verified": false,
        "is_creator": false,
        "avatar_url": "https://yt3.ggpht.com/ytc/AIdro_lQ_2v9lDqwRrmdvEBfDNyFOvgQICl68X6WFkwZ5KI=s88-c-k-c0x00ffffff-no-rj",
        "channel_url": "https://youtube.com/@SimonT80"
      },
      "engagement": {
        "likes": 110,
        "replies": 5
      },
      "replies_continuation_token": "Eg0SC2RRdzR3OVdnWGNRGAYy1AEK..."
    }
  ],
  "next_cursor_token": "Eg0SCzVFV2F4bVd...."
}

GET /v1/youtube/video_sponsors

Video Sponsors

Experimental endpoint. Checks a YouTube video for the paid-promotion disclosure and infers likely sponsors/promoted brands from the public description, description links, promo-code text, and transcript. YouTube tells us that a video contains paid promotion, but it does not always tell us the sponsor directly, so this endpoint returns suspected sponsors with confidence and evidence. This is inferred, not an official YouTube sponsor field. Feedback welcome: Telegram @rajoulzsannax123

Parameters

NameInTypeDescription
url requiredquerystringYouTube video or short URL
languagequerystring2 letter language code used for transcript lookup, ie 'en', 'es', 'fr' etc.

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/video_sponsors?url=https://www.youtube.com/watch?v=AVO0ifle-OU" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/video_sponsors?url=https://www.youtube.com/watch?v=AVO0ifle-OU", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/video_sponsors?url=https://www.youtube.com/watch?v=AVO0ifle-OU",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "video": {
    "id": "AVO0ifle-OU",
    "url": "https://www.youtube.com/watch?v=AVO0ifle-OU",
    "title": "Why You Should Meal Prep Like A Restaurant",
    "channel": {
      "id": "UC3vQEjRhwgH2HAOBKwLjxNA",
      "url": "https://www.youtube.com/@letsKWOOWK",
      "handle": "letsKWOOWK",
      "title": "KWOOWK"
    },
    "is_paid_promotion": true
  },
  "suspected_sponsors": [
    {
      "name": "Betterhelp",
      "website": "betterhelp.com",
      "confidence": "medium",
      "evidence": [
        {
          "text": "If you're struggling, consider therapy with our sponsor BetterHelp. Click https://betterhelp.com/KWOOWK for a 10% discount..."
        }
      ]
    }
  ],
  "sponsor_detection": {
    "status": "found",
    "methods": [
      "paid promotion badge"
    ],
    "transcript_available": true,
    "note": "Sponsors are inferred from public description, links, promo-code text, and transcript evidence."
  }
}

GET /v1/youtube/video_captions

Transcript

Retrieves publicly available captions, subtitles, or transcripts from a YouTube video or Short. Returns both a timestamped transcript array with start/end times and a plain-text version in transcript_only_text. Supports specifying a language code. Videos of any length are supported when YouTube exposes public captions. This endpoint does not use AI transcription. A returned transcript costs 1 credit; missing captions cost 0 credits. If no matching caption track is available, the transcript fields return null.

Parameters

NameInTypeDescription
url requiredquerystringYouTube video or short URL
languagequerystringLanguage code, ie 'en', 'es', 'fr' or 'en-US'. Overrides the default track selection unless original_audio=true. If omitted, prefers captions matching the original spoken language when YouTube identifies the original audio. If that metadata is unavailable or ambiguous, prefers an auto-generated caption, otherwise the first caption track. If the requested or identified original language has no matching captions, the transcript will be null and no credits are charged.
original_audioquerybooleanSet to true to return captions only in the original spoken language identified by YouTube. Takes precedence over language. If the original audio cannot be reliably identified or has no matching captions, transcript, transcript_only_text, and language are null and no credits are charged. No extra lookup or credit cost; a returned transcript costs the usual 1 credit. Omit or set to false for the existing default selection.
cache_max_agequerystringIf 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). Otherwise, scrape a live result (1 credit). See the Caching page for details.
one of: 1d, 3d, 7d, 14d, 30d

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/video_captions?url=https://www.youtube.com/watch?v=bjVIDXPP7Uk" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/video_captions?url=https://www.youtube.com/watch?v=bjVIDXPP7Uk", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/youtube/video_captions?url=https://www.youtube.com/watch?v=bjVIDXPP7Uk",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "video_id": "bjVIDXPP7Uk",
  "type": "video",
  "url": "https://www.youtube.com/watch?v=bjVIDXPP7Uk",
  "transcript": [
    {
      "text": "welcome back to the hell farm and the",
      "start_ms": "160",
      "end_ms": "1920",
      "start_time_text": "0:00"
    }
  ],
  "transcript_only_text": "welcome back to the hell farm and the backyard trails we built these jumps two years ago and last year we just kind of rebuilt them and this year......",
  "language": "English"
}