All posts

YouTube API Quota in 2026: Unit Costs, Calculator and Increases

November 9, 2026

Short answer

The YouTube API quota is 10,000 units per day per Google Cloud project, plus separate buckets of 100 search.list calls and 100 videos.insert calls. Most reads cost 1 unit per page, writes cost 50, and every request costs at least 1 unit even when it fails. Quota resets at midnight Pacific Time, and more requires a compliance audit through YouTube's Audit and Quota Extension Form.

The YouTube Data API v3 does not limit requests per second for most uses. It limits quota units per day, counted per Google Cloud project. Since June 2026 that budget is split into separate buckets, so the old rule of thumb ("a search costs 100 units") is out of date. This post covers how the quota is counted today, what each method costs, a worked daily budget, the error you get and how to ask for more. Whether the API costs money is covered in Is the YouTube API free?

How the YouTube API quota works

  • Three buckets. A project gets 100 search.list calls, 100 videos.insert calls, and 10,000 units a day for all other methods combined. Google's revision history dates the move to separate "granular" buckets to June 1, 2026.
  • A fourth bucket for stats. videos.batchGetStats, added June 3, 2026, costs 1 unit in its own bucket with a default of 10,000 units a day. It returns view, like and comment counts and duration for public videos with just an API key source.
  • Per project, not per key. All API keys and OAuth clients in one project draw from the same pool.
  • Daily reset. Quotas reset at midnight Pacific Time, so the reset hour in UTC moves with daylight saving.
  • Errors still cost. Every request, including an invalid one, costs at least 1 unit.
  • Every page costs. Fetching page 2 of a list costs the same as page 1.
  • Live streaming shares it. Live Streaming API methods draw from the same quota.

YouTube API quota cost per method

MethodCostItems per call
search.list1 call from the 100-a-day search bucketUp to 50 results source
videos.list, channels.list, playlistItems.list1 unitUp to 50 per page; batch IDs in one call
commentThreads.list, comments.list1 unitUp to 100 threads source
videos.batchGetStats1 unit, own 10,000-unit bucketA comma-separated list of IDs
captions.list50 unitsTrack list for one video
captions.insert / captions.update400 / 450 unitsOne track
Any insert, update or delete on playlists, comments, subscriptions, thumbnails50 unitsOne item
liveChatMessages.list5 unitsOne page of chat
liveChatBans.insert, liveChatModerators.insert200 unitsOne action
videos.insert1 call from the 100-a-day upload bucketOne upload

The full table is Google's Quota Calculator page. Read costs are flat per call, not per item, so a 50-item page costs the same as a 1-item page.

YouTube API quota calculator: a worked daily budget

Say you track 200 competitor channels. Each day you refresh channel stats, collect new uploads, refresh stats on each channel's last 50 videos, pull 10 pages of comments on 100 new videos, and run 20 keyword searches 5 pages deep.

TaskMathUnitsBucket
Channel stats200 channels, 50 IDs per call4Main
New uploads1 playlistItems.list page per channel200Main
Video stats10,000 videos, 50 IDs per call200Main, or move to batchGetStats
Comments100 videos x 10 pages1,000Main
Keyword search20 keywords x 5 pages100 callsSearch, which is now full
Total1,404 of 10,000Search bucket at 100 of 100

The main bucket has room. The search bucket is the wall: 100 calls a day is 5,000 results at most. If you add caption tracks for those 100 videos, captions.list alone costs 5,000 units. The formula to keep in a spreadsheet:

units = sum over methods of (calls x cost per call)
calls = ceil(items / items per page) x pages per item

YouTube API quota exceeded: the error

When the daily quota runs out, the API answers HTTP 403 with reason quotaExceeded. Note that it is a 403, not a 429, and retrying does nothing until the reset. A separate rateLimitExceeded reason means too many requests in a short time; that one clears with a short backoff. This Python wrapper counts units, stops cleanly on quotaExceeded and backs off on the rest:

import datetime, random, time, requests
from zoneinfo import ZoneInfo

KEY = "YOUR_API_KEY"
BASE = "https://www.googleapis.com/youtube/v3/"
COST = {"captions": 50}          # most list methods cost 1
used = 0

class QuotaSpent(Exception):
    pass

def seconds_to_reset():
    now = datetime.datetime.now(ZoneInfo("America/Los_Angeles"))
    reset = (now + datetime.timedelta(days=1)).replace(hour=0, minute=1, second=0, microsecond=0)
    return (reset - now).total_seconds()

def yt(method, **params):
    global used
    for attempt in range(5):
        r = requests.get(BASE + method, params={**params, "key": KEY}, timeout=30)
        used += COST.get(method, 1)   # errors cost quota too
        if r.ok:
            return r.json()
        reasons = [e.get("reason") for e in r.json().get("error", {}).get("errors", [])]
        if "quotaExceeded" in reasons:
            raise QuotaSpent(f"quota spent, resets in {seconds_to_reset() / 3600:.1f} h")
        if "rateLimitExceeded" in reasons or r.status_code >= 500:
            time.sleep(random.uniform(0, min(60, 2 ** attempt)))
            continue
        r.raise_for_status()
    raise RuntimeError("gave up after 5 attempts")

data = yt("channels", part="statistics", id="UC_x5XG1OV2P6uZZ5FSM9Ttw")
print(data["items"][0]["statistics"], "units used:", used)

How to check your YouTube API quota usage

Open the Quotas page for the YouTube Data API v3 in the Google Cloud console. It shows each bucket's limit and today's use. Your own counter, like used above, is still worth keeping: the console is not real time, and a counter lets your job stop at 95% instead of failing mid-run.

How to request a YouTube API quota increase

  1. Make sure the project follows the YouTube API Services Terms. More than the default requires passing an API Compliance Audit.
  2. Fill in the YouTube API Services Audit and Quota Extension Form. Describe the use case, show the screens where YouTube data appears, and give a unit estimate built like the table above.
  3. Wait for YouTube's API team. Google says only that someone will contact you "as soon as possible"; it publishes no timeline, so plan for weeks.
  4. If you passed an audit in the last 12 months and need more, submit the same form again. If you fail, there is a separate Appeals Form.

Since June 2026 you can ask for more in one bucket, for example search only. Google says the split makes increases easier to verify and approve.

Ways to spend fewer units

  • Get uploads from the channel's uploads playlist with playlistItems.list (1 unit) instead of search.list with a channel filter.
  • Move stats refreshes to videos.batchGetStats so they stop eating the main bucket.
  • Always request 50 items per page (100 for comment threads).
  • Ask only for the part values you use. It does not change the cost, but it keeps responses small.
  • Validate IDs before you call. Bad requests still cost a unit.
  • Cache channel metadata for a day; it rarely changes.

When a paid API is simpler

The quota is generous for reading your own channel and for modest tracking jobs. It gets in the way when search is the core of the job, when you need captions for videos you do not own, or when you cannot wait weeks for an audit. ScrapeIO allows 300 requests a minute per API key, with no daily or monthly cap beyond the credits you hold. A 429 from ScrapeIO costs nothing, and neither do failed calls, private or not-found answers, or cached repeats.

With ScrapeIO, the youtube search API returns search results with full stats for 2 credits a call, the youtube channel videos API and youtube comments API cost 1 credit a page, and the youtube transcript API returns captions for any public video. Agents can use the YouTube MCP server. For an overview of the options, see YouTube Data API alternatives.

FAQ

How many YouTube API quota units do I get per day?

10,000 units for most methods, plus 100 search.list calls and 100 videos.insert calls in their own buckets, and 10,000 units for videos.batchGetStats.

What time does the YouTube API quota reset?

Midnight Pacific Time. That is 07:00 or 08:00 UTC depending on daylight saving.

Does a failed request use YouTube API quota?

Yes. Every request costs at least 1 unit, including invalid ones.

How much does a YouTube search cost in quota?

Since June 2026, each search.list call counts as 1 against a separate bucket of 100 calls a day. Each extra page is another call.

Can I buy more YouTube API quota?

No. Google sells no quota. You get more by passing a compliance audit and having an extension approved.

Is the quota per API key?

No, per Google Cloud project. Extra keys in the same project share one budget.

Sources

Checked on 9 November 2026 from each vendor's own pages. Prices and limits change; follow the links before you decide.

100 free credits, no card. Credits never expire.

Get API key