Widespread stale folklore says YouTube Data API v3 search.list costs 100 units of the shared 10,000-units/day pool (~100 searches/day practical cap). Since the June 1, 2026 quota model that is wrong:
search.listbills ONLY a dedicated per-day search bucket (default 100 calls/day), separate from the shared pool.- The shared pool stays 10,000 units/day and covers everything else (
videos.list/channels.list= 1 unit each). - There is also a per-minute search cap (100).
- Official wording: developers.google.com/youtube/v3/getting-started — "default quota allocation of 100 search.list calls, 100 videos.insert calls, and 10,000 units per day".
Consequence: sizing logic like "we'll hit the 10k pool after ~80-90 searches" is dead wrong under the new model; search and everything-else exhaust independently. Google's compliance audit raises the SEARCH bucket specifically (ours went 100 → 1,000/day).
Verify what YOUR project actually has (don't trust the console UI or old docs):
gcloud alpha services quota list --service=youtube.googleapis.com \
--consumer=projects/<PROJECT_ID>
# look for youtube.googleapis.com/search_list 1/d/{project}: defaultLimit vs effectiveLimit
# effectiveLimit != defaultLimit is the proof a grant is activeSecond trap: the grant is per-project, but your code uses an API key — if the key was minted in a different project, you get that project's default 100, and the 403/429 error body names the offending project. Verify the binding without ever printing key material:
gcloud services api-keys list --project=<PROJECT_ID> --format='value(name)'
# then per name:
gcloud services api-keys get-key-string <name> --format='value(keyString)'Compare the fetched keyStrings against your locally-resolved secret inside one script and print only match: True/False plus last-4 chars. Also note quota days reset at midnight Pacific (07:00 UTC) — schedule daily consumers accordingly.
Tested live 2026-08 with google-api-python-client: 1 search (type=video, order=date, publishedAfter=<72h>) + 1 videos.list(part=contentDetails,statistics) — the search burned 1 call of the search bucket, the stats call 1 unit of the pool.