A Google Cloud project with the YouTube Data API v3 enabled can call videos.insert 100 times per day. Since 1 June 2026, videos.insert and search.list each draw on their own bucket of 100 calls per day at 1 unit per call, and every other method shares a separate 10,000-unit daily pool. Quota resets at midnight Pacific Time, and exhaustion returns HTTP 403 with reason quotaExceeded (quota cost page, checked 18 October 2026).
What changed in the YouTube API quota on 1 June 2026?
Google split two methods out of the shared pool. The revision history entry for 1 June 2026 describes "transitioning to a granular quota system covering smaller sets of methods". It says calls to videos.insert and search.list "will be charged to their own respective quota buckets" and calls to all other methods "will be charged to the existing quota bucket" (checked 18 October 2026).
Before the change, an upload cost roughly 1,600 units until 4 December 2025, then roughly 100 units, and in both cases it came out of the same 10,000-unit pool as your comment reads. Now an upload costs 1 unit in a bucket that nothing else touches, so a day of uploads can no longer starve your reads.
videos.insert
100 calls
own bucket, per day
search.list
100 calls
own bucket, per day
All other methods
10,000 units
shared pool, per day
Three buckets as listed on the YouTube quota cost page on 18 October 2026. Each videos.insert and search.list call costs 1 unit of its own bucket.
The quota cost page also keeps an older rule: "All API requests, including invalid requests, incur a quota cost of at least one point." A malformed upload request still spends one of your 100. A second granular method followed within days: the revision history lists videos.batchGetStats on 3 June 2026 at "1 unit in its own granular quota bucket" with a default of 10,000 units per day. Expect the list of separately metered methods to grow.
Three scoping facts matter for planning. The quota belongs to the Google Cloud project that owns the API key or OAuth client, so every channel your app connects shares the same buckets. YouTube exposes no endpoint that returns the remaining quota, so you track spend yourself or read it from the Quotas page in the Cloud console.
How much quota does videos.insert cost in 2026?
videos.insert costs 1 unit, charged to the upload bucket of 100 calls per day (checked 18 October 2026). The table lists the methods whose cost this post checked. Reads cost 1 unit, so the default pool tolerates heavy polling. Writes cost 50 units, so the same pool tolerates only 200 of them per day, and captions.update at 450 units is the most expensive ordinary call listed.
| Method | Units per call | Bucket |
|---|---|---|
videos.insert | 1 | Video uploads, 100 calls/day |
search.list | 1 | Search, 100 calls/day |
videos.list | 1 | Default, 10,000 units/day |
channels.list | 1 | Default |
playlistItems.list | 1 | Default |
commentThreads.list | 1 | Default |
comments.list | 1 | Default |
videos.getRating | 1 | Default |
videos.update | 50 | Default |
videos.delete | 50 | Default |
videos.rate | 50 | Default |
thumbnails.set | 50 | Default |
playlistItems.insert | 50 | Default |
playlists.insert | 50 | Default |
subscriptions.insert | 50 | Default |
comments.insert | 50 | Default |
commentThreads.insert | 50 | Default |
comments.setModerationStatus | 50 | Default |
comments.delete | 50 | Default |
captions.list | 50 | Default |
captions.insert | 400 | Default |
captions.update | 450 | Default |
liveChatMessages.insert | 20 | Default |
liveChatBans.insert | 200 | Default |
The quota cost page lists more methods than this table. Source: Quota cost for API requests, checked 18 October 2026.
How many videos can I upload per day with the YouTube API?
The answer is the smaller of two numbers: the 100-call upload bucket, and however many videos the default pool can finish once you count the follow-up calls each video needs. A bare upload costs 1 unit of the upload bucket and nothing from the default pool, so 100 uploads fit and the default pool is untouched.
Most real pipelines do more than upload. Add a custom thumbnail (thumbnails.set, 50 units) and 100 videos use 5,000 default units. Add a playlist entry (playlistItems.insert, 50) and a metadata fix after processing (videos.update, 50) and each video costs 150 default units. The pool then fits 66 videos (10,000 divided by 150, rounded down), and videos 67 to 100 fail on the follow-up calls with a 403 even though their uploads succeeded.
| Per-video workflow | Default units per video | Videos per day |
|---|---|---|
| Upload only | 0 | 100 (upload bucket) |
| Upload and thumbnail | 50 | 100 (upload bucket) |
| Upload, thumbnail, playlist entry, metadata update | 150 | 66 (default pool) |
| Upload, thumbnail, captions | 450 | 22 (default pool) |
Computed from the cost table: 10,000 divided by 150 is 66, and 10,000 divided by 450 is 22, both rounded down.
Reads shrink these numbers further, because they share the pool. 2,000 comment reads at 1 unit each remove 2,000 units, which takes the 150-unit workflow from 66 videos to 53 ((10,000 minus 2,000) divided by 150). If 100 uploads is not enough, the route is a higher allocation: Google's quota and compliance audits page covers the audit and extension request.
When does YouTube API quota reset?
Daily quotas "reset at midnight Pacific Time (PT)" (YouTube quota cost page, checked 18 October 2026). That is 07:00 or 08:00 UTC depending on daylight saving, so a job scheduled for UTC midnight sits in the middle of a quota day. If you track your own counters, key them on the Pacific date, not the UTC date, or your count will reset hours early or late.
Does YouTube return 429 when quota is exceeded?
No. Exhaustion is HTTP 403 with reason quotaExceeded. The errors reference lists it with the description "The request cannot be completed because you have exceeded your quota" (checked 18 October 2026), so a retry loop keyed on 429 never fires. The JSON below is an example of the usual Google error shape with placeholder values. It is not a captured response.
The errors reference documents only the status, reason and description, so branch on reason. The payload does not say which bucket is empty. Infer it from the method you called: a videos.insert that fails with quotaExceeded while reads still work means the upload bucket is spent. The error is terminal until the Pacific reset, and retrying within seconds only spends quota, since every request costs at least one unit.
Why does commentThreads.list with allThreadsRelatedToChannelId return 403?
commentThreads.list takes allThreadsRelatedToChannelId, which the reference describes as returning "all comment threads associated with the specified channel" for 1 unit (checked 18 October 2026). One call covers every video on the channel, which makes it the cheapest way to poll comments against a 10,000-unit pool. Two behaviours below are first-party observations from August 2026 and are not in that reference.
First, in August 2026 we saw that when a single video on the channel has comments disabled, the channel-wide query returns a 403 for the whole channel. The error carried reason commentsDisabled and location: videoId, although the request sent no videoId, so you cannot tell which video caused it. The documented meaning of commentsDisabled is "The video identified by the videoId parameter has disabled comments". The fallback is per-video listing at 1 unit per video.
Second, in August 2026 the same endpoint sometimes returned an empty page (items: []) that still carried a nextPageToken, on credentials that worked per video. A sync that treats an empty page as "nothing new" and advances its checkpoint skips every comment posted since the last good poll. Follow the token until it is absent, and only move a checkpoint forward on comments you actually received.
Questions developers ask about YouTube API quota
- How many videos can I upload per day with the YouTube API?
- 100 per Google Cloud project as of 18 October 2026, because
videos.inserthas its own bucket of 100 calls per day at 1 unit per call. If each video also needs a thumbnail, a playlist entry and a metadata update, the 10,000-unit default pool caps you at 66 videos. - When does YouTube API quota reset?
- At midnight Pacific Time, which is 07:00 or 08:00 UTC depending on daylight saving (YouTube quota cost page, checked 18 October 2026). Key any counters you keep on the Pacific date rather than the UTC date.
- Does YouTube return 429 when quota is exceeded?
- No. The errors reference lists quota exhaustion as HTTP 403 with reason
quotaExceeded(checked 18 October 2026). Branch onreason, and treat the error as terminal until the Pacific reset. - How much quota does videos.insert cost in 2026?
- 1 unit per call, charged to its own bucket of 100 calls per day since 1 June 2026. Before that it cost roughly 1,600 units until 4 December 2025, then roughly 100 units, drawn from the shared 10,000-unit pool.
- Is the YouTube API quota per channel or per project?
- Per Google Cloud project, the one that owns the API key or OAuth client. Every channel your app connects shares the same three buckets, and YouTube has no endpoint that returns the remaining quota.
The YouTube platform page lists what SocialAPI.ai supports for YouTube. If a Google fact on this page is wrong, tell us and it gets corrected with a date.
Every Google claim above traces to a page on developers.google.com, each checked 18 October 2026. The comment-listing behaviours are first-party observations from August 2026. YouTube Data API, Quota cost for API requests, YouTube Data API, Revision history, YouTube Data API, Errors, YouTube Data API, CommentThreads: list, YouTube Data API, Quota and compliance audits