YouTube data API: the official API or an Apify Actor?
YouTube has a public official API. 17 Apify Actors in this catalogue return YouTube data over HTTP too: send the input to Apify's run-sync endpoint with your token and get the records back as JSON, from $0.40 a run plus $0.99 per 1,000 results at Store prices (plus platform usage). One answers a single request directly in server mode.
Side by side
| YouTube Data API v3 | Apify Actors (17) | |
|---|---|---|
| Access | Public, self-serve | Apify API token (any account) |
| What you get | The Data API exposes public video, channel, playlist and comment data. Each project receives a daily quota measured in units. | Rows defined by each Actor's published schema; up to 70 fields per record |
| Price | No per-call fee is published; the constraint is the daily quota. Extra quota is not self-serve. | From $0.40 a run plus $0.99 per 1,000 results (Store price, Free plan), plus platform usage |
| Limits | The default allocation is 100 search.list calls per day, 100 videos.insert calls per day, and 10,000 quota units per day combined for other endpoints. Captions for videos you do not own are not available through the API. | Synchronous calls wait up to 300 s; longer runs go asynchronous |
| Docs | YouTube Data API v3 | Apify API: run-sync |
Official API facts checked 2026-11-09. Use the API and public pages within YouTube's terms; transcripts are not an official public API; not legal advice.
Which Actor for which job
All of them list $0.99 per 1,000 results on the Store, plus a start fee per run.
| Actor | Returns | Fields include | Call it |
|---|---|---|---|
| YouTube Channel About, Playlists & Posts Finder | Channel profile rows with About details, external links, and optional nested surfaces, plus one-row-per-playlist and… | channelName, title, handle | run-sync · Apify |
| YouTube Channel Video Catalog & Profile Scraper | YouTube channel profile metadata and video, Shorts, playlist, podcast, course, release, and live-stream rows with exact views… | title, videoId, viewCount | run-sync · Apify |
| YouTube Channel Video Feed Quick Scraper | One row per video with recordType/sourceUrl, exact publish date, like count, category, tags, optional comment count, view/like… | title, videoId, viewCount | run-sync · Apify |
| YouTube Community Tab Post & Poll Scraper | Community posts with exact dates, engagement, images, polls, quizzes, playlists, reposts and comment threads, plus… | postId, postType, channelName | run-sync · Apify |
| YouTube Hashtag Video & Shorts Ranking Scraper | Videos and Shorts ranked under the requested hashtags, with view count, channel info and hashtag totals. | hashtag, videoId, title | run-sync · Apify |
| YouTube Live Stream & Replay Chat Extractor | Chat events with authors, replay offsets, Super Chat and gift amounts, membership detail, badges, stream metadata and optional… | videoId, eventType, authorName | run-sync · Apify |
| YouTube Playlist Contents & Channel Playlist Finder | Playlist video rows with exact views, likes, publish dates and unavailable placeholders, plus channel collection and… | title, videoId, playlistTitle | run-sync · Apify |
| YouTube Search Results & Entity Type Scraper | Search result rows for videos, Shorts, channels, playlists, and movies, with optional exact dates, views, likes, categories… | videoId, title, channelName | run-sync · Apify |
| YouTube Search Suggestions Scraper | Autocomplete suggestion rows with seed, expansion type, rank, locale, source, search URL and channel/topic metadata when… | suggestion, seed, locale | One request · Apify |
| YouTube Shorts Metadata Extractor for Channels & Hashtags | YouTube Shorts with exact view, like, comment, date, duration, category and sound metadata, scraped by channel, hashtag, keyword… | title, videoId, viewCount | run-sync · Apify |
| YouTube SponsorBlock Segments Scraper | SponsorBlock segment rows, per-video/run summaries, and truthful per-video status rows. | videoId, category, actionType | run-sync · Apify |
| YouTube Trending Feed Extractor by Category & Market | Ranked YouTube chart entries and category-hub videos with rank movement, exact video details and status rows. | sourceName, title, channelName | run-sync · Apify |
| YouTube Video Comment & Reply Thread Scraper | Flat comment and reply rows with author identity, rounded engagement counts, honest approximate dates, thread fields, video… | commentId, authorName, text | run-sync · Apify |
| YouTube Video Metadata & Chapter Extractor | One record per video with exact metadata, manual and automatic chapters, heatmap segments, caption-track availability, live and… | videoId, title, channelName | run-sync · Apify |
| YouTube Video, Playlist & Channel Downloader with Metadata | YouTube video metadata, media files, captions, transcripts, and honest failure rows. | video_url, title, uploader | run-sync · Apify |
| YouTube Caption & Whisper AI Transcript Extractor | One record per video with its transcript (segments, full text, SRT/VTT, optional word timings), caption/translation metadata… | video_id, title, channel_name | run-sync · Apify |
| YouTube Channel Contact Email Finder | Dataset of YouTube channel contact records with channel metadata, public emails and their sources, links, socials, and… | channelId, handle, name | run-sync · Apify |
Call YouTube Search Suggestions Scraper
Server mode is on for this Actor (checked 2026-11-12): one request returns the results in the response. Set APIFY_TOKEN first; runs bill to that account.
curl (GET)
curl -H "Authorization: Bearer $APIFY_TOKEN" \
"https://dataspryva--youtube-search-suggestions-scraper.apify.actor/?queries=web%20scraping&maxItems=10" curl (POST)
curl -X POST "https://dataspryva--youtube-search-suggestions-scraper.apify.actor/" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries":["web scraping"],"maxItems":10}' JavaScript
// Node 18+ or any runtime with fetch. One request = one lookup; results come back in the response.
const response = await fetch("https://dataspryva--youtube-search-suggestions-scraper.apify.actor/", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.APIFY_TOKEN}`, "Content-Type": "application/json" },
body: JSON.stringify({
"queries": [
"web scraping"
],
"maxItems": 10
}),
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const items = await response.json();
console.log(items.length, items[0]); Python
import os
import requests
# One request = one lookup; results come back in the response.
response = requests.post(
"https://dataspryva--youtube-search-suggestions-scraper.apify.actor/",
headers={"Authorization": f"Bearer {os.environ['APIFY_TOKEN']}"},
json={
"queries": [
"web scraping",
],
"maxItems": 10,
},
timeout=300,
)
response.raise_for_status()
items = response.json()
print(len(items), items[:1]) Generated from the Actor's published schema and checked, not executed.
Same data, other routes
- YouTube MCP server: these Actors as tools in Claude, Cursor, ChatGPT, VS Code and Codex.
- YouTube comments to Google Sheets: an n8n workflow you can import.
- YouTube transcripts to Notion: an n8n workflow you can import.
- YouTube new videos to Slack: an n8n workflow you can import.
- YouTube channel videos to Google Sheets: an n8n workflow you can import.
- Every Actor with a one-request API
When a call fails
Why does the workflow or script stop with HTTP 408?
The synchronous endpoint waits at most 300 seconds. After that it answers 408 while the run keeps going in Apify. Lower the result limit, or start the run asynchronously, wait for it to finish and then read its dataset.
Source: Apify API: run Actor synchronously and get dataset items
What do 400, 401, 402 and 403 from the Apify API mean?
Read error.type in the response body. 400 is invalid Actor input. 401 (user-or-token-not-found) means a token reached Apify but it is wrong or revoked. 402 with x402-payment-required means no token reached Apify at all: the n8n credential or the Authorization: Bearer header is missing, and Apify is offering its pay-per-run x402 route for agents instead; any other 402 is an exhausted usage limit on the account that pays for the run. 403 is a token without permission for that Actor or storage.
Source: Apify API: authentication; Apify documentation: agentic payments with x402; Apify API: run Actor synchronously and get dataset items
Why does a server-mode request answer 429?
If no Actor run can take the request within 2 minutes, Apify answers 429; the first response must also arrive within 5 minutes. Retry after a short pause, and send one request at a time while you test.
How do I authenticate server-mode requests?
Send Authorization: Bearer with your Apify API token. A token query parameter also works and is stripped before the request reaches the Actor, but a header keeps the token out of logs and browser history.
Questions
Is there an official YouTube API?
The Data API exposes public video, channel, playlist and comment data. Each project receives a daily quota measured in units. No per-call fee is published; the constraint is the daily quota. Extra quota is not self-serve.
How much does YouTube data cost through an Apify Actor?
The Actors listed here charge from $0.40 a run plus $0.99 per 1,000 results on the Apify Store (Free plan), checked 2026-11-12, billed to the Apify account whose token makes the call. Actor start events and platform usage can add to that.
Can I get YouTube data as JSON in one HTTP request?
Yes. YouTube Search Suggestions Scraper has server mode on: a GET or POST to the Actor's own URL returns the results in the response. Every other Actor here works through POST /v2/actors/<id>/run-sync-get-dataset-items, which waits up to 300 seconds for the run.
Can an AI agent use the same YouTube data?
Yes. The YouTube MCP page bundles these Actors into one Apify MCP URL for Claude, Cursor, ChatGPT, VS Code and Codex.
Is it allowed to collect YouTube data?
Use the API and public pages within YouTube's terms; transcripts are not an official public API; not legal advice. Read YouTube's terms before you build on the data.
Sources
- YouTube Data API v3 documentation, checked 2026-11-09
- YouTube Data API v3 pricing
- Apify API: run Actor synchronously, checked 2026-11-11
- YouTube terms