ZenRows has protective measures in place to safeguard the infrastructure from abusive behavior and malformed traffic. If too many faulty requests are made in a short period, our system will temporarily block your IP address to maintain service reliability and fairness for all users.

When a block is triggered, you may encounter one of the following errors:

  • BLK0001 IP Address Blocked
  • Connection Refused/Aborted
  • RemoteDisconnected('Remote end closed connection without response')

Understanding why your IP was blocked, and how to avoid it, is key to keeping your scraping processes stable and efficient.

To resolve the issue, check the error code and error body from your previous request. These details will help you identify the cause of the block.

What Triggers an IP Block?

Faulty requests are the cause of an IP block. These include:

  • Invalid or missing parameters
  • Unauthorized or unverified access
  • Requests to unsupported or blocked domains
  • Too many concurrent requests beyond plan limits

Here are specific error types that can trigger a temporary IP block:

HTTP CodeError CodesDescription
400REQS001, REQS002, REQS004, RESP004, REQS006, RESP008Malformed or incomplete requests
401AUTH001, AUTH002, AUTH003Missing or invalid API key
403AUTH009Unverified account access
405REQS005Unsupported HTTP method
419AUTH006, AUTH008Concurrency or rate limit exceeded

Common Errors and How to Resolve Them

Below are the most common reasons for blocks and their solutions:

400 Bad Request

REQS001 Requests to This Domain Are Forbidden

ZenRows proactively blocks scraping attempts to certain domains to comply with legal, ethical, or technical guidelines.

Solution:
Check the Forbidden Domains Documentation Page for more details and avoid targeting these domains.

If you believe a domain should be whitelisted, feel free to contact support at success@znerows.com

REQS002 Request Requirements Unsatisfied

Some domains require the js_render and/or premium_proxy features to be active to bypass protections such as JavaScript-based content or regional blocks.

Solution:
Check the error body for details on which feature is needed and retry your request with them applied:

params = {
    'url': url,
    'apikey': apikey,
	'js_render': 'true',
	'premium_proxy': 'true',
}

REQS004 Invalid Params Provided

One or more parameters in your request are unrecognized or incorrectly formatted.

Solution:

  • Double-check all query parameters
  • Ensure URLs are properly encoded
  • Refer to the API Reference for supported parameters

RESP004 CSS Extractor Parameter is Not Valid

The css_extractor parameter is malformed.

Solution:

REQS006 Invalid CAPTCHA Solver Key

An incorrect or missing key for 2Captcha was configured on the Integration Page.

Solution:
Before using the solve_captcha JavaScript Instructions verify that the correct CAPTCHA solver key is entered in your account.

Leaving the 2Captcha API key empty on the integration page and attempting to use the solve_captcha instruction will also result in errors and an IP block.

This error indicates a domain-specific issue (e.g., configuration or certificate problems).

Solution:

  • Review the full error message. These errors usually cannot be resolved by modifying the API request.

401 Unauthorized Errors

AUTH001 / AUTH002 / AUTH003 – API Key Issues

Common when:

  • API key is missing
  • API key is invalid or deleted

Solution:
Retrieve or regenerate your API key from the Settings Page and update your requests accordingly.

403 Forbidden

AUTH009 User is Not Verified

Your account email must be verified to access the API.

Solution:
Check your inbox for a verification link. Didn’t receive it? Contact success@zenrows.com.

405 Method Not Allowed

REQS005 Method Not Allowed

ZenRows only supports GET, POST, and PUT.

Solution:
Avoid using unsupported methods like DELETE or PATCH.

If you’re unsure which method to use, default to GET.

419 Too Many Requests

AUTH006 Concurrency Exceeded

You’re making more simultaneous requests than your plan allows.

Solution:

  • Implement a queue system in your code to limit concurrent requests.
  • Monitor the Concurrency-Remaining response header to adjust your request rate dynamically.
Cancelling requests (e.g., CTX0001 Context Cancelled) does not release concurrency immediately. ZenRows requests can take up to 3 minutes to complete, and cancelling them prematurely may still impact your concurrency limits, potentially resulting in blocks.

For more details, see the Concurrency Documentation

AUTH008 Rate Limit Exceeded

Similar to the concurrency error, this occurs when you exceed your rate limit. Monitor the Concurrency-Remaining response header and adjust your request rate to avoid blocks and apply the suggested solutions.

Best Practices to Avoid IP Blocks

  1. Validate your requests before sending them
  2. Use error handling to detect and stop faulty retries
  3. Limit concurrency based on your subscription tier
  4. Monitor the Concurrency-Remaining response header
  5. Use js_render and premium_proxy when necessary
  6. Avoid retrying on 400 and 401 errors as they are not recoverable by retries
  7. Remove any timeout from your script to avoid cancelling your request prematurely causing issues on your concurrency

Frequently Asked Questions (FAQ)