What is the HTTP 429 status code?
HTTP 429 Too Many Requests is a client error response that means you sent too many requests to the server in a given window of time. The server is rate-limiting you and is asking you to slow down. If the response includes a Retry-After header, wait that many seconds before retrying. Otherwise back off exponentially (1s, 2s, 4s) with a small random jitter so multiple clients do not retry in lockstep.
The error clears once you stop hitting the limit, or once the server’s rate-limit window resets. Rate limits are usually applied per IP, per API key, or per authenticated user, and the boundary is defined by the server, not by your client. The response body or other headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) often tell you exactly where the ceiling is and when it resets, so check those before guessing.
Related articles
All articles →How To Retry Failed Python Requests
Learn how to implement retry mechanisms in Python Requests to handle timeout errors, HTTP status codes like 403, 429, 500, 502, 503, and 504, and avoid infinite loops with effective backoff strategies.
Bypass Cloudflare 1020: The Ultimate Guide for Web Scrapers (2026)
Tired of 'Access Denied'? Go beyond basic fixes. This guide teaches you how to bypass Cloudflare 1020 by mastering TLS fingerprinting, headers & stealth browsers.
Web Scraping Without Getting Blocked
To reduce the number of bots using the site, developers use IP address recognition, HTTP request headers checking, CAPTCHA, and other methods to detect bot traffic. However, it is still possible to bypass. To do this, you need to follow some rules during scraping.
Stop debugging blocked requests one by one
HasData handles rotation, rendering, and retries, so most blocked targets come back as data instead of error codes.