You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中配置YouTube Data API的maxResults上限及应对quota limit方案

Hey there! Let's break down your two questions step by step.

1. Setting maxResults to its allowed upper limit for YouTube Data API in Python

First off, for the playlistItems.list endpoint you're using, YouTube's API sets a hard upper limit of 50 for the maxResults parameter. That's the highest number of items you can retrieve in a single API call.

You're already doing this correctly in your code with maxResults=50—great job! Just to note: other API endpoints (like search.list) also have a maxResults cap of 50, so this is a consistent limit across most YouTube Data API list operations.

2. Handling quota limits and setting a custom extraction cap

Your current loop runs until there are no more pages, which will hit the 10,000-item quota limit (since each playlistItems.list call uses 1 quota unit, and you get 10,000 units daily by default). Here are two solid solutions:

Option 1: Add a custom limit to stop fetching early

You can track how many videos you've retrieved with a counter, and break the loop once you reach your desired limit. Here's how to modify your code:

# Set your desired maximum number of videos to fetch (under 10000)
max_videos = 8000
total_fetched = 0
next_page_token = None

while total_fetched < max_videos:
    res = youtube.playlistItems().list(
        playlistId=playlist_id,
        part='id,snippet',
        maxResults=50,
        pageToken=next_page_token
    ).execute()
    
    # Count the items from this page
    page_item_count = len(res.get('items', []))
    total_fetched += page_item_count
    
    # Don't forget to process the items here (save to CSV, database, etc.)
    # ...
    
    next_page_token = res.get('nextPageToken')
    
    # Exit loop if no more pages or we've hit our limit
    if next_page_token is None or total_fetched >= max_videos:
        break

This gives you full control over how many videos you extract, stopping well before you hit the quota ceiling. Just adjust max_videos to any number below 10,000 that fits your needs.

Option 2: Workarounds for getting more data (if you need it)

If you eventually need more than 10,000 videos, consider these approaches:

  • Space out requests over days: YouTube's quota resets every 24 hours. You can add delays between API calls using time.sleep(10) (adjust the seconds as needed) and run your script over multiple days to collect more data. Just avoid spamming the API—rate limits can get you temporarily blocked.
  • Split across playlists: Many channels organize content into multiple playlists. First, fetch all playlists for the channel using the channels.list endpoint (with the contentDetails part) to get the channel's relatedPlaylists, then iterate through each playlist to gather videos. This spreads your quota usage across different endpoints.
  • Upgrade to enterprise quota: If you need a much higher daily quota, YouTube offers an enterprise tier of the API, though this is a paid service.

内容的提问来源于stack exchange,提问作者Prateek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:04:13