Geonode logo
Operations

Error 429

An error 429 pops up when you've hit the request limit set by a server for a specific endpoint within a time window. It's the server's way of saying, 'You're asking for too much, too fast.' The API's throttling your requests, and you need to back off before trying again.

ER-er fore-TWO-ninenoun

Quick Facts

Also known as
Rate Limit Exceeded, Too Many Requests, HTTP 429
IP source
Triggered server-side; mitigated via rotating residential IPs drawn from a 2.5M+ pool
Detection risk
High when sending repeated requests from a single IP without rotation
Typical use
Web scraping, API data collection, automated browsing at scale
Price range
$0.27–$0.79/GB with 1TB free to start, no credit card required

How a error 429 works

The server keeps tabs on how often you're hitting it, using your IP or API key, against a rate limit like 100 requests per minute. Once you exceed that, requests get shut down, and you see a 429. If the API's set up right, it sends back a Retry-After header telling you how long to wait. You should read that header and use exponential backoff, doubling the wait time after each 429 until it works. A common backoff formula is min(cap, base * 2^attempt), where base is the Retry-After time in seconds. Cap it to avoid endless delays. If you skip backoff and keep hitting the endpoint, you're just digging a deeper hole. Usually, servers reset the rate-limit window once you stop hitting them.

Error 429 vs. Error 403

A 429 is rate-based and temporary. You can come back after a cooldown. A 403? That's permanent. The server's decided you're out, and it doesn't care about your timing or how many requests you're sending.

Why this is different

Advantages

  • Allows legitimate traffic to resume after backoff, unlike a 403, which is a permanent ban with no retry path
  • Retry-After header eliminates guesswork: instead of polling every 5 to 60 seconds hoping the window resets, your client waits the exact server-specified interval
  • Keeps servers stable under load by shedding excess requests before they queue and cause cascading timeouts
  • Standardized across APIs, so one retry handler covers Google, OpenAI, Twitter, and any other RFC 6585-compliant endpoint

Tradeoffs

  • Disrupts time-sensitive scraping or data pipelines
  • Retry delays compound across many requests
  • Not all servers return Retry-After header
  • Shared IPs may trigger limits from others' usage

Examples in practice

Real-world deployments of Error 429 , where it works and where alternatives win.

Google Search API Limits

Google's Custom Search JSON API caps free-tier usage at 100 queries per day, returning error 429 on every request beyond that threshold. The standard fix is exponential backoff starting at the Retry-After value, typically 60 seconds, then doubling on each successive 429 until the daily quota resets at midnight Pacific. Caching repeated queries client-side cuts API calls by 40 to 60% in most price-monitoring workloads.

Amazon Product Page Scraping

Amazon enforces roughly 10 requests per minute per IP on product and pricing pages, returning error 429 shortly after that threshold. Rotating through 100+ residential IPs allows parallel scraping at an effective throughput of around 1,000 requests per minute, the same volume that would trigger immediate blocks from a single IP.

OpenAI API Token Quotas

OpenAI returns error 429 when an app exceeds its token-per-minute quota: 90,000 TPM on the Tier 1 plan. Exponential backoff with jitter (random 0 to 1 second added to each wait interval) and batching requests into a queue reduces failed calls from near-100% under burst load to under 2% in steady state.

Yahoo Finance Data Collection

Yahoo Finance cuts off unauthenticated requests at roughly 2,000 per hour per IP before returning error 429. Spreading requests across multiple IPs and inserting 200 to 500ms of jitter between calls keeps per-IP request rates below the detection threshold and restores consistent access to pricing feeds.

Uptime Monitoring Polling Loops

Datadog and UptimeRobot can trigger error 429 responses when polling an endpoint every 30 seconds across 50+ monitors, resulting in 100 requests per minute hitting a single target from a small set of monitor IPs. Configuring check intervals above 60 seconds and alerting on 429 spikes catches the problem before it cascades into false-positive downtime alerts.

Twitter v2 API Read Limits

Twitter's v2 API enforces a 500,000 tweet read limit per month per app, issuing error 429 once exceeded. The response includes x-rate-limit-reset as a Unix timestamp; client code should parse that value directly rather than guessing at the 15-minute window, since Twitter resets limits on a rolling basis, not at fixed clock intervals.

Common misconceptions

Common myths about Error 429 , and what is actually true.

MythReality
"A 429 error means the server is down"
A 429 response actually confirms the server is healthy and actively processing requests , it is explicitly rejecting yours because you have sent too many, not because anything is broken on the server side.

Need Error 429s?

2.5M+ residential IPs, 195+ countries, from $0.27/GB.

View Residential Proxies

Error 429 FAQ

Yes. Rotating residential proxies address error 429 by distributing requests across many IPs so no single address crosses the server's per-IP rate limit. For example, Amazon's roughly 10 requests per minute per IP limit becomes effectively 1,000 requests per minute when you rotate through 100+ IPs. Geonode's residential pool covers 2.5M+ IPs across 195+ countries, providing enough address diversity to run high-volume scrapers without any single IP accumulating enough requests to trigger error 429.