NAV Navbar
cURL PHP Python Java C# Ruby
Residential Proxies

Quick Start

This is by far the fastest way to start using Residential Proxies. You will make a request to https://ipinfo.io using a residential proxy from a random location through our Backconnect Entry. Don't forget to replace USERNAME and PASSWORD with your proxy user credentials.

curl -x pr.oxylabs.io:7777 -U "customer-USERNAME:PASSWORD" https://ipinfo.io

Let's make a request using a proxy from France. All you need to do is add cc-FR to your username string. Below is an example in cURL, and here you can find code samples in other languages.

curl -x pr.oxylabs.io:7777 -U "customer-USERNAME-cc-FR:PASSWORD" https://ipinfo.io

Here is one more example of a request that goes through a proxy from London, United Kingdom. Adding cc-GB-city-london to username string enables you to do just that. Click here to get more information on how to master city-level proxy targeting.

curl -x pr.oxylabs.io:7777 -U "customer-USERNAME-cc-GB-city-london:PASSWORD" https://ipinfo.io

What if you want to keep the same proxy for more than one request? Session control enables that. Just add sessid-abc12345 to your username string, where abc12345 can be any random string, and as long as you keep sending requests with this string (session ID), we will try our best to give you the same proxy IP. Learn more here.

curl -x pr.oxylabs.io:7777 -U "customer-USERNAME-sessid-randomString123:PASSWORD" https://ipinfo.io

Check out our integration tutorials with the most popular 3rd party tools, such as Multilogin, ShadowRocket, or SwitchyOmega.

If you have any additional questions, please contact your account manager or our support team at support@oxylabs.io.

To find out your usage statistics, generated traffic, request count and more, please login to dashboard.oxylabs.io. You can also add proxy users (subusers) and track their statistics separately.

Backconnect Entry Node

pr.oxylabs.io:7777

The single backconnect proxy enables to choose a specific country or city proxy via additional parameters in the username. This approach also supports session control. Below is a sample credentials structure:

customer-USERNAME-cc-US-city-CITY-sessid-abcde12345:PASSWORD

Parameter Description
customer Username
cc Case insensitive country code in 2-letter 3166-1 alpha-2 format. For example, DE for Germany, GB for United Kingdom, TH for Thailand. More details on how to use country-specific proxies can be found here.
city Case insensitive city name in English. This parameter has to accompanied by cc for better accuracy. For example, cc-GB-city-london for London, United Kingdom; cc-DE-city-berlin for Berlin, Germany. For a city with more than two words, replace space with _, for example city-st_petersburg or city-rio_de_janeiro. We support every city in the world, but we do not guarantee we will have proxies there. Most popular cities are well covered, and will have many proxies to choose from. For reference, you can check this list of what cities you can expect to find. Click here for more information on city-level targeting.
st Case insensitive US state name with us_ in the beginning, for example us_california, us_illinois. Full list of supported cities in TXT format can be downloaded here.
sessid Session ID to keep the same IP with upcoming queries. Session expires after 10 minutes, after that a new IP is assigned to that ID. Random string; 0-9, A-z characters are supported.
password Password

   - required parameter

We also support targeting by ASN number. It enables to choose proxies from specific carriers. This feature is enabled upon request.

If you add more than one location parameter in the username, the system will ignore all but one. Therefore it's important to understand which parameters get prioritized. The hierarchy is as follows:

  1. city
  2. state
  3. cc

For example, if your query has these parameters customer-username-cc-US-city-paris-st-us_california, you will get a proxy from Paris, US.

Entry Node for China

https://a81298871.com:8000 - Hong Kong
https://cnt9t1is.com:8000 - Beijing

For better connectivity from China, we have configured entry nodes in Hong Kong and Beijing regions. Note that it is an HTTPS proxy node. All username parameters are identical to the regular entry node.

Please note that some 3rd party tools currently do not work with Hong Kong and Beijing entry nodes. 3rd party tools that work with said entry nodes are:

  1. Chrome Proxy Extension
  2. SwitchyOmega
  3. Shadowrocket
  4. Postern

We are currently working on fixing the rest of the integrations on which HTTPS protocol will be supported.

If you are connecting to our residential network from China and still have issues with provided entry nodes, please get in touch at support@oxylabs.io and we will figure out a solution together.

Basic Query

In this example a query to ipinfo.io is performed from a random IP:

curl -x pr.oxylabs.io:7777 -U "customer-USERNAME:PASSWORD" https://ipinfo.io
<?php
$username = 'USERNAME';
$password = 'PASSWORD';
$proxy = 'pr.oxylabs.io:7777';
$query = curl_init('https://ipinfo.io');
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($query, CURLOPT_PROXY, "http://$proxy");
curl_setopt($query, CURLOPT_PROXYUSERPWD, "customer-$username:$password");
$output = curl_exec($query);
curl_close($query);
if ($output)
    echo $output;
?>
import urllib.request
import random
username = 'USERNAME'
password = 'PASSWORD'
entry = ('http://customer-%s:%s@pr.oxylabs.io:7777' %
    (username, password))
query = urllib.request.ProxyHandler({
    'http': entry,
    'https': entry,
})
execute = urllib.request.build_opener(query)
print(execute.open('https://ipinfo.io').read())
package example;

import org.apache.http.HttpHost;
import org.apache.http.client.fluent.*;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpHost entry = new HttpHost("pr.oxylabs.io", 7777);
        String query = Executor.newInstance()
            .auth(entry, "customer-USERNAME", "PASS")
            .execute(Request.Get("http://icanhazip.com").viaProxy(entry))
            .returnContent().asString();
        System.out.println(query);
    }
}
using System;
using System.Net;

class Example
{
    static void Main()
    {
        var client = new WebClient();
        client.Proxy = new WebProxy("pr.oxylabs.io:7777");
        client.Proxy.Credentials = new NetworkCredential("customer-USERNAME", "PASSWORD");
        Console.WriteLine(client.DownloadString("https://ipinfo.io"));
    }
}
require 'uri'
require 'net/http'

uri = URI.parse('https://ipinfo.io/')
proxy = Net::HTTP::Proxy('pr.oxylabs.io', 7777, 'customer-USERNAME', 'PASSWORD')

req = Net::HTTP::Get.new(uri.path)

result = proxy.start(uri.host,uri.port) do |http|
    http.request(req)
end

puts result.body

Basic query only requires to pass username and password. No other parameters are needed. Such query will result in the request being made from a random IP address (proxy). Every new request will use a different proxy.

Select Country

In this example a query to ipinfo.io is performed from a random IP address from Germany:

curl -x pr.oxylabs.io:7777 -U "customer-USERNAME-cc-DE:PASSWORD" https://ipinfo.io
<?php
$username = 'USERNAME';
$password = 'PASSWORD';
$country = 'DE';
$proxy = 'pr.oxylabs.io:7777';
$query = curl_init('https://ipinfo.io');
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($query, CURLOPT_PROXY, "http://$proxy");
curl_setopt($query, CURLOPT_PROXYUSERPWD, "customer-$username-cc-$country:$password");
$output = curl_exec($query);
curl_close($query);
if ($output)
    echo $output;
?>
import urllib.request
import random
username = 'USERNAME'
password = 'PASSWORD'
country = 'DE'
entry = ('http://customer-%s-cc-%s:%s@pr.oxylabs.io:7777' %
    (username, country, password))
query = urllib.request.ProxyHandler({
    'http': entry,
    'https': entry,
})
execute = urllib.request.build_opener(query)
print(execute.open('https://ipinfo.io').read())
package example;

import org.apache.http.HttpHost;
import org.apache.http.client.fluent.*;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpHost entry = new HttpHost("pr.oxylabs.io", 7777);
        String query = Executor.newInstance()
            .auth(entry, "customer-USERNAME-cc-DE", "PASS")
            .execute(Request.Get("http://icanhazip.com").viaProxy(entry))
            .returnContent().asString();
        System.out.println(query);
    }
}
using System;
using System.Net;

class Example
{
    static void Main()
    {
        var client = new WebClient();
        client.Proxy = new WebProxy("pr.oxylabs.io:7777");
        client.Proxy.Credentials = new NetworkCredential("customer-USERNAME-cc-DE", "PASSWORD");
        Console.WriteLine(client.DownloadString("https://ipinfo.io"));
    }
}
require 'uri'
require 'net/http'

uri = URI.parse('https://ipinfo.io/')
proxy = Net::HTTP::Proxy('pr.oxylabs.io', 7777, 'customer-USERNAME-cc-DE', 'PASSWORD')

req = Net::HTTP::Get.new(uri.path)

result = proxy.start(uri.host,uri.port) do |http|
    http.request(req)
end

puts result.body

ResidentialMobileRotating ISP

Adding cc flag to the authorization header enables to specify which country IP to use to process the request. The value of this parameter is a case insensitive country code in 2-letter 3166-1 alpha-2 format. For example, DE for Germany, GB for the United Kingdom, TH for Thailand proxy. See examples for more details.

Select State

In this example a query to ipinfo.io is performed from a random IP address from California, USA:

curl -x pr.oxylabs.io:7777 -U "customer-USERNAME-st-us_california:PASSWORD" https://ipinfo.io
<?php
$username = 'USERNAME';
$password = 'PASSWORD';
$state = 'us_california';
$proxy = 'pr.oxylabs.io:7777';
$query = curl_init('https://ipinfo.io');
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($query, CURLOPT_PROXY, "http://$proxy");
curl_setopt($query, CURLOPT_PROXYUSERPWD, "customer-$username-st-$state:$password");
$output = curl_exec($query);
curl_close($query);
if ($output)
    echo $output;
?>
import urllib.request
import random
username = 'USERNAME'
password = 'PASSWORD'
state = 'us_california'
entry = ('http://customer-%s-st-%s:%s@pr.oxylabs.io:7777' %
    (username, state, password))
query = urllib.request.ProxyHandler({
    'http': entry,
    'https': entry,
})
execute = urllib.request.build_opener(query)
print(execute.open('https://ipinfo.io').read())
package example;

import org.apache.http.HttpHost;
import org.apache.http.client.fluent.*;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpHost entry = new HttpHost("pr.oxylabs.io", 7777);
        String query = Executor.newInstance()
            .auth(entry, "customer-USERNAME-st-us_california", "PASS")
            .execute(Request.Get("http://icanhazip.com").viaProxy(entry))
            .returnContent().asString();
        System.out.println(query);
    }
}
using System;
using System.Net;

class Example
{
    static void Main()
    {
        var client = new WebClient();
        client.Proxy = new WebProxy("pr.oxylabs.io:7777");
        client.Proxy.Credentials = new NetworkCredential("customer-USERNAME-st-us_california", "PASSWORD");
        Console.WriteLine(client.DownloadString("https://ipinfo.io"));
    }
}
require 'uri'
require 'net/http'

uri = URI.parse('https://ipinfo.io/')
proxy = Net::HTTP::Proxy('pr.oxylabs.io', 7777, 'customer-USERNAME-st-us_california', 'PASSWORD')

req = Net::HTTP::Get.new(uri.path)

result = proxy.start(uri.host,uri.port) do |http|
    http.request(req)
end

puts result.body

ResidentialMobileRotating ISP

To get proxy from a specified US state, add st flag to the authorization string. For example, us_california, us_illinois. Full list of supported cities in TXT format can be downloaded here. |

Select City

In this example a query to ipinfo.io is performed from a random IP address from Munich, Germany:

curl -x pr.oxylabs.io:7777 -U "customer-USERNAME-cc-DE-city-munich:PASSWORD" https://ipinfo.io
<?php
$username = 'USERNAME';
$password = 'PASSWORD';
$country = 'DE';
$city = 'munich';
$proxy = 'pr.oxylabs.io:7777';
$query = curl_init('https://ipinfo.io');
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($query, CURLOPT_PROXY, "http://$proxy");
curl_setopt($query, CURLOPT_PROXYUSERPWD, "customer-$username-cc-$country-city-$city:$password");
$output = curl_exec($query);
curl_close($query);
if ($output)
    echo $output;
?>
import urllib.request
import random
username = 'USERNAME'
password = 'PASSWORD'
country = 'DE'
city = 'munich'
entry = ('http://customer-%s-cc-%s-city-%s:%s@pr.oxylabs.io:7777' %
    (username, country, city, password))
query = urllib.request.ProxyHandler({
    'http': entry,
    'https': entry,
})
execute = urllib.request.build_opener(query)
print(execute.open('https://ipinfo.io').read())
package example;

import org.apache.http.HttpHost;
import org.apache.http.client.fluent.*;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpHost entry = new HttpHost("pr.oxylabs.io", 7777);
        String query = Executor.newInstance()
            .auth(entry, "customer-USERNAME-cc-DE-city-munich", "PASS")
            .execute(Request.Get("http://icanhazip.com").viaProxy(entry))
            .returnContent().asString();
        System.out.println(query);
    }
}
using System;
using System.Net;

class Example
{
    static void Main()
    {
        var client = new WebClient();
        client.Proxy = new WebProxy("pr.oxylabs.io:7777");
        client.Proxy.Credentials = new NetworkCredential("customer-USERNAME-cc-DE-city-munich", "PASSWORD");
        Console.WriteLine(client.DownloadString("https://ipinfo.io"));
    }
}
require 'uri'
require 'net/http'

uri = URI.parse('https://ipinfo.io/')
proxy = Net::HTTP::Proxy('pr.oxylabs.io', 7777, 'customer-USERNAME-cc-DE-city-munich', 'PASSWORD')

req = Net::HTTP::Get.new(uri.path)

result = proxy.start(uri.host,uri.port) do |http|
    http.request(req)
end

puts result.body

ResidentialMobileRotating ISP

To narrow down to a city-level targeting, a city parameter needs to be added. For example, cc-DE-city-munich means that a proxy from Munich, Germany, will handle the query. We support every city in the world, but we do not guarantee we will have proxies there. Most popular cities are well covered, and will have many proxies to choose from.

Here are a few examples of valid combinations of cc and city parameters:
cc-US-city-los_angeles
cc-IT-city-rome
cc-TH-city-bangkok
cc-JP-city-tokyo
cc-AU-city-sydney
cc-ES-city-barcelona

Session Control

German IP will be chosen for the first request, and then the same IP will be kept with new queries (session control):

curl -x pr.oxylabs.io:7777 -U "customer-USERNAME-cc-DE-sessid-abcde12345:PASSWORD" https://ipinfo.io
<?php
$username = 'USERNAME';
$password = 'PASSWORD';
$country = 'DE';
$session = mt_rand();
$proxy = 'pr.oxylabs.io:7777';
$query = curl_init('https://ipinfo.io');
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($query, CURLOPT_PROXY, "http://$proxy");
curl_setopt($query, CURLOPT_PROXYUSERPWD, "customer-$username-cc-$country-sessid-$session:$password");
$output = curl_exec($query);
curl_close($query);
if ($output)
    echo $output;
?>
import urllib.request
import random
username = 'USERNAME'
password = 'PASSWORD'
country = 'DE'
city = 'munich'
session = random.random()
entry = ('http://customer-%s-cc-%s-city-%s-sessid-%s:%s@pr.oxylabs.io:7777' %
    (username, country, city, session, password))
query = urllib.request.ProxyHandler({
    'http': entry,
    'https': entry,
})
execute = urllib.request.build_opener(query)
print(execute.open('https://ipinfo.io').read())
package example;

import java.io.*;
import java.util.Random;
import org.apache.http.HttpHost;
import org.apache.http.auth.*;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.fluent.Request;
import org.apache.http.client.methods.*;
import org.apache.http.impl.client.*;
import org.apache.http.impl.conn.BasicHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;

class Client {
    public static final String username = "USERNAME";
    public static final String password = "PASSWORD";
    public String session_id = Integer.toString(new Random().nextInt(Integer.MAX_VALUE));
    public CloseableHttpClient client;

    public Client(String country) {
        String login = "customer-"+username+(country!=null ? "-cc-"+country : "")
            +"-sessid-" + session_id;
        HttpHost entry_node = new HttpHost("pr.oxylabs.io:7777");
        CredentialsProvider credentials_provider = new BasicCredentialsProvider();
        credentials_provider.setCredentials(new AuthScope(entry_node),
            new UsernamePasswordCredentials(login, password));
        client = HttpClients.custom()
            .setConnectionManager(new BasicHttpClientConnectionManager())
            .setProxy(entry_node)
            .setDefaultCredentialsProvider(credentials_provider)
            .build();
    }

    public String request(String url) throws IOException {
        HttpGet request = new HttpGet(url);
        CloseableHttpResponse response = client.execute(request);
        try {
            return EntityUtils.toString(response.getEntity());
        } finally { response.close(); }
    }

    public void close() throws IOException { client.close(); }
}

public class Example {
    public static void main(String[] args) throws IOException {
        Client client = new Client("de");
        try {
            System.out.println(client.request("https://ipinfo.io"));
        } finally { client.close(); }
    }
}
using System;
using System.Net;

class Client : WebClient
{
    public static string username = "USERNAME";
    public static string password = "PASSWORD";
    public string session_id = new Random().Next().ToString();

    public Client(string country_iso = null)
    {
        this.Proxy = new WebProxy("pr.oxylabs.io:7777");
        var login = "customer-"+username+(country_iso != null ? "-cc-"+country_iso : "")
            +"-sessid-"+session_id;
        this.Proxy.Credentials = new NetworkCredential(login, password);
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address) as HttpWebRequest;
        request.ConnectionGroupName = session_id;
        return request;
    }
}

class Example
{
    static void Main()
    {
        var client = new Client("de");
        Console.WriteLine(client.DownloadString("https://ipinfo.io"));
    }
}
require 'uri'
require 'net/http'
require 'net/https'

entry_node = 'pr.oxylabs.io'
entry_port = '7777'
username = 'USERNAME'
password = 'PASSWORD'
session_id = Random.rand(1000000)

uri = URI.parse("https://ipinfo.io/")
headers = {
    'Accept-Encoding' => 'gzip'
}

proxy = Net::HTTP::Proxy(entry_node, entry_port, "#{username}-cc-DE-sessid-#{session_id}", password)
http = proxy.new(uri.host,uri.port)

if uri.scheme == 'https'
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end

req = Net::HTTP::Get.new(uri.path, headers)

result = http.start do |con|
    con.request(req)
end

puts result.body

ResidentialMobileRotating ISP

Adding sessid parameter with session ID string, for example sessid-abc12345, enables session control. This means that the proxy will not change with the following requests. The example below shows how session control works:

The system keeps the same IP associated with a particular session ID as long as there is some activity (requests). After 60 seconds of inactivity, the IP is automatically changed to a different one.

For example: * Your initial query with sessid-random123 got assigned proxy IP address 1.1.1.1 * As long as you keep sending new requests with the same session ID and that IP address is online and available, the system will route your queries through 1.1.1.1 * If you stop sending requests or the IP address is no longer online, the system will assign a new proxy IP after 60 seconds. * This means that your next query with sessid-random123 will be routed through a different IP address.

Standard session time is 10 minutes, but it can be increased. Contact your account manager to learn more.

Country Specific Entry Nodes

Random Proxy Entry Nodes

In this example a query to ipinfo.io is performed from a random Turkey IP:

curl -x tr-pr.oxylabs.io:30000 -U "customer-USERNAME:PASSWORD" https://ipinfo.io
<?php
$username = 'USERNAME';
$password = 'PASSWORD';
$proxy = 'tr-pr.oxylabs.io:30000';
$query = curl_init('https://ipinfo.io');
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($query, CURLOPT_PROXY, "http://$proxy");
curl_setopt($query, CURLOPT_PROXYUSERPWD, "customer-$username:$password");
$output = curl_exec($query);
curl_close($query);
if ($output)
    echo $output;
?>
import urllib.request
import random
username = 'USERNAME'
password = 'PASSWORD'
entry = ('http://customer-%s:%s@tr-pr.oxylabs.io:30000' %
    (username, password))
query = urllib.request.ProxyHandler({
    'http': entry,
    'https': entry,
})
execute = urllib.request.build_opener(query)
print(execute.open('https://ipinfo.io').read())
package example;

import org.apache.http.HttpHost;
import org.apache.http.client.fluent.*;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpHost entry = new HttpHost("tr-pr.oxylabs.io", 30000);
        String query = Executor.newInstance()
            .auth(entry, "customer-USERNAME", "PASS")
            .execute(Request.Get("http://icanhazip.com").viaProxy(entry))
            .returnContent().asString();
        System.out.println(query);
    }
}
using System;
using System.Net;

class Example
{
    static void Main()
    {
        var client = new WebClient();
        client.Proxy = new WebProxy("tr-pr.oxylabs.io:30000");
        client.Proxy.Credentials = new NetworkCredential("customer-USERNAME", "PASSWORD");
        Console.WriteLine(client.DownloadString("https://ipinfo.io"));
    }
}
#!/usr/bin/ruby

require 'uri'
require 'net/http'

uri = URI.parse('https://ipinfo.io/')
proxy = Net::HTTP::Proxy('tr-pr.oxylabs.io', 30000, 'customer-USERNAME', 'PASSWORD')

req = Net::HTTP::Get.new(uri.path)

result = proxy.start(uri.host,uri.port) do |http|
    http.request(req)
end

puts result.body
pr.oxylabs.io:7777
us-pr.oxylabs.io:10000
ca-pr.oxylabs.io:30000
gb-pr.oxylabs.io:20000
de-pr.oxylabs.io:30000
fr-pr.oxylabs.io:40000
es-pr.oxylabs.io:10000
it-pr.oxylabs.io:20000
se-pr.oxylabs.io:30000
gr-pr.oxylabs.io:40000
pt-pr.oxylabs.io:10000
nl-pr.oxylabs.io:20000
be-pr.oxylabs.io:30000
ru-pr.oxylabs.io:40000
ua-pr.oxylabs.io:10000
pl-pr.oxylabs.io:20000
il-pr.oxylabs.io:20000
tr-pr.oxylabs.io:30000
au-pr.oxylabs.io:40000
my-pr.oxylabs.io:10000
th-pr.oxylabs.io:20000
kr-pr.oxylabs.io:30000
jp-pr.oxylabs.io:40000
ph-pr.oxylabs.io:10000
sg-pr.oxylabs.io:20000
cn-pr.oxylabs.io:30000
hk-pr.oxylabs.io:40000
tw-pr.oxylabs.io:10000
in-pr.oxylabs.io:20000
pk-pr.oxylabs.io:30000
ir-pr.oxylabs.io:40000
id-pr.oxylabs.io:10000
az-pr.oxylabs.io:20000
kz-pr.oxylabs.io:30000
ae-pr.oxylabs.io:40000
mx-pr.oxylabs.io:10000
br-pr.oxylabs.io:20000
ar-pr.oxylabs.io:30000
cl-pr.oxylabs.io:40000
pe-pr.oxylabs.io:10000
ec-pr.oxylabs.io:20000
co-pr.oxylabs.io:30000
za-pr.oxylabs.io:40000
eg-pr.oxylabs.io:10000
sa-pr.oxylabs.io:44000
dk-pr.oxylabs.io:19000
ao-pr.oxylabs.io:40000
cm-pr.oxylabs.io:41000
cf-pr.oxylabs.io:42000
td-pr.oxylabs.io:43000
bj-pr.oxylabs.io:44000
et-pr.oxylabs.io:45000
dj-pr.oxylabs.io:46000
gm-pr.oxylabs.io:47000
gh-pr.oxylabs.io:48000
ci-pr.oxylabs.io:49000
ke-pr.oxylabs.io:10000
lr-pr.oxylabs.io:11000
mg-pr.oxylabs.io:12000
ml-pr.oxylabs.io:13000
mr-pr.oxylabs.io:14000
mu-pr.oxylabs.io:15000
ma-pr.oxylabs.io:16000
mz-pr.oxylabs.io:17000
ng-pr.oxylabs.io:18000
sn-pr.oxylabs.io:19000
sc-pr.oxylabs.io:20000
zw-pr.oxylabs.io:21000
ss-pr.oxylabs.io:22000
sd-pr.oxylabs.io:23000
tg-pr.oxylabs.io:24000
tn-pr.oxylabs.io:25000
ug-pr.oxylabs.io:26000
zm-pr.oxylabs.io:27000
af-pr.oxylabs.io:28000
bh-pr.oxylabs.io:29000
bd-pr.oxylabs.io:30000
am-pr.oxylabs.io:31000
bt-pr.oxylabs.io:32000
mm-pr.oxylabs.io:33000
kh-pr.oxylabs.io:34000
ge-pr.oxylabs.io:36000
iq-pr.oxylabs.io:37000
jo-pr.oxylabs.io:38000
lb-pr.oxylabs.io:39000
mv-pr.oxylabs.io:40000
mn-pr.oxylabs.io:41000
om-pr.oxylabs.io:42000
qa-pr.oxylabs.io:43000
sa-pr.oxylabs.io:44000
vn-pr.oxylabs.io:45000
tm-pr.oxylabs.io:46000
uz-pr.oxylabs.io:47000
ye-pr.oxylabs.io:48000
al-pr.oxylabs.io:49000
ad-pr.oxylabs.io:10000
at-pr.oxylabs.io:11000
ba-pr.oxylabs.io:13000
bg-pr.oxylabs.io:14000
by-pr.oxylabs.io:15000
hr-pr.oxylabs.io:16000
cy-pr.oxylabs.io:35000
cz-pr.oxylabs.io:18000
dk-pr.oxylabs.io:19000
ee-pr.oxylabs.io:20000
fi-pr.oxylabs.io:21000
hu-pr.oxylabs.io:23000
is-pr.oxylabs.io:24000
ie-pr.oxylabs.io:25000
lv-pr.oxylabs.io:26000
li-pr.oxylabs.io:27000
lt-pr.oxylabs.io:28000
lu-pr.oxylabs.io:29000
mt-pr.oxylabs.io:30000
mc-pr.oxylabs.io:31000
md-pr.oxylabs.io:32000
me-pr.oxylabs.io:33000
no-pr.oxylabs.io:34000
ro-pr.oxylabs.io:35000
rs-pr.oxylabs.io:36000
sk-pr.oxylabs.io:37000
si-pr.oxylabs.io:38000
ch-pr.oxylabs.io:39000
mk-pr.oxylabs.io:40000
bs-pr.oxylabs.io:41000
bz-pr.oxylabs.io:42000
vg-pr.oxylabs.io:43000
cr-pr.oxylabs.io:44000
cu-pr.oxylabs.io:45000
dm-pr.oxylabs.io:46000
ht-pr.oxylabs.io:47000
hn-pr.oxylabs.io:48000
jm-pr.oxylabs.io:49000
aw-pr.oxylabs.io:10000
pa-pr.oxylabs.io:11000
pr-pr.oxylabs.io:12000
tt-pr.oxylabs.io:13000
fj-pr.oxylabs.io:14000
nz-pr.oxylabs.io:15000
bo-pr.oxylabs.io:16000
py-pr.oxylabs.io:17000
uy-pr.oxylabs.io:18000
ve-pr.oxylabs.io:19000

Oxylabs residential network has coverage in almost every country in the world. Country-specific random proxy entry point will return new IP with every new request.

You do not need to pass any additional parameters, just customer-username:password. If you have whitelisted IPs, you do not need to pass login credentials. Country-specific ports do not support city-level results.

Please see the dashboard for entry point information or download a full list of random entry points in XLS here.

Random
pr.oxylabs.io:7777
USA
us-pr.oxylabs.io:10000
Canada
ca-pr.oxylabs.io:30000
GB
gb-pr.oxylabs.io:20000
Germany
de-pr.oxylabs.io:30000
France
fr-pr.oxylabs.io:40000
Spain
es-pr.oxylabs.io:10000
Italy
it-pr.oxylabs.io:20000
Sweden
se-pr.oxylabs.io:30000
Greece
gr-pr.oxylabs.io:40000
Portugal
pt-pr.oxylabs.io:10000
Netherlands
nl-pr.oxylabs.io:20000
Belgium
be-pr.oxylabs.io:30000
Russia
ru-pr.oxylabs.io:40000
Ukraine
ua-pr.oxylabs.io:10000
Poland
pl-pr.oxylabs.io:20000
Israel
il-pr.oxylabs.io:20000
Turkey
tr-pr.oxylabs.io:30000
Australia
au-pr.oxylabs.io:40000
Malaysia
my-pr.oxylabs.io:10000
Thailand
th-pr.oxylabs.io:20000
South Korea
kr-pr.oxylabs.io:30000
Japan
jp-pr.oxylabs.io:40000
Philippines
ph-pr.oxylabs.io:10000
Singapore
sg-pr.oxylabs.io:20000
China
cn-pr.oxylabs.io:30000
Hong Kong
hk-pr.oxylabs.io:40000
Taiwan
tw-pr.oxylabs.io:10000
India
in-pr.oxylabs.io:20000
Pakistan
pk-pr.oxylabs.io:30000
Iran
ir-pr.oxylabs.io:40000
Indonesia
id-pr.oxylabs.io:10000
Azerbaijan
az-pr.oxylabs.io:20000
Kazakhstan
kz-pr.oxylabs.io:30000
UAE
ae-pr.oxylabs.io:40000
Mexico
mx-pr.oxylabs.io:10000
Brazil
br-pr.oxylabs.io:20000
Argentina
ar-pr.oxylabs.io:30000
Chile
cl-pr.oxylabs.io:40000
Peru
pe-pr.oxylabs.io:10000
Ecuador
ec-pr.oxylabs.io:20000
Colombia
co-pr.oxylabs.io:30000
South Africa
za-pr.oxylabs.io:40000
Egypt
eg-pr.oxylabs.io:10000
Angola
ao-pr.oxylabs.io:40000
Cameroon
cm-pr.oxylabs.io:41000
Central African Republic
cf-pr.oxylabs.io:42000
Chad
td-pr.oxylabs.io:43000
Benin
bj-pr.oxylabs.io:44000
Ethiopia
et-pr.oxylabs.io:45000
Djibouti
dj-pr.oxylabs.io:46000
Gambia
gm-pr.oxylabs.io:47000
Ghana
gh-pr.oxylabs.io:48000
Côte d'Ivoire
ci-pr.oxylabs.io:49000
Kenya
ke-pr.oxylabs.io:10000
Liberia
lr-pr.oxylabs.io:11000
Madagascar
mg-pr.oxylabs.io:12000
Mali
ml-pr.oxylabs.io:13000
Mauritania
mr-pr.oxylabs.io:14000
Mauritius
mu-pr.oxylabs.io:15000
Morocco
ma-pr.oxylabs.io:16000
Mozambique
mz-pr.oxylabs.io:17000
Nigeria
ng-pr.oxylabs.io:18000
Senegal
sn-pr.oxylabs.io:19000
Seychelles
sc-pr.oxylabs.io:20000
Zimbabwe
zw-pr.oxylabs.io:21000
South Sudan
ss-pr.oxylabs.io:22000
Sudan
sd-pr.oxylabs.io:23000
Togo
tg-pr.oxylabs.io:24000
Tunisia
tn-pr.oxylabs.io:25000
Uganda
ug-pr.oxylabs.io:26000
Zambia
zm-pr.oxylabs.io:27000
Afghanistan
af-pr.oxylabs.io:28000
Bahrain
bh-pr.oxylabs.io:29000
Bangladesh
bd-pr.oxylabs.io:30000
Armenia
am-pr.oxylabs.io:31000
Bhutan
bt-pr.oxylabs.io:32000
Myanmar
mm-pr.oxylabs.io:33000
Cambodia
kh-pr.oxylabs.io:34000
Georgia
ge-pr.oxylabs.io:36000
Iraq
iq-pr.oxylabs.io:37000
Jordan
jo-pr.oxylabs.io:38000
Lebanon
lb-pr.oxylabs.io:39000
Maldives
mv-pr.oxylabs.io:40000
Mongolia
mn-pr.oxylabs.io:41000
Oman
om-pr.oxylabs.io:42000
Qatar
qa-pr.oxylabs.io:43000
Saudi Arabia
sa-pr.oxylabs.io:44000
Vietnam
vn-pr.oxylabs.io:45000
Turkmenistan
tm-pr.oxylabs.io:46000
Uzbekistan
uz-pr.oxylabs.io:47000
Yemen
ye-pr.oxylabs.io:48000
Albania
al-pr.oxylabs.io:49000
Andorra
ad-pr.oxylabs.io:10000
Austria
at-pr.oxylabs.io:11000
Bosnia and Herzegovina
ba-pr.oxylabs.io:13000
Bulgaria
bg-pr.oxylabs.io:14000
Belarus
by-pr.oxylabs.io:15000
Croatia
hr-pr.oxylabs.io:16000
Cyprus
cy-pr.oxylabs.io:35000
Czech Republic
cz-pr.oxylabs.io:18000
Denmark
dk-pr.oxylabs.io:19000
Estonia
ee-pr.oxylabs.io:20000
Finland
fi-pr.oxylabs.io:21000
Hungary
hu-pr.oxylabs.io:23000
Iceland
is-pr.oxylabs.io:24000
Ireland
ie-pr.oxylabs.io:25000
Latvia
lv-pr.oxylabs.io:26000
Liechtenstein
li-pr.oxylabs.io:27000
Lithuania
lt-pr.oxylabs.io:28000
Luxembourg
lu-pr.oxylabs.io:29000
Malta
mt-pr.oxylabs.io:30000
Monaco
mc-pr.oxylabs.io:31000
Moldova
md-pr.oxylabs.io:32000
Montenegro
me-pr.oxylabs.io:33000
Norway
no-pr.oxylabs.io:34000
Romania
ro-pr.oxylabs.io:35000
Serbia
rs-pr.oxylabs.io:36000
Slovakia
sk-pr.oxylabs.io:37000
Slovenia
si-pr.oxylabs.io:38000
Switzerland
ch-pr.oxylabs.io:39000
Macedonia
mk-pr.oxylabs.io:40000
Bahamas
bs-pr.oxylabs.io:41000
Belize
bz-pr.oxylabs.io:42000
British Virgin Islands
vg-pr.oxylabs.io:43000
Costa Rica
cr-pr.oxylabs.io:44000
Cuba
cu-pr.oxylabs.io:45000
Dominica
dm-pr.oxylabs.io:46000
Haiti
ht-pr.oxylabs.io:47000
Honduras
hn-pr.oxylabs.io:48000
Jamaica
jm-pr.oxylabs.io:49000
Aruba
aw-pr.oxylabs.io:10000
Panama
pa-pr.oxylabs.io:11000
Puerto Rico
pr-pr.oxylabs.io:12000
Trinidad and Tobago
tt-pr.oxylabs.io:13000
Fiji
fj-pr.oxylabs.io:14000
New Zealand
nz-pr.oxylabs.io:15000
Bolivia
bo-pr.oxylabs.io:16000
Paraguay
py-pr.oxylabs.io:17000
Uruguay
uy-pr.oxylabs.io:18000
Venezuela
ve-pr.oxylabs.io:19000

Sticky Proxy Entry Nodes

In this example, a query to ipinfo.io is performed from Turkey IP, and the same IP will stay for up to 10 minutes with each request. We have chosen port 30001, however, Turkey sticky entry points cover ports from 30001 to 39999.

curl -x tr-pr.oxylabs.io:30001 -U "customer-USERNAME:PASSWORD" https://ipinfo.io
<?php
$username = 'USERNAME';
$password = 'PASSWORD';
$proxy = 'tr-pr.oxylabs.io:30001';
$query = curl_init('https://ipinfo.io');
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($query, CURLOPT_PROXY, "http://$proxy");
curl_setopt($query, CURLOPT_PROXYUSERPWD, "customer-$username:$password");
$output = curl_exec($query);
curl_close($query);
if ($output)
    echo $output;
?>
import urllib.request
import random
username = 'USERNAME'
password = 'PASSWORD'
entry = ('http://customer-%s:%s@tr-pr.oxylabs.io:30001' %
    (username, password))
query = urllib.request.ProxyHandler({
    'http': entry,
    'https': entry,
})
execute = urllib.request.build_opener(query)
print(execute.open('https://ipinfo.io').read())
package example;

import org.apache.http.HttpHost;
import org.apache.http.client.fluent.*;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpHost entry = new HttpHost("tr-pr.oxylabs.io", 30001);
        String query = Executor.newInstance()
            .auth(entry, "customer-USERNAME", "PASS")
            .execute(Request.Get("http://icanhazip.com").viaProxy(entry))
            .returnContent().asString();
        System.out.println(query);
    }
}
using System;
using System;
using System.Net;

class Example
{
    static void Main()
    {
        var client = new WebClient();
        client.Proxy = new WebProxy("tr-pr.oxylabs.io:30001");
        client.Proxy.Credentials = new NetworkCredential("customer-USERNAME", "PASSWORD");
        Console.WriteLine(client.DownloadString("https://ipinfo.io"));
    }
}
require 'uri'
require 'net/http'

uri = URI.parse('https://ipinfo.io/')
proxy = Net::HTTP::Proxy('tr-pr.oxylabs.io', 30001, 'customer-USERNAME', 'PASSWORD')

req = Net::HTTP::Get.new(uri.path)

result = proxy.start(uri.host,uri.port) do |http|
    http.request(req)
end

puts result.body
pr.oxylabs.io:10000 - 49999
us-pr.oxylabs.io:10001 - 19999
ca-pr.oxylabs.io:30001 - 39999
gb-pr.oxylabs.io:20001 - 29999
de-pr.oxylabs.io:30001 - 39999
fr-pr.oxylabs.io:40001 - 49999
es-pr.oxylabs.io:10001 - 19999
it-pr.oxylabs.io:20001 - 29999
se-pr.oxylabs.io:30001 - 39999
gr-pr.oxylabs.io:40001 - 49999
pt-pr.oxylabs.io:10001 - 19999
nl-pr.oxylabs.io:20001 - 29999
be-pr.oxylabs.io:30001 - 39999
ru-pr.oxylabs.io:40001 - 49999
ua-pr.oxylabs.io:10001 - 19999
pl-pr.oxylabs.io:20001 - 29999
il-pr.oxylabs.io:20001 - 29999
tr-pr.oxylabs.io:30001 - 39999
au-pr.oxylabs.io:40001 - 49999
my-pr.oxylabs.io:10001 - 19999
th-pr.oxylabs.io:20001 - 29999
kr-pr.oxylabs.io:30001 - 39999
jp-pr.oxylabs.io:40001 - 49999
ph-pr.oxylabs.io:10001 - 19999
sg-pr.oxylabs.io:20001 - 29999
cn-pr.oxylabs.io:30001 - 39999
hk-pr.oxylabs.io:40001 - 49999
tw-pr.oxylabs.io:10001 - 19999
in-pr.oxylabs.io:20001 - 29999
pk-pr.oxylabs.io:30001 - 39999
ir-pr.oxylabs.io:40001 - 49999
id-pr.oxylabs.io:10001 - 19999
az-pr.oxylabs.io:20001 - 29999
kz-pr.oxylabs.io:30001 - 39999
ae-pr.oxylabs.io:40001 - 49999
mx-pr.oxylabs.io:10001 - 19999
br-pr.oxylabs.io:20001 - 29999
ar-pr.oxylabs.io:30001 - 39999
cl-pr.oxylabs.io:40001 - 49999
pe-pr.oxylabs.io:10001 - 19999
ec-pr.oxylabs.io:20001 - 29999
co-pr.oxylabs.io:30001 - 39999
za-pr.oxylabs.io:40001 - 49999
eg-pr.oxylabs.io:10001 - 19999
sa-pr.oxylabs.io:44001 - 44999
dk-pr.oxylabs.io:19001 - 19999

Country-specific sticky proxy entry point will return the same IP with every new request while you will use the same port. IP stickiness works for up to 10 minutes. After that, the IP is replaced with a new one.

You do not need to pass any additional parameters, just customer-username:password. If you have whitelisted IPs, you do not need to pass login credentials. Country-specific ports do not support city-level results.

Please see the dashboard for entry point information or download a full list of sticky entry points in XLS here.

Random
pr.oxylabs.io:10000 - 49999
USA
us-pr.oxylabs.io:10001 - 19999
Canada
ca-pr.oxylabs.io:30001 - 39999
Great Britain
gb-pr.oxylabs.io:20001 - 29999
Germany
de-pr.oxylabs.io:30001 - 39999
France
fr-pr.oxylabs.io:40001 - 49999
Spain
es-pr.oxylabs.io:10001 - 19999
Italy
it-pr.oxylabs.io:20001 - 29999
Sweden
se-pr.oxylabs.io:30001 - 39999
Greece
gr-pr.oxylabs.io:40001 - 49999
Portugal
pt-pr.oxylabs.io:10001 - 19999
Netherlands
nl-pr.oxylabs.io:20001 - 29999
Belgium
be-pr.oxylabs.io:30001 - 39999
Russia
ru-pr.oxylabs.io:40001 - 49999
Ukraine
ua-pr.oxylabs.io:10001 - 19999
Poland
pl-pr.oxylabs.io:20001 - 29999
Israel
il-pr.oxylabs.io:20001 - 29999
Turkey
tr-pr.oxylabs.io:30001 - 39999
Australia
au-pr.oxylabs.io:40001 - 49999
Malaysia
my-pr.oxylabs.io:10001 - 19999
Thailand
th-pr.oxylabs.io:20001 - 29999
South Korea
kr-pr.oxylabs.io:30001 - 39999
Japan
jp-pr.oxylabs.io:40001 - 49999
Philippines
ph-pr.oxylabs.io:10001 - 19999
Singapore
sg-pr.oxylabs.io:20001 - 29999
China
cn-pr.oxylabs.io:30001 - 39999
Hong Kong
hk-pr.oxylabs.io:40001 - 49999
Taiwan
tw-pr.oxylabs.io:10001 - 19999
India
in-pr.oxylabs.io:20001 - 29999
Pakistan
pk-pr.oxylabs.io:30001 - 39999
Iran
ir-pr.oxylabs.io:40001 - 49999
Indonesia
id-pr.oxylabs.io:10001 - 19999
Azerbaijan
az-pr.oxylabs.io:20001 - 29999
Kazakhstan
kz-pr.oxylabs.io:30001 - 39999
UAE
ae-pr.oxylabs.io:40001 - 49999
Mexico
mx-pr.oxylabs.io:10001 - 19999
Brazil
br-pr.oxylabs.io:20001 - 29999
Argentina
ar-pr.oxylabs.io:30001 - 39999
Chile
cl-pr.oxylabs.io:40001 - 49999
Peru
pe-pr.oxylabs.io:10001 - 19999
Ecuador
ec-pr.oxylabs.io:20001 - 29999
Colombia
co-pr.oxylabs.io:30001 - 39999
South Africa
za-pr.oxylabs.io:40001 - 49999
Egypt
eg-pr.oxylabs.io:10001 - 19999
Saudi Arabia
sa-pr.oxylabs.io:44001 - 44999
Denmark
dk-pr.oxylabs.io:19001 - 19999

Additional Information

Country, State, City Mapping

We use MaxMind GeoIP2 database to assign our exit nodes cc, st and city values. This database is updated weekly.

Some other public IP databases may show different locations. In cases where location mismatch is crucial, we encourage to double-check if the location of the assigned proxy is the same on the IP database used by the target website.

Response Codes

These are the most common response codes that you can get while using our residential proxy pool. If you receive any other response code, get in touch with your dedicated account manager for more information.

Response Description
400 Bad Request Proxy server can return this error code if the request did not contain a host to connect to or there was a generic error when parsing HTTP request. Make sure your request is correctly formed and make sure to include URL in the request then try again.
407 Proxy Authentication Required Request lacks proxy authentication information or username or password is invalid. Include Proxy-Authorization header in your request and make sure your username and password are correctly formed and then try again.
500 Internal Server Error Proxy server has encountered an internal error. Retry request at a later time.
502 Bad Gateway Proxy server received an invalid response from the upstream server. Retry request.

Response Code 502 signifies that the IP assigned to your session ID is no longer available. If you encounter this error, there are two ways to work around it. The first is to wait for one minute and the system will automatically assign a new IP address to your session ID. Another approach is to simply switch to a new session ID (i.e. change the sessid parameter) – this way you will receive a new IP address.
522 Timeout Proxy server did not receive a response from the upstream server in time. Retry request.
525 No Exit Found Custom HTTP status code - this means proxy was unable to find an exit node which satisfies the request. Change request filter parameters or try again at a later time.

Backconnect Entry IPs

If you want to use your own backconnect entry node DNS name, you can do that by pointing your subdomain/domain to our entry node. To do that, you need to add a DNS CNAME record that has pr.oxylabs.io as the target. This is how such setup looks on Cloudflare DNS manager for entry subdomain:

For more information, please contact support@oxylabs.io or your account manager.

Restricted URLs

To avoid abuse and unclear activities, some websites are restricted on our residential proxy network. The list includes, but is not limited to websites such as all Google domains including Play, linkedin.com, sonyentertainmentnetwork.com, all Apple domains, including iTunes, netflix.com and others. For more information please contact our support staff at support@oxylabs.io.

Public API

To manage proxy users via Public API, please refer to this documentation in OpenAPI format. The API allows to create, delete, and modify proxy users, set their limits and see current usage, disable and enable them.

3rd Party Integrations

Please note that you must use an HTTPS protocol when accessing China entry nodes for 3rd party tools to work correctly.

Chrome Proxy Extension

Chrome Proxy Extension is a free proxy manager for Chrome. It is not only free but also works with any proxy provider of your choice. Enable your proxy without having to jump through settings and menu options. The extension has an additional feature specifically designed to use with Oxylabs Residential Proxies, which enables to easily change Oxylabs Residential Proxy session without editing your username. Download the extension from Chrome Web Store here

You can also use country-specific entries. For example, if you put us-pr.oxylabs.io under Proxy server IP and 10001 under Port, you will receive US exit node with sticky session.

If you have whitelisted your IP, you can skip this step.

You can also check out our free Proxy Manager App for Android which allows you to easily add and manage your proxies as well as switch between multiple IPs with a simple one-click connection.

SwitchyOmega

SwitchyOmega is a powerful and reliable proxy manager that works with many popular browsers. First you need to get the plugin. For Chrome, click here, for Firefox click here. Once you have it installed, you should:

If you have whitelisted your IP, please skip this step.

Shadowrocket

If you want to use our Residential Proxies with Shadowrocket, you can easily do that by following the instructions below.

You can also use country-specific entries. For example, if you put us-pr.oxylabs.io under Host and 10001 under Port, you will receive US exit node with a sticky session.

Proxifier

If you want to use our Residential Proxies with Proxfier, you can easily do that by following the instructions below.

Multilogin

Our proxies also work with Multilogin app. Setting up is easy, just follow the instructions below.

Postern

Postern is a very popular proxy/VPN management application on Android. You can get it on Google Play Store. Here is a step-by-step guide how to configure our Residential Proxies on Postern:

You can also use country-specific entries. For example, if you put us-pr.oxylabs.io under Server Address and 10001 under Server Port, you will receive the US exit node with sticky session.

GoLogin

GoLogin is a multi-login browser management application for Windows, Linux and Mac OS. Get it on its official website here. Here is a step-by-step guide how to configure our Residential Proxies on GoLogin for Windows:

You can also use country-specific entries. For example, if you put us-pr.oxylabs.io and 10001 under Proxy Host and Port, you will receive the US exit node with a sticky session. To fully utilize all available Residential Proxies features such as sessions and country, state, city geolocation parameters, please reffer to the corresponding sections in the documentation.

Kameleo

Kameleo is a multi-login browser management application for Windows and Android. Get it on its official website here. Here is a step-by-step guide how to configure our Residential Proxies on Kameleo for Windows:

You can also use country-specific entries. For example, if you put us-pr.oxylabs.io under Proxy IP or hostname and 10001 under Proxy Port, you will receive the US exit node with a sticky session.

ClonBrowser

ClonBrowser is another multi-login browser management application for Windows and Mac. Get it on its official website here. Here is a step-by-step guide how to configure our Residential Proxies on ClonBrowser for Windows:

You can also use country-specific entries. For example, if you put us-pr.oxylabs.io under Proxy IP or hostname and 10001 under Proxy Port, you will receive the US exit node with a sticky session.

You can check if the proxy works by clicking Connection test. If everything is fine, click Create profile.

AdsPower

AdsPower is a multi-login browser management application for Windows and Mac. You get it on its official website here. Here is the step-by-step guide how to configure our Residential Proxies on AdsPower for Windows:

You can also use country specific entries. For example, if you put us-pr.oxylabs.io under Proxy Host and 10001 under *Proxy Port, you will receive US exit node with sticky session.

You can check if the proxy works by clicking Check Proxy. If everything is fine, click Create profile.

VMLogin

Virtual Multi Login, or VMLogin, is a tool for creating virtual browser profiles that help control browser fingerprinting, setup business workflows, and develop web automation, among other things. To use VMLogin with Oxylabs Residential Proxies, download the latest version of VMLogin here.

Undetectable

Firstly, you will need to get Undetectable. To do that, simply go to undetectable.io, sign up, and download the browser.

Then, open the application and click "+" to create a new profile.

In the following window, under New Profile, enter the new profile name. Choose the settings (OS, browser, configurations, and screen) of how you want your browser to be recognized by websites.

Also, you can select the main and additional languages, while geo-location will be determined by your proxy.

Go to the Proxy tab and select the "New proxy" option in the box.

You can choose either SOCKS5 or HTTP (select HTTP proxy as a connection type). Now fill in proxy and authentication details: type pr.oxylabs.io for your Host and use 7777 for Port. Enter your credentials in the Login and Password spaces. Do not forget to add customer- at the beginning of your username. If you have whitelisted your devices, you do not need to provide login credentials.

You can also use country-specific entries. For example, if you put us- pr.oxylabs.io under Host and 10001 under Port, you will receive US exit node with a sticky session. Please check out our complete list of country-secific entry nodes.

Click the Check button. If everything is fine, you should get a response indicating External IP. Press the Save Proxy button to confirm the changes.

Now save the profile by pressing the Save button, and you will see it appear on the left side menu. Edit your profiles easily by simply clicking on them.

That's it! You have successfully set up your proxies with Undetectable.io.

Puppeteer

Before getting started with Puppeteer, you’ll need to install some basic tools: Node.js and a code editor of your choice. After that, create a Node.js project and install the required packages. You may find a detailed guide on how to install and run Puppeteer on our blog post.

Once everything is set up, we can move on to the next part – Oxylabs Residential Proxies integration with Puppeteer.

pr.oxylabs.io:7777

const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch({
    headless: false,
    args: ['--proxy-server=pr.oxylabs.io:7777]  
});
  const page = await browser.newPage();
    await page.authenticate({
        username: 'USERNAME',
        password: 'PASSWORD'
    });
    await page.goto('https://ip.oxylabs.io');
    await page.screenshot({path: 'example.png'});
    await browser.close();
})();

You can also use country-specific entries. For example, if you put us-pr.oxylabs.io under ‘host’ and 10001 under ‘port’, you will receive a US exit node with a sticky session. Please check out our documentation for a complete list of country-specific entry nodes.

And that’s it! You’ve successfully integrated Oxylabs Residential proxies with Puppeteer.

ParseHub

Settings configuration in ParseHub is a pretty straightforward process. Before getting started, visit Oxylabs dashboard and add your IP address to the whitelist under Residential Proxies > Whitelist. If you haven't created your user yet, do that in the Residential Proxies > Users section as well. You may need your user credentials for authentication in ParseHub later on. Then, follow the steps below:

*Select “Advanced”, click on the “Network” tab, and choose “Settings”.

That's it! You've successfully integrated Oxylabs Residential Proxies with ParseHub. To make sure it's working properly, check your IP address on a database such as whatismyipaddress.com.

Helium Scraper

Helium Scraper is a straightforward data extraction tool. It allows you to scrape public data employing proxies to avoid various restrictions such as CAPTCHA and an IP getting blocked. The tool lets you focus on the desired data, not on how to get it. Helium's infrastructure offers unlimited scalability, extraction, custom scenarios, and supports multiple export formats.

To integrate Oxylabs Proxies with Helium Scraper, follow the steps below:

To enable Proxies for Helium Scraper, follow the septs below:

Finally, to verify the proxy integration with Helium Scraper, visit a website that shows IP addresses using Helium's main browser. Confirm that the IP address has indeed changed. That's all! You've successfully integrated your Residential Proxies with Helium.

WebHarvy

WebHarvy is an intuitive visual scraper that easily scrapes text, HTML, images, URLs, and emails from websites. The Inbuilt browser allows you to click on specific content for scraping. The cursor detects data patterns that occur on a webpage. If the data repeats, the tool scrapes automatically without any additional user input. The entire lists on multiple pages are extracted in just a few clicks. Lastly, WebHarvy saves scraped data in Excel, XML, CSV, JSON, and TSV formats.

To integrate Oxylabs Proxies with WebHarvy, follow the steps below:

That's all. Now you can browse the internet and mark the specific rows to scrape. By clicking Start you can begin selecting your target data.

Ghost Browser

Ghost Browser is an open-source browser built on Chromium. It enables multi-session browsing identities and workspaces for users to get the most out of browsing while being malware and tracking-free. One of the features Ghost Browser carries so-called 'cookie jars' that are isolated from one another, in this way allowing users to log in to multiple accounts within one website at once.

To set up proxies in Ghost Browser, follow the steps below:

That's it! You've successfully integrated our Residential Proxies with Ghost Browser. Don't forget to check your IP address before surfing the web.

Playwright

const playwright = require('playwright');
(async () => {
    for (const browserType of ['chromium', 'firefox', 'webkit']) {
        const browser = await playwright[browserType].launch({
            headless: false,
            proxy: {
                server: 'http://pr.oxylabs.io:7777',
                username: 'USERNAME',
                password: 'PASSWORD'
            },
        });
        const context = await browser.newContext();
        const page = await context.newPage();
        await page.goto('https://ip.oxylabs.io');
        await page.screenshot({ path: `${browserType}.png` });
        await browser.close();
    }
})();

Playwright is a convenient framework for automation and testing purposes. It can work with web browser interactions, e.g., navigate to URLs, enter text, click buttons, extract text, and more.

Before getting started with Playwright, you'll need to install a few basic tools: Node.js and a code editor of your choice. After that, create a Node.js project and install the required packages. You may find a detailed guide on how to install and run Playwright on our blog post.

Once everything is set up, we can move on to the next part – Oxylabs' Residential Proxies integration with Playwright.

You can also use country-specific entries. For example, if you put us-pr.oxylabs.io under 'host' and 10001 under 'port', you'll receive a US exit node with a sticky session. Please, check out our documentation for a complete list of country-specific entry nodes.

And that's it! You've successfully integrated Oxylabs' Residential Proxies with Playwright.

Octoparse

Octoparse is a simple-to-use data extraction tool. It allows you to scrape public data without coding and bypass most anti-scraping mechanisms by enabling automatic IP rotation and extended session time. Amplified by the advanced machine learning algorithms, Octoparse quickly locates the data when you click on it. It handles complex websites and captures all kinds of data, including text, link, image URL, and HTML code.

To integrate Octoparse with Oxylabs Residential Proxies, follow the simple steps below:

That's it – you are all set up and ready to focus on your web scraping tasks with Octoparse.

Incogniton

Incogniton is a tool that enables multiple easy-to-use profile management solutions. It is useful for overseeing numerous online identities while keeping uncompromised privacy. Each profile sets up a unique instance of an anonymous web browser. Incogniton provides a complete functional infrastructure. The only element you need to outsource personally is a proxy.

To integrate Incogniton with Oxylabs proxies, follow the steps below.

And that's it. You have successfully integrated your proxies with Incogniton. By clicking Start on your freshly set up profile, you'll see a pop-up of an incognito browser window. Now you can begin your web operations enhanced by anonymous flexibility.

Selenium

Checking if proxy is working:

try:
    driver.get("https://ip.oxylabs.io/")
    return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
finally:
    driver.quit()

Full code for Oxylabs' Residential Proxies integration with Selenium:

from selenium.webdriver.common.by import By
from seleniumwire import webdriver
# A package to have a chromedriver always up-to-date.
from webdriver_manager.chrome import ChromeDriverManager

USERNAME = "your_username"
PASSWORD = "your_password"
ENDPOINT = "pr.oxylabs.io:7777"

def chrome_proxy(user: str, password: str, endpoint: str) -> dict:
    wire_options = {
        "proxy": {
            "http": f"http://{user}:{password}@{endpoint}",
            "https": f"http://{user}:{password}@{endpoint}",
        }
    }

    return wire_options

def execute_driver():
    options = webdriver.ChromeOptions()
    options.headless = True
    proxies = chrome_proxy(USERNAME, PASSWORD, ENDPOINT)
    driver = webdriver.Chrome(
        ChromeDriverManager().install(), options=options, seleniumwire_options=proxies
    )
    try:
        driver.get("https://ip.oxylabs.io/")
        return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
    finally:
        driver.quit()

if __name__ == "__main__":
    print(execute_driver())

Selenium is a tool that helps automate web browser interactions for website testing and more. It's useful when you need to interact with a browser to perform a number of tasks, such as clicking on buttons, scrolling, etc. Even if primarily Selenium is used for website testing, it can also be used for web scraping because it helps locate the required public data on a website.

To integrate Selenium with Oxylabs proxies, follow the instructions below:

Proxy authentication

Once everything is set up, you can move on to the next part – proxy authentication. For proxies to work, you'll be prompted to specify your account credentials.

USERNAME = "your_username"
PASSWORD = "your_password"
ENDPOINT = "pr.oxylabs.io:7777"

You'll need to adjust your_username and your_password fields with the username and password of your proxy user.

Testing proxy server connection

If you need to check if the proxy is working, you should visit ip.oxylabs.io. If everything is working correctly, it will return an IP address of a proxy that you're using.