YouTube API Quota Exceeded: Causes and Fixes
Why YouTube Data API requests fail with quotaExceeded, what the daily 10,000-unit quota actually costs per call, how to check and raise it, and how to avoid hitting it - including using a transcript API that doesn't consume your quota.
00:09:00 · SEP 13, 2026
Краткий ответ
quotaExceeded, потому что ваш проект Google Cloud израсходовал всю суточную квоту в 10 000 единиц для YouTube Data API v3, которая сбрасывается в полночь по тихоокеанскому времени. Самые быстрые решения: перестать использовать search.list (100 единиц) там, где подходит прямой поиск по ID, кэшировать результаты вместо повторного запроса или перейти на API транскриптов, который вообще не расходует вашу собственную квоту YouTube.Почему это происходит
Каждый проект Google Cloud получает стандартную квоту YouTube Data API v3 в размере 10 000 единиц в день, которая сбрасывается в полночь по тихоокеанскому времени — переноса остатка нет, и досрочный сброс запустить нельзя. Квота отслеживается по проекту, а не по API-ключу, поэтому создание второго ключа в том же проекте не даёт второй пул.
Каждый вызов API стоит единицы, а не запросы — и стоимость неравномерна. Вот полная картина по эндпоинтам, которые реально используют разработчики:
| Вызов | Стоимость в квоте |
|---|---|
search.list | 100 единиц |
videos.list | 1 единица |
channels.list | 1 единица |
playlistItems.list | 1 единица |
commentThreads.list | 1 единица за страницу |
captions.list | 50 единиц |
captions.download | 200 единиц, требует OAuth (не аутентификацию по API-ключу) |
При 100 единицах за один поиск проект может исчерпать всю суточную квоту всего за 100 вызовов поиска — ещё до того, как будут скачаны какие-либо субтитры. Это самый распространённый способ, которым небольшие проекты упираются в лимит: они сделали не 10 000 запросов, а несколько сотен дорогих. Для сравнения, videos.list, channels.list и playlistItems.list дёшевы — по 1 единице каждый: если вы уже знаете ID видео, канала или плейлиста, эти вызовы почти не расходуют суточный бюджет.
Как проверить текущее использование квоты
- Откройте Google Cloud Console для проекта, привязанного к вашему API-ключу.
- Перейдите в APIs & Services → YouTube Data API v3 → Quotas & System Limits.
- Здесь показано текущее использование относительно Queries per day и лимитов в минуту, обновляемое с небольшой задержкой, а не в реальном времени.
Если вы уже близки к потолку, не сделав 10 000 запросов, этот раздел позволяет подтвердить, что дело именно в проблеме дорогих вызовов выше, а не в ошибке.
quotaExceeded против rateLimitExceeded
Оба возвращают код 403, и в неформальном разговоре их часто объединяют как «ошибки квоты», но это разные проблемы с разными решениями:
- quotaExceeded (причина:
dailyLimitExceeded) — ваш проект израсходовал всю суточную квоту единиц. Ничего не помогает, кроме ожидания сброса в полночь по тихоокеанскому времени, снижения стоимости вызова или получения одобренного увеличения квоты. - rateLimitExceeded — вы отправляете запросы слишком быстро в коротком временном окне, независимо от вашей суточной суммы. Это проблема темпа, а не бюджета — см. наше руководство по лимиту частоты запросов, чтобы узнать, как правильно с ней справиться с помощью отката.
Пять способов это исправить
- Кэшируйте агрессивно. Квота списывается за каждый вызов API, а не за каждый запрос пользователя — если вы многократно повторно запрашиваете субтитры одного и того же видео, кэшируйте результат (даже простой TTL-кэш в памяти) вместо повторного вызова API за данными, которые не меняются каждую минуту.
- Избегайте
search.listтам, где подходит прямой поиск по ID. Если у вас уже есть ID видео, канала или плейлиста, соответствующий вызов.listв 100 раз дешевле поиска. - Группируйте запросы по ID.
videos.listпринимает до 50 ID, разделённых запятыми, за один вызов по той же цене в 1 единицу, что и один ID — получать 50 видео по одному вместо пакетного запроса обходится в 50 раз дороже без всякой причины. - Запросите увеличение квоты, как только у вас появится реальное продакшен-использование, которое это обосновывает, через форму YouTube API Services Audit and Quota Extension, доступную со страницы квоты в Cloud Console. Ожидайте ручной проверки, а не мгновенного одобрения.
- Используйте API транскриптов, который не расходует вашу собственную квоту YouTube. API GetYouTubeTranscript получает транскрипты через собственную инфраструктуру, а не проксирует
captions.downloadвашим ключом, поэтому суточного потолка в 10 000 единиц отслеживать не нужно — только собственный лимит частоты запросов вашего тарифа.
Пример: получение транскрипта без обращения к квоте YouTube
cURL:
curl "https://getyoutubetranscript.com/api/v1/transcript?v=dQw4w9WgXcQ" \
-H "Authorization: Bearer sk_live_..."Node.js:
const res = await fetch(
"https://getyoutubetranscript.com/api/v1/transcript?v=dQw4w9WgXcQ",
{ headers: { Authorization: `Bearer ${process.env.GETYOUTUBETRANSCRIPT_API_KEY}` } }
);
const { data } = await res.json();
console.log(data.transcript);Python:
import os, requests
res = requests.get(
"https://getyoutubetranscript.com/api/v1/transcript",
params={"v": "dQw4w9WgXcQ"},
headers={"Authorization": f"Bearer {os.environ['GETYOUTUBETRANSCRIPT_API_KEY']}"},
)
print(res.json()["data"]["transcript"])Это стоит 1 кредит по вашему тарифу GetYouTubeTranscript, а не единицы квоты YouTube Data API вашего проекта Google Cloud. Получите 100 бесплатных кредитов без карты в панели управления, или посмотрите полную документацию API.
Заметка об обходных путях
Часто задаваемые вопросы о квоте YouTube API
Что означает «The request cannot be completed because you have exceeded your quota»?
Это означает, что ваш проект Google Cloud исчерпал выделенную квоту единиц YouTube Data API v3 на текущий день. Google сбрасывает квоту в полночь по тихоокеанскому времени, а стандартный бесплатный лимит составляет 10 000 единиц в день и отслеживается по проекту (а не по API-ключу).
Сколько квоты реально стоит получение транскрипта?
У самого YouTube Data API нет прямого эндпоинта «получить транскрипт» — вызов captions.list стоит 50 единиц только для того, чтобы получить список доступных дорожек субтитров, а captions.download требует OAuth (а не просто API-ключа) и стоит 200 единиц. Вызов search.list, часто используемый для предварительного поиска видео, сам по себе стоит 100 единиц — поэтому несколько поисков плюс запросы субтитров могут быстро израсходовать суточный бюджет в 10 000 единиц.
В чём разница между quotaExceeded и rateLimitExceeded?
quotaExceeded (отображается как причина dailyLimitExceeded в теле ошибки) означает, что вы израсходовали всю суточную квоту единиц и должны дождаться сброса в полночь по тихоокеанскому времени. rateLimitExceeded означает, что вы отправляете запросы слишком быстро в коротком временном окне, независимо от суточной суммы — подробное различие см. в нашем руководстве по лимиту частоты запросов.
Могу ли я использовать несколько API-ключей, чтобы получить больше квоты?
Нет — квота отслеживается по проекту Google Cloud, а не по API-ключу. Несколько ключей, созданных в одном проекте, черпают из одного и того же суточного пула в 10 000 единиц. Создание отдельных проектов для умножения квоты технически возможно, но рискует нарушить условия использования YouTube API Services, которые запрещают обход лимитов квоты.
Могу ли я просто запросить увеличение квоты у Google?
Да, через форму YouTube API Services Audit and Quota Extension, доступную со страницы квоты в Cloud Console, но одобрение не гарантировано и не мгновенно — требуется обосновать продакшен-использование реальными деталями, и Google рассматривает запросы вручную. Самостоятельно просто оплатить увеличение квоты нельзя.
Бесплатная квота в 10 000 единиц что-то стоит?
Нет — это стандартный бесплатный лимит, предоставляемый каждому проекту Google Cloud, включившему YouTube Data API v3. Для его использования не нужен привязанный платёжный аккаунт, хотя Google может предложить включить биллинг при запросе увеличения.
Использует ли API GetYouTubeTranscript мою собственную квоту YouTube API?
Нет. Он не проксирует Data API YouTube вашим ключом — извлечение транскриптов работает через нашу собственную инфраструктуру, поэтому квоту captions.list/download отслеживать с вашей стороны не нужно. Вы ограничены только нашими собственными опубликованными лимитами частоты запросов (60 запросов/мин на бесплатном тарифе, до 300 запросов/мин на годовом).
Похожие материалы
- YouTube Transcript API Rate Limit: What It Is and How to Handle 429s
- YouTube Transcript MCP Server: Setup Guide for Claude and Other AI Tools
- YouTube Transcripts in n8n: HTTP Request Workflow Guide
- GetYouTubeTranscript против TranscriptAPI
- GetYouTubeTranscript против youtubetotranscript.com
- GetYouTubeTranscript против youtube-transcript.io