YouTube
18 endpoints.
- GET /v1/youtube/channel
- GET /v1/youtube/channel_videos
- GET /v1/youtube/channel_community_posts
- GET /v1/youtube/channel_lives
- GET /v1/youtube/channel_playlists
- GET /v1/youtube/channel_search
- GET /v1/youtube/channel_shorts
- GET /v1/youtube/community_post
- GET /v1/youtube/playlist
- GET /v1/youtube/search
- GET /v1/youtube/search_hashtag
- GET /v1/youtube/search_typeahead
- GET /v1/youtube/shorts_trending
- GET /v1/youtube/video
- GET /v1/youtube/video_comment_replies
- GET /v1/youtube/video_comments
- GET /v1/youtube/video_sponsors
- GET /v1/youtube/video_captions
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
| Name | In | Type | Description |
|---|---|---|---|
channel_id | query | string | YouTube channel ID. Can pass a channelId, handle or url |
handle | query | string | YouTube channel handle. Can pass a channelId, handle or url |
url | query | string | YouTube channel URL. Can pass a channelId, handle or url |
cache_max_age | query | string | 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). 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
| Name | In | Type | Description |
|---|---|---|---|
channel_id | query | string | YouTube channel ID |
handle | query | string | YouTube channel handle |
sort | query | string | Sort by latest or popular one of: latest, popular |
is_paid_promotions | query | string | Set 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_extras | query | string | 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 this param, the error rate is higher. We might deprecate this param in the future. |
next_cursor_token | query | string | Continuation 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
| Name | In | Type | Description |
|---|---|---|---|
channel_id | query | string | YouTube channel ID |
handle | query | string | YouTube channel handle |
next_cursor_token | query | string | Continuation 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
| Name | In | Type | Description |
|---|---|---|---|
channel_id | query | string | YouTube channel ID |
handle | query | string | YouTube channel handle |
next_cursor_token | query | string | Continuation 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
| Name | In | Type | Description |
|---|---|---|---|
channel_id | query | string | YouTube channel ID |
handle | query | string | YouTube channel handle |
next_cursor_token | query | string | Continuation 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_search
Channel Search
Search within one YouTube channel using YouTube's native channel search, not global search or local filtering of the channel's latest videos. Pass a handle with or without @ and a keyword query. Results can include videos, Shorts, live streams and playlists in separate collections. Keep the same handle and query when passing the previous response's continuationToken. Stop when continuationToken is null; passing the literal continuationToken=null returns an uncharged terminal response. Each successful page costs 1 credit, including pages with no matches; invalid requests and retrieval failures are not charged. YouTube can repeat results across pages, so deduplicate by item ID if needed. No sort, date, duration or result-count filters are supported by this endpoint. The response example is shortened from a real search; result order, counts and pagination tokens can change.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
handle required | query | string | YouTube channel handle, with or without @. |
query required | query | string | Keywords to search within this channel. |
next_cursor_token | query | string | Token from the previous response. Keep the same handle and query; stop when the token is null. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_search?handle=NASA&query=artemis" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/channel_search?handle=NASA&query=artemis", {
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_search?handle=NASA&query=artemis",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"videos": [
{
"type": "video",
"id": "_eeZQw9PBc0",
"url": "https://www.youtube.com/watch?v=_eeZQw9PBc0",
"title": "Artemis II Launches Astronauts to the Moon (Official NASA Recap)",
"thumbnail": "https://i.ytimg.com/vi/_eeZQw9PBc0/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLC59RvmXk61RYq4qq4Wv2WFDDJQcA",
"channel": {
"id": "UCLA_DiR1FfKNvjuUpBHmylQ",
"title": "NASA",
"handle": "NASA",
"thumbnail": "https://yt3.googleusercontent.com/eIf5fNPcIcj9ig-wZBeq4stFy1lgjWTW1nLT5dYlFkHZprZ03QBiMcbpwNMB6XSBjrSFGtAGQg=s68-c-k-c0x00ffffff-no-rj"
},
"view_count_text": "1,649,926 views",
"view_count_int": 1649926,
"published_time_text": "6mo ago",
"published_time": null,
"length_text": "2:24",
"length_seconds": 144,
"badges": [
"CC"
]
}
],
"channels": [],
"playlists": [
{
"type": "playlist",
"id": "PL2aBZuCeDwlQvNtHhNJtarm9OewQwVntv",
"title": "Artemis II Mission Coverage",
"thumbnail": "https://i.ytimg.com/vi/DYY4nnfxKbU/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAi1OCwehE4YN4-jFbe-SlII4gyyw",
"channel": {
"id": "UCLA_DiR1FfKNvjuUpBHmylQ",
"title": "NASA · Playlist"
},
"video_count": "23 videos"
}
],
"shorts": [
{
"type": "short",
"id": "vMGuObY8_sw",
"url": "https://www.youtube.com/watch?v=vMGuObY8_sw",
"title": "Relive NASA's Artemis II Launch",
"thumbnail": "https://i.ytimg.com/vi/vMGuObY8_sw/hq2.jpg?sqp=-oaymwFBCNACELwBSFryq4qpAzMIARUAAIhCGADYAQHiAQoIGBACGAY4AUAB8AEB-AG2CIACgA-KAgwIABABGHIgWyg-MA8=&rs=AOn4CLDHJ3...",
"channel": {
"id": "UCLA_DiR1FfKNvjuUpBHmylQ",
"title": "NASA",
"handle": "NASA",
"thumbnail": "https://yt3.googleusercontent.com/eIf5fNPcIcj9ig-wZBeq4stFy1lgjWTW1nLT5dYlFkHZprZ03QBiMcbpwNMB6XSBjrSFGtAGQg=s68-c-k-c0x00ffffff-no-rj"
},
"view_count_text": "2,724,313 views",
"view_count_int": 2724313,
"published_time_text": "6mo ago",
"published_time": null,
"length_text": "0:33",
"length_seconds": 33,
"badges": [
"CC"
]
}
],
"shelves": [],
"lives": [
{
"type": "live",
"id": "nfhDuOHMp0A",
"url": "https://www.youtube.com/watch?v=nfhDuOHMp0A",
"title": "NASA’s Artemis II Crew Comes Home (Official Broadcast)",
"thumbnail": "https://i.ytimg.com/vi/nfhDuOHMp0A/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLAjOO178lfqwhZPRUo8SdcXZDfO8w",
"channel": {
"id": "UCLA_DiR1FfKNvjuUpBHmylQ",
"title": "NASA",
"handle": "NASA",
"thumbnail": "https://yt3.googleusercontent.com/eIf5fNPcIcj9ig-wZBeq4stFy1lgjWTW1nLT5dYlFkHZprZ03QBiMcbpwNMB6XSBjrSFGtAGQg=s68-c-k-c0x00ffffff-no-rj"
},
"view_count_text": "27,771,040 views",
"view_count_int": 27771040,
"published_time_text": "Streamed 6mo ago",
"published_time": null,
"length_text": "3:53:41",
"length_seconds": 14021,
"badges": [
"CC"
]
}
],
"next_cursor_token": "CONTINUATION_TOKEN_FROM_RESPONSE"
}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
| Name | In | Type | Description |
|---|---|---|---|
handle | query | string | Can pass channelId or handle |
channel_id | query | string | Can pass channelId or handle |
sort | query | string | Sort by newest or popular one of: newest, popular |
next_cursor_token | query | string | Continuation 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
| Name | In | Type | Description |
|---|---|---|---|
url required | query | string | The 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
| Name | In | Type | Description |
|---|---|---|---|
playlist_id required | query | string | The ID of the YouTube playlist. In the YouTube URL it will be the 'list' parameter. |
next_cursor_token | query | string | Token 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
Search
Searches YouTube by keyword query and returns matching videos, channels, playlists, shorts, shelves, and live streams. Each video result includes title, URL, thumbnail, view count (views), publish date, duration, channel info, and badges. Supports filtering by upload date, sorting by relevance or popularity, and paginating with continuationToken. Set is_paid_promotions=true to search YouTube videos with the paid product placement / sponsorship disclosure.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
query required | query | string | Search query. For stricter title matching, use YouTube's intitle: operator, for example intitle:"Foursquare Swarm". Quoted queries by themselves may still be broadened by YouTube when no fresh exact matches are available. |
upload_date | query | string | Upload date one of: today, this_week, this_month, this_year |
sort_by | query | string | Sort by one of: relevance, popular |
type | query | string | Type of content to search for one of: videos, shorts, channels, playlists |
duration | query | string | Duration of the video. Only applies to videos (not shorts). one of: under_3_min, between_3_and_20_min, over_20_min |
region | query | string | 2 letter country code of the country to put the proxy in. |
include_extras | query | string | 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. *This will slow down the response slightly.* |
next_cursor_token | query | string | Continuation token to get more videos. Get 'continuationToken' from previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/search?query=example" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/search?query=example", {
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?query=example",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"videos": [
{
"type": "video",
"id": "BzSzwqb-OEE",
"url": "https://www.youtube.com/watch?v=BzSzwqb-OEE",
"title": "NF - RUNNING (Audio)",
"thumbnail": "https://i.ytimg.com/vi/BzSzwqb-OEE/hq720.jpg?sqp=-oaymwEnCNAFEJQDSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLCasEKav1CLqeSSE2IYDqjGiIMBGw",
"channel": {
"id": "UCoRR6OLuIZ2-5VxtnQIaN2w",
"title": "NFrealmusic",
"handle": "channel/UCoRR6OLuIZ2-5VxtnQIaN2w",
"thumbnail": "https://yt3.ggpht.com/J1_Si0TYNZ-991v09y8RpCh4_Z_ALwKmPgMYnJqjNhoglVtipf3oEN8LpzG1kS0qsv8Jptpmmg=s88-c-k-c0x00ffffff-no-rj"
},
"view_count_text": "14,860,541 views",
"view_count_int": 14860541,
"published_time_text": "2 years ago",
"published_time": "2023-05-28T17:08:46.499Z",
"length_text": "4:14",
"length_seconds": 254,
"badges": []
}
],
"channels": [],
"playlists": [],
"shorts": [
{
"type": "short",
"id": "uMNvF-lSCHg",
"url": "https://www.youtube.com/watch?v=uMNvF-lSCHg",
"title": "LONG RUN ROUTINE #run #runvlog #runner #shorts #morning",
"thumbnail": "https://i.ytimg.com/vi/uMNvF-lSCHg/hq720.jpg?sqp=-oaymwFBCNAFEJQDSFryq4qpAzMIARUAAIhCGADYAQHiAQoIGBACGAY4AUAB8AEB-AG2CIACgA-KAgwIABABGFsgXyhlMA8=&rs=AOn4CLA_...",
"channel": {
"id": "UCGRdcRxpJWi5Q2oDCrMDUuQ",
"title": "Abby and Ryan",
"handle": "abbyandryan",
"thumbnail": "https://yt3.ggpht.com/8UdUEesepx1Ry_rFUPJOJgndTCKno9VTkSysnuJpFjMj63N6av0pNwnqoiKh_7PN2dw7PGIp=s68-c-k-c0x00ffffff-no-rj"
},
"view_count_text": "462,705 views",
"view_count_int": 462705,
"published_time_text": "10 months ago",
"published_time": "2024-07-28T17:08:46.498Z",
"length_text": "0:44",
"length_seconds": 44,
"badges": []
}
],
"shelves": [
{
"type": "shelf",
"title": "Shorts",
"items": [
{
"type": "short",
"id": "LLBR5nO05tE",
"url": "https://www.youtube.com/watch?v=LLBR5nO05tE",
"title": "running through walls gone wrong",
"thumbnail": "https://i.ytimg.com/vi/LLBR5nO05tE/oardefault.jpg?sqp=-oaymwEoCJUDENAFSFqQAgHyq4qpAxcIARUAAIhC2AEB4gEKCBgQAhgGOAFAAQ==&rs=AOn4CLCYYIIDmBllgkLP68AjVs25UpyevQ",
"view_count_text": "750K",
"view_count_int": 750000
}
]
}
],
"lives": [],
"next_cursor_token": "EooDEg..."
}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
| Name | In | Type | Description |
|---|---|---|---|
hashtag required | query | string | Hashtag to search for |
type | query | string | Search for all types of content or only shorts one of: all, shorts |
next_cursor_token | query | string | Continuation 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
| Name | In | Type | Description |
|---|---|---|---|
query required | query | string | Partial 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/shorts_trending
Trending Shorts
Fetches approximately 48 currently trending YouTube Shorts (viral/popular short-form videos) per call, returning each short's title, URL, thumbnail, view count (views), like count (likes), comment count, publish date, channel info, keywords, and duration. Each subsequent call returns a fresh batch of different trending shorts.
Parameters
No parameters.
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/youtube/shorts_trending" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/youtube/shorts_trending", {
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/shorts_trending",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"shorts": [
{
"id": "ou0nl5ET0HA",
"thumbnail": "https://img.youtube.com/vi/ou0nl5ET0HA/maxresdefault.jpg",
"url": "https://www.youtube.com/watch?v=ou0nl5ET0HA",
"title": "That hooper who says their just shoes",
"description": null,
"comment_count_text": "168",
"comment_count_int": 168,
"like_count_text": "151957",
"like_count_int": 151957,
"view_count_text": "13,798,774",
"view_count_int": 13798774,
"publish_date_text": "Aug 7, 2025",
"publish_date": "2025-08-07T13:00:22-07:00",
"channel": {
"id": "UC3iObCgKLKr9xquQw7fCang",
"url": "https://www.youtube.com/@dameuniverse",
"handle": "dameuniverse",
"title": "Dame Universe"
},
"chapters": [],
"keywords": [
"Kobe"
],
"duration_ms": 19000,
"duration_formatted": "00:00:19"
}
]
}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
| Name | In | Type | Description |
|---|---|---|---|
url required | query | string | YouTube video or short URL |
language | query | string | Preferred 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_age | query | string | 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). 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
| Name | In | Type | Description |
|---|---|---|---|
next_cursor_token required | query | string | Continuation 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
| Name | In | Type | Description |
|---|---|---|---|
url required | query | string | YouTube video URL |
order | query | string | Order of comments one of: top, newest |
next_cursor_token | query | string | Continuation 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
| Name | In | Type | Description |
|---|---|---|---|
url required | query | string | YouTube video or short URL |
language | query | string | 2 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
| Name | In | Type | Description |
|---|---|---|---|
url required | query | string | YouTube video or short URL |
language | query | string | Language 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_audio | query | boolean | Set 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_age | query | string | 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). 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"
}