> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/products/proxies/residential-proxies/advanced-filters.md).

# Advanced Filters

Learn how to filter Residential Proxies by operating system (OS) or IP version using advanced parameters.

Oxylabs Residential Proxies support advanced filtering parameters to adjust your proxy pool by **Operating System (OS)** platform fingerprint or **IP protocol version (IPv4 vs. IPv6)**.

{% hint style="success" %}
**To enable this feature**, contact your Account Manager (details available in the [Dashboard](https://dashboard.oxylabs.io/)). You may need to complete a quick [KYC](https://oxylabs.io/kyc-and-safety) procedure.
{% endhint %}

<table><thead><tr><th width="117">Filter</th><th width="106">Parameter</th><th width="221">Values</th><th>Description</th></tr></thead><tbody><tr><td><a href="#platform-os-filtering"><strong>Platform (OS)</strong></a></td><td><code>platform</code></td><td><code>windows</code>, <code>macos</code>, <code>linux</code>, <code>android</code>, <code>ios</code></td><td>Matches TCP connection fingerprint to target OS.</td></tr><tr><td><a href="#ip-version-selection-ipv4-ipv6"><strong>IP Version</strong></a></td><td><code>ipversion</code></td><td><code>ipversion-4</code>, <code>ipversion-6</code></td><td>Restricts proxy pool strictly to IPv4 or IPv6.</td></tr></tbody></table>

## Platform (OS)

The `platform` parameter matches the Transmission Control Protocol (TCP) fingerprint of the residential proxy exit node to a specified operating system. Matching your proxy's OS fingerprint with your client HTTP headers (e.g., emulating Chrome on Windows) prevents fingerprint mismatches that target websites use to detect bot traffic.

Supported `platform` values:

* `windows`
* `macos`
* `linux`
* `android`
* `ios`

```
customer-USERNAME-platform-windows:PASSWORD
```

{% hint style="warning" %}
**Note:** Because residential proxies are dynamic peer devices, pool availability may be constrained when combining `platform` with [location parameters](/products/proxies/residential-proxies/location-settings.md) (such as `city` or `postalcode`).&#x20;
{% endhint %}

#### Code examples

{% tabs %}
{% tab title="cURL" %}

```bash
curl -x pr.oxylabs.io:7777 -U "customer-USERNAME-platform-windows:PASSWORD" https://ip.oxylabs.io/location
```

{% endtab %}

{% tab title="Python" %}

```python
import urllib.request

username = 'USERNAME'
password = 'PASSWORD'
entry = f'http://customer-{username}-platform-windows:{password}@pr.oxylabs.io:7777'

query = urllib.request.ProxyHandler({'http': entry, 'https': entry})
execute = urllib.request.build_opener(query)
print(execute.open('https://ip.oxylabs.io/location').read().decode('utf-8'))
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$username = 'USERNAME';
$password = 'PASSWORD';
$platform = 'windows';
$proxy = 'pr.oxylabs.io:7777';

$query = curl_init('https://ip.oxylabs.io/location');
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($query, CURLOPT_PROXY, "http://$proxy");
curl_setopt($query, CURLOPT_PROXYUSERPWD, "customer-$username-platform-$platform:$password");
$output = curl_exec($query);
curl_close($query);
echo $output;
?>
```

{% endtab %}
{% endtabs %}

## IP version

By default, Oxylabs Residential Proxies use both IPv4 and IPv6 addresses. To force connections exclusively through IPv4 or IPv6 exit nodes, pass the `ipversion` parameter with your username string as either `ipversion-4` (IPv4 pool) or `ipversion-6` (IPv6 pool):

```
customer-USERNAME-ipversion-X:PASSWORD
```

If you use `ipversion-6` on a target website that does not support IPv6, Oxylabs proxies automatically resolve the request via IPv4 by default to prevent connection failures.

{% hint style="info" %}
To disable automatic fallback and enforce strict IPv6 routing, contact your Account Manager. If strict routing is enabled and the target lacks IPv6 support, requests will return an HTTP `522 Bad Response` error.
{% endhint %}

#### Code examples

{% tabs %}
{% tab title="cURL" %}

```bash
curl -x pr.oxylabs.io:7777 -U "customer-USERNAME-ipversion-6:PASSWORD" https://ip.oxylabs.io/location
```

{% endtab %}

{% tab title="Python" %}

```python
import urllib.request

username = 'USERNAME'
password = 'PASSWORD'
entry = f'http://customer-{username}-ipversion-6:{password}@pr.oxylabs.io:7777'

query = urllib.request.ProxyHandler({'http': entry, 'https': entry})
execute = urllib.request.build_opener(query)
print(execute.open('https://ip.oxylabs.io/location').read().decode('utf-8'))
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$username = 'USERNAME';
$password = 'PASSWORD';
$proxy = 'pr.oxylabs.io:7777';

$query = curl_init('https://ip.oxylabs.io/location');
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($query, CURLOPT_PROXY, "http://$proxy");
curl_setopt($query, CURLOPT_PROXYUSERPWD, "customer-$username-ipversion-6:$password");
$output = curl_exec($query);
curl_close($query);
echo $output;
?>
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://developers.oxylabs.io/products/proxies/residential-proxies/advanced-filters.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
