Wulfcare Data guides

YouTube Data API quotaExceeded: why it happens and how to fix it

When the YouTube Data API returns HTTP 403 with the reason quotaExceeded, your Google Cloud project has used up its daily allowance:

The request cannot be completed because you have exceeded your quota.

The current limits

Google's quota page gives a new project these defaults:

What Default limit
search.list 100 calls a day
videos.insert 100 calls a day
Everything else, combined 10,000 units a day

videos.list, commentThreads.list and comments.list each cost 1 unit a call. So search is usually the limit people hit first: 100 calls a day, in its own bucket.

Older guides say a search costs 100 units out of your 10,000. That's out of date, although the practical result is much the same: about 100 searches a day.

When does it reset?

Google says daily quotas reset at midnight Pacific Time. You can see what you've used on the Quotas page in the Google Cloud console.

How to fix it

1. Wait for the reset. Fine if this was a one-off.

2. Use fewer searches. Cache results, and once you have video IDs, fetch their details with videos.list, which takes a comma-separated list of IDs for 1 unit a call.

3. Ask Google for more. Fill in the quota extension form. This is the right route for a real product, though you'll need to wait for Google's review.

4. Skip the API. The YouTube Scraper reads public YouTube pages, so it needs no API key and has no daily quota:

curl -X POST "https://api.apify.com/v2/acts/wulfcare~youtube-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["python tutorial"], "maxResults": 20}'

It's free until 2026-11-18, then $0.90 per 1,000 videos. Each video has title, viewCount, likes, commentsCount, date, duration, tags and channel stats. The official API is still the right choice if you need write access or private data for accounts you own, since a scraper only sees what's public.