Video platforms
YouTube API
Retrieve public YouTube channels, their videos, Shorts, playlists, live streams and posts, video details, transcripts and inferred sponsors, search and suggestions, comments and replies, trending Shorts, playlists and community posts.
Retrieve YouTube channels, videos, Shorts, playlists, live streams and community posts. Search by keyword or hashtag, read suggestions, comments and replies, retrieve transcripts and infer sponsors, with pagination tokens.
API availability: Available
http://localhost:3026Public API: https://api.scrapeatlas.com.Endpoints
/v1/youtube/channelGet a YouTube channel
Retrieve a public YouTube channel by channelId, handle, url or forUsername, with identity, statistics, links, keywords, avatar and banner.
Reference/v1/youtube/channel-videosList a channel's videos
Read one page of a channel's Videos tab (30 videos) in the list shape: videos with title, URL, thumbnail, channel, view count, relative publish time with its computed timestamp, duration and badges, plus the continuation token for the next page. sort=latest (default) or popular. includeExtras=true adds per-video description, like and comment counts, publish date, genre and duration from two public API reads per video; extrasDetail=player halves that to the player read alone.
Reference/v1/youtube/channel/shortsList a channel's Shorts
Retrieve a page of channel Shorts with views, descriptions, engagement, publication dates, genre and duration. Select newest or popular sorting.
Reference/v1/youtube/channel/playlistsList a channel's playlists
Retrieve a page of channel playlists with identifiers, titles, thumbnails, URLs, video counts, first videos and channel information. Pass the continuation token for the next page.
Reference/v1/youtube/channel/livesList a channel's live streams
Read one page of a channel's Live tab (30 streams): upcoming, live and past streams with title, URL, thumbnail, view or waiting count, displayed time text, duration and a continuation token. Items are returned in lives.
Reference/v1/youtube/channel/community-postsList a channel's community posts
Read one page of a channel's Posts tab: post ID and URL, channel, text, attached images, like count, relative publish time with its computed timestamp and the attached video when the post links one, with a continuation token when more exist.
Reference/v1/youtube/videoGet a video or Short
Retrieve a YouTube video with title, description, engagement, publication date, uploader, chapters, recommendations, genre, duration, caption tracks, format metadata, replay graph and paid-promotion information.
Reference/v1/youtube/video/transcriptGet a video transcript
Read the public caption track of a video or Short: the timed transcript (text, startMs, endMs, startTimeText), the plain text, the track's language name and every available caption track. The track is the last one whose language code matches the requested language (English by default), which prefers the auto-generated track when both exist. Without a matching track the transcript fields are null and the response is partial.
Reference/v1/youtube/video/sponsorsInfer a video's sponsors
Experimental. Reads the watch page and, when available, the transcript, reports YouTube's paid-promotion disclosure and infers suspected sponsors from sponsorship phrases, promotional description links, promo codes and transcript mentions. Every suspected sponsor carries its evidence and a confidence; this is inference, not a YouTube field.
Reference/v1/youtube/searchSearch YouTube
Search YouTube videos, channels, playlists, Shorts, shelves and live streams, with continuation. Filter by upload date, sort, type, duration and region. Set includeExtras=true for expanded video records.
Reference/v1/youtube/search/typeaheadGet search suggestions
Return the live suggestions YouTube shows while typing a query: each suggestion's text and whether it is a plain query or a channel; channel suggestions carry the channel ID, handle, name and thumbnail.
Reference/v1/youtube/search/hashtagSearch by hashtag
Search YouTube for a hashtag (the quoted "#tag" query) and return one page of matching videos and Shorts in the list shape, with a continuation token. type=shorts restricts results to Shorts.
Reference/v1/youtube/video/commentsList a video's comments
Read one page (20) of a video's top-level comments through the public comments continuation: text, author (name, channel ID, verified and creator flags, avatar, channel URL), relative publish time with its computed timestamp, like and reply counts, and a repliesContinuationToken for the replies operation. order=top (default) or newest; pass continuationToken for further pages.
Reference/v1/youtube/video/comment/repliesList a comment's replies
Read one page of replies to a comment using the repliesContinuationToken from the comments operation, or the continuationToken of a previous replies response. Replies use the same comment shape with replyLevel 1.
Reference/v1/youtube/shorts/trendingList trending Shorts
Retrieve a batch of YouTube Shorts with titles, descriptions, engagement, publication dates, channels, chapters, genres and durations.
Reference/v1/youtube/playlistGet a playlist
Read a public playlist through the public browse API and follow its continuations (up to ten pages, about 1,100 videos): title, owner, total video count and every video's ID, title, thumbnail, URL, duration and channel. Longer playlists are returned truncated with playlist_truncated.
Reference/v1/youtube/community-postGet a community post
Read one public community post page: ID, channel, text, attached images, like count, relative publish time with its computed timestamp and the attached video when present. The page must describe the requested post; missing posts answer 404.
ReferenceQuick start
Create an API key on your account page, then call the public API. Values below are placeholders.
curl "https://api.scrapeatlas.com/v1/youtube/channel?handle=ExampleChannel" \
-H "x-api-key: YOUR_API_KEY"Coverage & limits
- Four concurrent requests per worker; saturation returns 503 busy. One page or record per request: list operations return one page (30 videos, 48 Shorts, 30 playlists, 30 streams, 10 posts, 20 comments, one search page) and YouTube's continuation token; the caller carries tokens, nothing is stored.
- Base operations (channel, playlists, lives, posts, typeahead, hashtag, comments, replies, community post): 20-second deadline (video, transcript, sponsors and playlist reads: 30 seconds), at most four upstream HTTP attempts (handle resolution, the channel browse, the About panel or sort continuation, and one transient network/5xx retry), 8 MiB decoded bytes (playlist reads follow up to ten continuations under a 12-attempt, 16 MiB budget; sponsors read the page, the Android player and one caption track under five attempts).
- Enrichment operations (channel Shorts, includeExtras on channel-videos and search, trending Shorts): two small public API calls per video (player metadata and watch-next data, issued together; one with extrasDetail=player), 12 videos at a time, at most 48 videos, 128 upstream attempts, 32 MiB decoded bytes and a 60-second deadline. Videos whose details could not be read keep null extras (extras_incomplete) instead of failing the request; an exhausted budget ends the batch early and batches stop starting reads eight seconds before the deadline. Trending Shorts read the feed page plus at most six sequence continuations while enrichment already runs.
- Every parsed document is bounded to depth 96 and 1,000,000 nodes; oversized or malformed responses fail explicitly (response_too_large, payload_too_complex, unsupported_page). A redirect to Google's "sorry" interstitial (an over-used address) is reported as 429 upstream_rate_limited.
- Logged-out reads of the fixed www.youtube.com origin (pages, the public navigation resolver, browse, next, search, player and reel sequence routes and timed text) and the public suggest origin only: no cookies, consent bypass, account session, API key or YouTube Data API quota. Thumbnails, avatars, download and caption URLs are returned as data and never fetched (the transcript operation reads exactly one caption track).
- Relative publish times ("6 days ago", "2w ago") are converted to timestamps at retrieval time; texts with a prefix ("Streamed 2 days ago", "Scheduled for …") keep a null timestamp. Displayed counts reflect the moment of retrieval.
- Channel-videos extras are read with includeExtras=true; transcript text is whitespace-normalised; sponsor inference is a heuristic with evidence and confidence on every suspected sponsor.
- No result cache, billing, shared database, or consuming-product dependency.
| HTTP | failure.code | Meaning |
|---|---|---|
| 400 | invalid_request | Missing, malformed, duplicate or conflicting parameters, unsupported parameters or an unsafe URL. |
| 400 | invalid_continuation | YouTube rejected the supplied continuation token. |
| 401 | unauthorized | Missing or invalid worker API key. |
| 403 | restricted_page | The channel, video, playlist or post is terminated, private, members-only or otherwise unavailable. |
| 403 | age_restricted | The video is age restricted and cannot be read logged out. |
| 404 | not_found | YouTube reports no channel, video, playlist or post for the identifier. |
| 429 | upstream_rate_limited | YouTube rate limited the request; no automatic retry. |
| 502 | upstream_challenged | YouTube rejected or challenged the request. |
| 502 | unsupported_page | The response lacks the embedded data, the data is malformed, or the resolved identity does not match the request. |
| 502 | response_too_large payload_too_complex | The response exceeded byte, depth or node limits. |
| 502 | unsafe_redirect request_limit upstream_error | The bounded request could not complete. |
| 503 | busy | All worker slots are in use. |
| 504 | timeout | The total retrieval deadline expired. |