# Traffic and Billing

### Traffic usage

Web Scraper API count the number of **results**. **Results** refer to distinct entities of content (e.g., web page HTML) that were successfully retrieved from the web.

* **Successful results** (billed): All results from the target site with `2xx` or `4xx` status codes are counted as successful and are billable.
* **Unsuccessful results** (not billed): Other results are counted as unsuccessful and are not billed.

{% hint style="info" %}
Status code `429` (Too many requests) is not billed. This occurs when you exceed the rate limit. If you encounter this frequently, contact your account manager to increase your limits.
{% endhint %}

For more information about response codes, please refer to [**the Response Codes table**](https://developers.oxylabs.io/scraping-solutions/web-scraper-api/response-codes).

{% hint style="warning" %}
If the response contains `2xx` or `4xx` status codes, and the result doesn’t contain expected information, we still count it as a successful result.
{% endhint %}

### Billing

You will be billed for the number of results with successfully extracted data.

Failed attempts to scrape due to our system errors (`5xx` and `6xx` status codes) won’t be included, and you won’t be billed for them.

{% hint style="warning" %}
If a request results in a failed attempt due to a fault or error on your side, you will still be billed.
{% endhint %}

Please find a few billing case examples below:

#### Case example #1 - Successful scraping attempt

You create a scraping job, and it takes three attempts for Scraper API to fetch good content from the website successfully. You will be billed only for the result of the last attempt, which was successful.

<figure><img src="https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FCkifJep5dCnDrq4zlf4j%2FScraper%20API%20%E2%80%93%201.png?alt=media&#x26;token=502da82a-f489-4e3c-9302-2cdcd83362d1" alt="Case 1"><figcaption></figcaption></figure>

#### Case example  #2 - Scraping failed due to our error

You create a scraping job that has failed due to our error, e.g., we have reached our internal retry limit. In this case, you will not be billed for the received result.

<figure><img src="https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FcS3Cnm5Cj08KZ0IY3eDM%2FScraper%20API%20%E2%80%93%202.png?alt=media&#x26;token=f3ff4ef8-186a-472b-8b0e-936a58e0be6d" alt="Case 2"><figcaption></figcaption></figure>

#### Case example  #3 - Scraping failed due to the client's error

You create a scraping job that has failed due to an error on your side. You will be billed for this result.<br>

<figure><img src="https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FdfMxK2qPjKL4R4kFLgrC%2FScraper%20API%20%E2%80%93%203.png?alt=media&#x26;token=cd9dd82c-7c7f-43c9-8a96-b0c9065b9be8" alt="Case 3"><figcaption></figcaption></figure>
