> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zenrows.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API Error Codes

> Complete list of ZenRows API error codes with troubleshooting steps, status code meanings, and solutions for common request failures.

Understanding the ZenRows® Universal Scraper API error codes is crucial for troubleshooting and optimizing your interactions with ZenRows. Below are common errors you may encounter, along with explanations and recommended actions.

Each error code corresponds to specific conditions encountered during the Universal Scraper API usage, from authentication problems to request handling and server responses.

## 400 Bad Request<span style={{scrollMarginTop: 80}} id="400" />

### REQS001 Requests To This Domain Are Forbidden<span style={{scrollMarginTop: 80}} id="REQS001" />

**Problem:** Requests to this URL are forbidden.

**Solution:**

1. Check our [target sites' access restrictions and user behavior guidelines](/forbidden-sites) to see if the domain is explicitly blocked
2. Try using a different domain that provides similar data
3. If you need to scrape this specific domain for a legitimate business purpose, contact our support team to discuss potential options

### REQS002 Request Requirements Unsatisfied<span style={{scrollMarginTop: 80}} id="REQS002" />

**Problem:** The requested URL domain needs JavaScript rendering and/or Premium Proxies due to its high-level security defenses.

**Solution:**

1. Read the error message to understand the specific requirements for the domain
2. Add `js_render=true` and/or `premium_proxy=true` parameters to your request, depending on the domain's requirements

### REQS004 Invalid Params Provided<span style={{scrollMarginTop: 80}} id="REQS004" />

**Problem:** Some parameters or even the URL are invalid or not properly encoded.

**Solution:**

1. Read the error message to understand the specific issue
2. Ensure your URL is properly URL-encoded (check our [guide on encoding URLs](/universal-scraper-api/faq#how-to-encode-urls)) or the http you use is doing it for you
3. Validate that all parameter values match the expected types (boolean, string, etc.)
4. Remove any invalid or unsupported parameters from your request
5. Check that you are not sending query parameters for the target page as parameters for the API call

### RESP004 CSS Extractor Parameter Is Not Valid<span style={{scrollMarginTop: 80}} id="RESP004" />

**Problem:** The `css_extractor` parameter sent in your request is not valid.

**Solution:**

1. Check your CSS selector syntax for errors (like missing brackets or quotes)
2. Simplify complex selectors that might be causing issues
3. Test your CSS selector on the actual page using browser developer tools first (`document.querySelector('.your-selector')`)
4. If extracting multiple elements, ensure your JSON structure follows the correct format:

```js theme={null}
css_extractor={
  "title": "h1.product-title",
  "price": "span.product-price"
}
```

### REQS006 Invalid CAPTCHA Solver Key<span style={{scrollMarginTop: 80}} id="REQS006" />

**Problem:** The configured CAPTCHA solver integration API key is invalid.

**Solution:**

1. Verify your CAPTCHA solver API key in your [account integrations](https://app.zenrows.com/account/integrations) page
2. Check that your CAPTCHA solver account has sufficient funds
3. Confirm the CAPTCHA solver service is operational through their status page
4. Try re-generating a new API key from your CAPTCHA solver service

### RESP008 Non-Retryable Error not related to ZenRows<span style={{scrollMarginTop: 80}} id="RESP008" />

**Problem:** The target returned an error on the site's config or certificate, not an error ZenRows can solve or bypass.

**Solution:**

1. Check if the target website is accessible from your browser
2. If you're using geolocation, try a different country as the site might only be available in specific regions
3. Wait a few minutes and retry as the issue might be temporary
4. For SSL certificate issues, try accessing the HTTP version of the site if available

## 401 Unauthorized<span style={{scrollMarginTop: 80}} id="401" />

### AUTH001 API Key Missing<span style={{scrollMarginTop: 80}} id="AUTH001" />

**Problem:** No `apikey` information was sent in your request.

**Solution:**

1. Add the `apikey` parameter to your request
2. Check your code to ensure the apikey is being included in every request
3. For API clients like Axios or Requests, set up default parameters to include your API key automatically
4. Verify the API endpoint structure - the key should be sent as a query parameter to the API endpoint

### AUTH002 Invalid API Key<span style={{scrollMarginTop: 80}} id="AUTH002" />

**Problem:** The `apikey` sent does not match the expected format.

**Solution:**

1. Copy your API key directly from the [ZenRows Playground](https://app.zenrows.com/builder)
2. Ensure no extra spaces or characters were accidentally included
3. Check for any string formatting or concatenation issues in your code
4. If using environment variables, verify they're loading correctly

### AUTH003 API Key Not Found<span style={{scrollMarginTop: 80}} id="AUTH003" />

**Problem:** The `apikey` sent in your request is not valid.

**Solution:**

1. Verify you're using the correct API key from your [ZenRows Playground](https://app.zenrows.com/builder)
2. Check if your API key has been revoked or regenerated recently
3. Ensure your account is active and working, you can perform a request from the Playground itself
4. For team accounts, confirm with your administrator that the key is still valid

## 402 Payment Required<span style={{scrollMarginTop: 80}} id="402" />

### AUTH004 Usage Exceeded<span style={{scrollMarginTop: 80}} id="AUTH004" />

**Problem:** This `apikey` has no more usage remaining.

**Solution:**

1. Top up your account in the [ZenRows Billing page](https://app.zenrows.com/billing)
2. Upgrade your plan in the [ZenRows Plans page](https://app.zenrows.com/plans)
3. Check your current usage to see if you're approaching limits before they're reached
4. For temporary needs or punctual issues, contact our support team

### AUTH005 API Key Is No Longer Valid<span style={{scrollMarginTop: 80}} id="AUTH005" />

**Problem:** This `apikey` has reached its validity period.

**Solution:**

1. Check your subscription in the [ZenRows Billing page](https://app.zenrows.com/billing)
2. Check if your account is active and working, you can perform a request from the [Playground](https://app.zenrows.com/builder) itself
3. Contact support if you believe there is an issue with your account

### AUTH010 Feature Is Not Included In Plan<span style={{scrollMarginTop: 80}} id="AUTH010" />

**Problem:** The requested feature is not included in your subscription plan.

**Solution:**

1. Review the [features included in each plan](https://www.zenrows.com/pricing)
2. Upgrade to a plan that includes the feature you need
3. Modify your code to avoid using premium features if you don't upgrade
4. Contact our support team if you believe there is an issue with your account

### AUTH011 No Subscription Found<span style={{scrollMarginTop: 80}} id="AUTH011" />

**Problem:** This account does not have an active subscription.

**Solution:**

1. Purchase a subscription plan from the [ZenRows plans page](https://app.zenrows.com/plans)
2. Check for any failed payment attempts in your account history
3. Verify your payment method details are correct
4. Contact our support team if you believe there is an issue with your account

### AUTH012 Subscription Does Not Allow To Use The Product<span style={{scrollMarginTop: 80}} id="AUTH012" />

**Problem:** This account subscription does not allow to use this service.

**Solution:**

1. Check which ZenRows products your subscription includes
2. Upgrade to a plan that includes the product you're trying to use
3. Ensure you're using the correct API endpoint for your subscription
4. Contact our support team if you believe there is an issue with your account

## 403 Forbidden<span style={{scrollMarginTop: 80}} id="403" />

### AUTH009 User Is Not Verified<span style={{scrollMarginTop: 80}} id="AUTH009" />

**Problem:** This `apikey` belongs to a user that has not verified the email account.

**Solution:**

1. Check your email inbox (including spam folder) for a verification email
2. Request a new verification email
3. Ensure your email address is entered correctly in your profile
4. Contact support if you continue to have verification issues

### BLK0001 IP Address Blocked<span style={{scrollMarginTop: 80}} id="BLK0001" />

**Problem:** Your IP address has been blocked for exceeding the maximum error rate allowed.

**Solution:**

1. Wait a few minutes before retrying requests
2. Implement error handling in your code to prevent excessive failed requests
3. Use exponential backoff when retrying failed requests
4. If using the service in a high-traffic environment, consider implementing a queue system to manage request rates

<Tip>
  Visit our [troubleshooting guide](/universal-scraper-api/troubleshooting/ip-address-blocked) for step-by-step instructions, common causes, and best practices to quickly restore access.
</Tip>

## 404 Not Found<span style={{scrollMarginTop: 80}} id="404" />

### RESP002 Page Not Found<span style={{scrollMarginTop: 80}} id="RESP002" />

**Problem:** The requested URL page returned a 404 HTTP Status Code.

**Solution:**

1. Verify the URL exists by opening it in a browser
2. Check for typos or encoding issues in the URL
3. If the page was recently available, it might have been moved or deleted
4. For dynamic sites, try adding `js_render=true` as some 404 pages are generated via JavaScript
5. Note that these requests are billed

### RESP007 Site Not Found<span style={{scrollMarginTop: 80}} id="RESP007" />

**Problem:** The requested target domain could not be resolved, or there is no DNS record associated with it.

**Solution:**

1. Verify the domain exists by checking in your browser
2. Check for typos in the domain name
3. If using an IP address, ensure it's correctly formatted
4. If the domain is new or rarely accessed, DNS propagation might still be in progress
5. Try using premium proxies and geolocation since the domain might be available only in certain countries
6. Note that these requests are billed

## 405 Method Not Allowed<span style={{scrollMarginTop: 80}} id="405" />

### REQS005 Method Not Allowed<span style={{scrollMarginTop: 80}} id="REQS005" />

**Problem:** The HTTP verb used to access this page is not allowed.

**Solution:**

1. Change your request method to one of the allowed methods: GET, POST, or PUT
2. For complex requests, consider breaking them down into multiple simpler requests
3. Check if the endpoint you're trying to access has specific method requirements

## 407 Proxy Authentication Required<span style={{scrollMarginTop: 80}} id="407" />

### AUTH007 Invalid Proxy-Authorization Header<span style={{scrollMarginTop: 80}} id="AUTH007" />

**Problem:** The Proxy-Authorization header sent does not match the expected format.

**Solution:**

1. Ensure the Proxy-Authorization header is a base64 encoded string of `<apikey>:<params>`
2. Check your base64 encoding function for errors or incorrect character handling
3. Try API calls instead of proxy mode to ensure that the API key and account are working properly

## 413 Content Too Large<span style={{scrollMarginTop: 80}} id="413" />

### RESP005 Response Size Exceeded The Limit<span style={{scrollMarginTop: 80}} id="RESP005" />

**Problem:** The response data size is bigger than the maximum allowed download size.

**Solution:**

1. Request specific parts of the page using CSS selectors instead of the entire page
2. Split large pages into multiple smaller requests by targeting specific sections
3. Use pagination parameters if available on the target site
4. If using JSON Response, the full response will be considered for the size limit - try removing it and see if it works

<Tip>
  Looking for ways to handle large responses? Check out our [troubleshooting guide](/universal-scraper-api/troubleshooting/response-too-large) for practical strategies, examples, and tips to work within response size limits.
</Tip>

## 422 Unprocessable Entity<span style={{scrollMarginTop: 80}} id="422" />

### RESP001 Could Not Get Content<span style={{scrollMarginTop: 80}} id="RESP001" />

**Problem:** The service couldn't get the content.

**Solution:**

1. Add `js_render=true` as the site might require JavaScript to load content
2. Enable `premium_proxy=true` if the site has anti-bot measures
3. Try adding geolocation to the request set to a country where the site is available
4. Increase wait time with `wait=5000` or higher if content loads slowly
5. Check the error's body for more specific details about the failure
6. Try using custom headers with a referer to mimic a real browser:

```js theme={null}
params={
  // ...
  "custom_headers": true,
}
headers={
  "Referer": "https://www.google.com"
}
```

## 424 Failed Dependency<span style={{scrollMarginTop: 80}} id="424" />

### RESP006 Failed To Solve CAPTCHA<span style={{scrollMarginTop: 80}} id="RESP006" />

**Problem:** The CAPTCHA solver provider was unable to solve the CAPTCHA detected in the page.

**Solution:**

1. Check your CAPTCHA solver service account for sufficient balance
2. Try adding premium proxies to the request
3. Implement retry logic with increasing wait times between attempts

## 429 Too Many Requests<span style={{scrollMarginTop: 80}} id="429" />

### AUTH006 Concurrency Exceeded<span style={{scrollMarginTop: 80}} id="AUTH006" />

**Problem:** The concurrency limit was reached.

**Solution:**

1. Implement a queue system in your code to limit concurrency requests
2. Monitor the `Concurrency-Remaining` header to adjust your request rate dynamically
3. Increase wait times between batches of requests
4. For high-volume scraping needs, upgrade to a plan with higher concurrency limits
5. Learn more about [how ZenRows concurrency works](/universal-scraper-api/features/concurrency) and implement the provided code examples
6. Note that canceled requests on the client side will not release concurrency until the processing is done in the server side - we recommend not setting a timeout below 3 minutes

### AUTH008 Rate Limit Exceeded<span style={{scrollMarginTop: 80}} id="AUTH008" />

**Problem:** The rate limit was reached.

**Solution:**

1. Implement exponential backoff between requests
2. Distribute requests evenly over time rather than sending them in bursts
3. Set up a queue system with configurable delay between requests
4. For time-sensitive projects, consider upgrading to a plan with higher rate limits
5. Monitor usage patterns to identify and optimize peak request periods

## 500 Internal Server Error<span style={{scrollMarginTop: 80}} id="500" />

### CTX0001 Context Cancelled<span style={{scrollMarginTop: 80}} id="CTX0001" />

**Problem:** The request was canceled from the client's side.

**Solution:**

1. Check your client's timeout settings - we recommend not setting a timeout below 3 minutes
2. If you're canceling requests manually, review your cancellation logic
3. Ensure your network connection is stable during the entire request

### ERR0001 Unknown Error<span style={{scrollMarginTop: 80}} id="ERR0001" />

**Problem:** An internal error occurred.

**Solution:**

1. Retry the request after a short delay (10-30 seconds)
2. Check the [ZenRows status page](https://status.zenrows.com/) for any ongoing issues
3. Implement error logging to capture the full error response for troubleshooting
4. If the error persists, contact support with details of your request

### ERR0000 Unknown Error<span style={{scrollMarginTop: 80}} id="ERR0000" />

**Problem:** An unexpected internal error occurred.

**Solution:**

1. Retry the request after a short delay (10-30 seconds)
2. Check the [ZenRows status page](https://status.zenrows.com/) for any ongoing issues
3. Implement error logging to capture the full error response for troubleshooting
4. If the error persists, contact support with details of your request

## 502 Bad Gateway<span style={{scrollMarginTop: 80}} id="502" />

### RESP003 Could Not Parse Content<span style={{scrollMarginTop: 80}} id="RESP003" />

**Problem:** The request failed because the URL could not be automatically parsed.

**Solution:**

1. Remove the `autoparse` parameter and process the raw HTML response
2. Contact support with details of your request if the issue persists

## 504 Gateway Timeout<span style={{scrollMarginTop: 80}} id="504" />

### CTX0002 Operation Timeout Exceeded<span style={{scrollMarginTop: 80}} id="CTX0002" />

**Problem:** The request exceeded the maximum allowed time and was aborted.

**Solution:**

1. Check if the target website is slow or unresponsive in a browser
2. Reduce the complexity of your request if using JS Instructions
3. Try adding premium proxies to the request or geolocation to a country where the site is available
4. Break complex scraping tasks into smaller, more focused requests
5. If the issue persists, contact support with details of your request and use case
