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
Trả lời nhanh
quotaExceeded vì dự án Google Cloud của bạn đã dùng hết hạn mức 10.000 đơn vị/ngày cho YouTube Data API v3, hạn mức này sẽ reset vào nửa đêm giờ Thái Bình Dương. Cách khắc phục nhanh nhất: ngừng dùng search.list (100 đơn vị) khi một tra cứu ID trực tiếp là đủ, cache kết quả thay vì lấy lại, hoặc chuyển sang một API transcript không chạy qua quota YouTube của riêng bạn.Vì sao điều này xảy ra
Mỗi dự án Google Cloud được cấp quota mặc định 10.000 đơn vị mỗi ngày cho YouTube Data API v3, reset vào nửa đêm giờ Thái Bình Dương - không có chuyển tiếp và không có cách nào kích hoạt reset sớm. Quota được theo dõi theo dự án, không theo API key, nên tạo key thứ hai từ cùng một dự án không cho bạn thêm một hạn mức mới.
Mỗi lệnh gọi API tốn đơn vị, không phải theo số request - và chi phí không đồng đều. Đây là bức tranh đầy đủ trên các endpoint mà nhà phát triển thực sự dùng:
| Lệnh gọi | Chi phí quota |
|---|---|
search.list | 100 đơn vị |
videos.list | 1 đơn vị |
channels.list | 1 đơn vị |
playlistItems.list | 1 đơn vị |
commentThreads.list | 1 đơn vị mỗi trang |
captions.list | 50 đơn vị |
captions.download | 200 đơn vị, yêu cầu OAuth (không dùng xác thực bằng API key) |
Với 100 đơn vị mỗi lần search, một dự án có thể dùng cạn toàn bộ quota hàng ngày chỉ sau 100 lệnh gọi tìm kiếm - trước cả khi tải một phụ đề nào. Đây là cách phổ biến nhất khiến các dự án nhỏ chạm giới hạn: họ không thực hiện 10.000 request, họ thực hiện vài trăm lệnh gọi đắt đỏ. Ngược lại, videos.list, channels.list, và playlistItems.list rẻ với 1 đơn vị mỗi lần - nếu bạn đã biết video, channel, hoặc playlist ID, những lệnh gọi đó gần như không ảnh hưởng đến ngân sách hàng ngày.
Cách kiểm tra mức sử dụng quota hiện tại
- Mở Google Cloud Console cho dự án gắn với API key của bạn.
- Vào APIs & Services → YouTube Data API v3 → Quotas & System Limits.
- Nơi này hiển thị mức sử dụng hiện tại so với Queries per day và các giới hạn theo phút, cập nhật có độ trễ nhỏ chứ không phải theo thời gian thực.
Nếu bạn đã gần chạm trần trước khi thực hiện 10.000 request, đây là cách xác nhận đó là vấn đề lệnh gọi đắt đỏ nêu trên, không phải một lỗi.
quotaExceeded so với rateLimitExceeded
Cả hai đều trả về mã 403, và cả hai thường bị gộp chung là "lỗi quota" trong trò chuyện thông thường, nhưng chúng là hai vấn đề khác nhau với cách khắc phục khác nhau:
- quotaExceeded (lý do:
dailyLimitExceeded) - dự án của bạn đã dùng hết hạn mức đơn vị hàng ngày. Không có gì khắc phục được điều này ngoài chờ reset vào nửa đêm giờ Thái Bình Dương, giảm chi phí mỗi lệnh gọi, hoặc xin duyệt tăng quota. - rateLimitExceeded - bạn đang gửi request quá nhanh trong một khoảng thời gian ngắn, độc lập với tổng số hàng ngày. Đây là vấn đề tốc độ, không phải ngân sách - xem hướng dẫn về rate limit của chúng tôi để biết cách xử lý đúng bằng backoff.
Năm cách khắc phục
- Cache mạnh tay. Quota bị tính theo mỗi lệnh gọi API, không theo mỗi request từ người dùng - nếu bạn lấy lại phụ đề của cùng một video nhiều lần, hãy cache kết quả (dù chỉ là một cache TTL trong bộ nhớ đơn giản) thay vì gọi lại API cho dữ liệu không thay đổi theo từng phút.
- Tránh dùng
search.listkhi một tra cứu ID trực tiếp là đủ. Nếu bạn đã có video, channel, hoặc playlist ID, lệnh gọi.listtương ứng rẻ hơn 100 lần so với một search. - Gộp các tra cứu ID.
videos.listchấp nhận tối đa 50 ID phân tách bằng dấu phẩy mỗi lệnh gọi với cùng chi phí 1 đơn vị như một ID đơn - lấy 50 video từng cái một thay vì gộp lại đắt hơn 50 lần mà không cần thiết. - Xin duyệt tăng quota khi bạn đã có lưu lượng sản xuất thực để làm căn cứ, qua biểu mẫu YouTube API Services Audit and Quota Extension liên kết từ trang quota của Cloud Console. Hãy chờ đợi một lượt xét duyệt thủ công, không phải phê duyệt tức thì.
- Dùng một API transcript không chạy qua quota YouTube của riêng bạn. API của GetYouTubeTranscript lấy transcript trên hạ tầng riêng của nó thay vì proxy
captions.downloadbằng key của bạn, nên không có trần 10.000 đơn vị/ngày nào cần quản lý - chỉ có giới hạn tốc độ request riêng của gói.
Ví dụ: lấy transcript mà không chạm vào quota của 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"])Việc này tốn 1 tín dụng trên gói GetYouTubeTranscript của bạn, không phải đơn vị trên quota YouTube Data API của dự án Google Cloud. Nhận 100 tín dụng miễn phí, không cần thẻ, từ dashboard, hoặc xem đầy đủ tài liệu API.
Một lưu ý về các giải pháp lách luật
Câu hỏi thường gặp về quota YouTube API
"The request cannot be completed because you have exceeded your quota" nghĩa là gì?
Nghĩa là dự án Google Cloud của bạn đã dùng hết đơn vị quota YouTube Data API v3 được cấp cho ngày hiện tại. Google reset quota vào nửa đêm giờ Thái Bình Dương, và hạn mức miễn phí mặc định là 10.000 đơn vị/ngày, theo dõi theo dự án (không theo API key).
Lấy một transcript thực sự tốn bao nhiêu quota?
Bản thân YouTube Data API không có endpoint "lấy transcript" trực tiếp - lệnh gọi captions.list tốn 50 đơn vị chỉ để liệt kê các track phụ đề có sẵn, còn captions.download yêu cầu OAuth (không chỉ API key) và tốn 200 đơn vị. Một lệnh gọi search.list, thường dùng để tìm video trước, tự nó đã tốn 100 đơn vị - nên chỉ vài lượt tìm kiếm cộng tra cứu phụ đề có thể đốt sạch ngân sách 10.000 đơn vị hàng ngày rất nhanh.
Khác biệt giữa quotaExceeded và rateLimitExceeded là gì?
quotaExceeded (hiển thị dưới lý do dailyLimitExceeded trong nội dung lỗi) nghĩa là bạn đã dùng hết hạn mức đơn vị hàng ngày và phải chờ reset vào nửa đêm giờ Thái Bình Dương. rateLimitExceeded nghĩa là bạn đang gửi request quá nhanh trong một khoảng thời gian ngắn, độc lập với tổng số hàng ngày - xem hướng dẫn về rate limit của chúng tôi để biết chi tiết sự khác biệt.
Tôi có thể dùng nhiều API key để có thêm quota không?
Không - quota được theo dõi theo dự án Google Cloud, không theo API key. Nhiều key tạo từ cùng một dự án đều lấy từ cùng một hạn mức 10.000 đơn vị hàng ngày. Tạo các dự án riêng để nhân quota về mặt kỹ thuật là có thể nhưng có nguy cơ vi phạm YouTube API Services Terms of Service, vốn cấm việc lách giới hạn quota.
Tôi có thể chỉ cần xin Google tăng quota không?
Có, qua biểu mẫu YouTube API Services Audit and Quota Extension liên kết từ trang quota của Cloud Console, nhưng việc duyệt không được đảm bảo hay tức thì - nó yêu cầu bạn chứng minh mục đích sử dụng sản xuất bằng dữ liệu sử dụng thực tế, và Google xét duyệt thủ công. Không có cách nào tự phục vụ để đơn giản trả tiền lấy thêm quota.
Hạn mức 10.000 đơn vị miễn phí có tốn phí gì không?
Không - đây là hạn mức miễn phí mặc định cấp cho mọi dự án Google Cloud khi bật YouTube Data API v3. Bạn không cần gắn tài khoản thanh toán để sử dụng, dù Google có thể nhắc bạn bật thanh toán khi xin tăng quota.
API của GetYouTubeTranscript có dùng quota YouTube API của riêng tôi không?
Không. Nó không proxy YouTube Data API bằng key của bạn - việc trích xuất transcript chạy trên hạ tầng riêng của chúng tôi, nên không có quota captions.list/download nào bạn cần quản lý. Bạn chỉ bị giới hạn bởi rate limit riêng đã công bố của chúng tôi (60 req/phút gói miễn phí, tối đa 300 req/phút ở gói hàng năm).
Liên quan
- 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 so với TranscriptAPI
- GetYouTubeTranscript so với youtubetotranscript.com
- GetYouTubeTranscript so với youtube-transcript.io