youtube-transcript-api (Python library) gets IP-banned by YouTube after ~30-40 rapid transcript fetches in a session, even from a residential IP. The error message says 'YouTube is blocking requests from your IP' and suggests it's a cloud provider issue, but it also happens on local machines running batch pipelines. The ban is separate from YouTube Data API quotas — you can still call search.list/channels.list/videos.list via the official API while transcripts are blocked. The ban lifts after a few hours.
The youtube-transcript-api library scrapes YouTube's web endpoints (not the official API), so YouTube applies aggressive rate limiting. Mitigations: (1) Add delays between transcript fetches (2-5 seconds). (2) Use the library's proxy support to rotate IPs. (3) Cache transcripts aggressively — once fetched, store locally so re-runs don't re-fetch. (4) Detect the IP ban early (first failure) and stop probing rather than burning through all candidates with failed requests. (5) The ban typically lifts after 2-4 hours; design your pipeline to gracefully degrade when transcripts are unavailable while continuing with other stages (discovery, vetting, Folk sync). The official YouTube Data API captions endpoint (captions.list + captions.download) avoids this issue but requires OAuth and video owner permission, making it impractical for third-party content.