YouTube Data API Quota in 2026: Search Now Has Its Own 100-a-Day Limit
The YouTube Data API gives every project 10,000 quota units a day, but search no longer comes out of that pool. Since June 2026, search.list and video uploads each have their own bucket of 100 calls a day. Everything else still shares the 10,000 units.
That's a real change. A lot of guides, including ones published this year, still say a search costs 100 units of your 10,000. It doesn't anymore. Here's how the quota works now, what it buys, and where it runs out.
How the quota works in 2026
| Bucket | Default daily limit | What uses it |
|---|---|---|
| Main quota | 10,000 units | Almost every method, at 1 unit for most reads |
| Search | 100 calls | search.list, 1 per call |
| Uploads | 100 calls | videos.insert, 1 per call |
| Batch stats | 10,000 units | videos.batchGetStats, 1 unit per call |
Three rules apply everywhere. Every request costs at least one unit, including invalid ones. Each extra page of results costs the same as the first. And all quotas reset at midnight Pacific Time.
These limits come from Google's quota calculator, last updated 15 October 2026.
What changed this year
| Date | Change |
|---|---|
| 4 December 2025 | A video upload dropped from about 1,600 units to about 100 |
| 1 June 2026 | Granular quotas: search.list and videos.insert moved to their own buckets |
| 3 June 2026 | New videos.batchGetStats method, 1 unit, with its own 10,000-unit bucket |
| 27 August 2026 | Public views now count when a video starts playing, for long-form, Live and Shorts |
All of these are in YouTube's revision history. The view count change matters even if you never touch quota: it changed what viewCount means. We measured what it did to the numbers in our study of the view count change. On the median channel, likes per view fell by 41% for videos published after it.
What each read call costs
| Method | Cost | Returns per call |
|---|---|---|
videos.list | 1 unit | Up to 50 videos |
videos.batchGetStats | 1 unit (own bucket) | Views, likes, comments and duration for a list of video IDs |
channels.list | 1 unit | Up to 50 channels |
playlistItems.list | 1 unit | Up to 50 items, so a channel's uploads, 50 at a time |
commentThreads.list | 1 unit | Up to 100 top-level comments |
comments.list | 1 unit | Replies to a comment |
search.list | 1 call of 100 a day | Up to 50 results |
captions.list | 50 units | The caption tracks on a video |
captions.download | 200 units | One caption track, only for videos you can edit |
Writes cost more. Inserting a comment, a playlist or a subscription, updating a video, rating one or setting a thumbnail each cost 50 units.
What 10,000 units actually buys
For reading public data, the main quota goes a long way:
| Job | Calls | Units | Fits in a day? |
|---|---|---|---|
| Stats for 10,000 videos | 200 videos.list calls | 200 | Yes, 50 times over |
| Every upload from 100 channels with 500 videos each | 1,000 playlistItems.list pages | 1,000 | Yes |
| 50,000 top-level comments | 500 commentThreads.list pages | 500 | Yes |
| 100 keyword searches | 100 search.list calls | Search bucket | Just |
| 500 keyword searches | 500 search.list calls | Search bucket | No, 5 days |
| Transcripts for 100 videos you don't own | Not possible | None | No |
If your job is stats and comments for videos you already know, the official API is hard to beat. It's free, and 10,000 units covers a lot of ground. Add videos.batchGetStats and you get another 10,000 units a day just for view, like and comment counts.
Where the official API runs out
- Search. 100 searches a day, at up to 50 results each, is 5,000 results. Brand monitoring across many keywords, or finding new creators every day, needs more.
- Transcripts.
captions.downloadonly works on videos you have permission to edit. You can't pull the transcript of someone else's video, however much quota you have. - More quota. Going past the defaults means a compliance audit and the quota extension form. It's free, but it takes time and you need to fit YouTube's policies.
- Setup. You need a Google Cloud project and an API key, plus OAuth for anything tied to a channel.
When to use the official API, and when not to
Use the official API for your own channel, for anything that writes (uploads, comments, playlists), and for bulk stats on videos you already have IDs for. It's free, it's official, and the quota is generous for reads.
Use a data API when you need more than 100 searches a day, transcripts of videos you don't own, or one key that also covers TikTok, Instagram and other platforms. SociaVault's YouTube endpoints have no daily quota. Each call costs 1 credit:
| Endpoint | Returns | Cost |
|---|---|---|
| Search | Videos for a keyword, with paging | 1 credit per page |
| Channel videos | About 30 long-form uploads with views, likes, comments and length | 1 credit |
| Channel Shorts | A channel's Shorts | 1 credit |
| Video transcript | The transcript of any public video | 1 credit |
| Video comments | About 20 comments per page | 1 credit |
Many teams use both: the official API for stats on known videos, and a data API for search and transcripts.
Code: the same search both ways
With the official API, a search uses one of your 100 daily calls. In JavaScript (Node 18 or later, as an .mjs file):
const params = new URLSearchParams({
part: "snippet",
q: "home workout",
type: "video",
maxResults: "50",
key: process.env.YOUTUBE_API_KEY,
});
const res = await fetch(
`https://www.googleapis.com/youtube/v3/search?${params}`,
);
// Once the day's quota is gone, this fails with 403 quotaExceeded
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
for (const item of (await res.json()).items ?? []) {
console.log(item.id.videoId, item.snippet.title);
}
And in Python:
import os
import requests
r = requests.get("https://www.googleapis.com/youtube/v3/search", params={
"part": "snippet",
"q": "home workout",
"type": "video",
"maxResults": 50,
"key": os.environ["YOUTUBE_API_KEY"],
}, timeout=30)
r.raise_for_status() # once the day's quota is gone, this fails with 403 quotaExceeded
for item in r.json().get("items", []):
print(item["id"]["videoId"], item["snippet"]["title"])
The official search returns IDs and titles. Views and lengths need a second call to videos.list (1 unit for up to 50 videos).
With SociaVault, the results already include views and length, and there's no daily cap. In JavaScript:
// Lists can come back as arrays or as objects with numbered keys
const asList = (x) => (Array.isArray(x) ? x : Object.values(x ?? {}));
const params = new URLSearchParams({
query: "home workout",
uploadDate: "this_month",
});
const res = await fetch(
`https://api.sociavault.com/v1/scrape/youtube/search?${params}`,
{
headers: { "x-api-key": process.env.SOCIAVAULT_API_KEY },
},
);
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
const data = (await res.json()).data ?? {};
for (const v of asList(data.videos)) {
console.log(v.id, v.viewCountInt, v.lengthSeconds, v.title);
}
And in Python:
import os
import requests
def as_list(x):
# Lists can come back as lists or as dicts with numbered keys
return list(x.values()) if isinstance(x, dict) else (x or [])
r = requests.get("https://api.sociavault.com/v1/scrape/youtube/search",
headers={"x-api-key": os.environ["SOCIAVAULT_API_KEY"]},
params={"query": "home workout", "uploadDate": "this_month"},
timeout=60)
r.raise_for_status()
for v in as_list((r.json().get("data") or {}).get("videos")):
print(v.get("id"), v.get("viewCountInt"), v.get("lengthSeconds"), v.get("title"))
Frequently Asked Questions
What is the YouTube Data API quota limit?
10,000 units a day by default for most methods. Since June 2026, search.list and videos.insert each have a separate limit of 100 calls a day, and videos.batchGetStats has its own 10,000 units.
How many searches can I do with the YouTube API per day?
100 by default, each returning up to 50 results. Searches no longer use your main 10,000-unit quota.
How much does a YouTube API search cost in units?
It's now counted as 1 call in the search bucket, which allows 100 a day. The old rule of 100 units per search, out of 10,000, no longer applies.
When does the YouTube API quota reset?
At midnight Pacific Time, every day.
Can I get transcripts from the YouTube Data API?
Only for videos you have permission to edit, and each download costs 200 units. For other videos you need a different source, such as a transcript API.
How do I get more YouTube API quota?
Apply through YouTube's quota extension form. Going past the default quota requires passing an API compliance audit.
Need more than 100 YouTube searches a day, or transcripts of any video? Sign up for 50 free credits and try the search snippet above.
Found this helpful?
Share it with others who might benefit
Ready to Try SociaVault?
Start extracting social media data with our powerful API. No credit card required.