# Getting Started

### Getting Started with GoProxies

Our documentation provides comprehensive setup instructions for all proxy types we offer. It includes guidance on basic HTTP queries, detailed integration processes with recommended third-party tools, and most popular library code examples.

{% hint style="info" %}
Choose the proxy type that best suits your needs for smooth integration process.
{% endhint %}

{% columns %}
{% column %}
{% content-ref url="/pages/dopPBksaCwwoicLn7aOy" %}
[Rotating Residential Proxies](/proxies/rotating-residential-proxies/rotating-residential-proxies)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
{% content-ref url="/pages/eoOP6AvBSuCdG7PhKl6E" %}
[ISP Residential Proxies](/proxies/isp-residential-proxies)
{% endcontent-ref %}
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/y2yEZCf7QvuxQmU9SqiM" %}
[Shared DataCenter Proxies](/proxies/shared-datacenter-proxies/shared-datacenter-proxies)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
{% content-ref url="/pages/1nwHGGprsLsB1FzLhA8s" %}
[Dedicated DataCenter Proxies](/proxies/dedicated-datacenter-proxies/dedicated-datacenter-proxies)
{% endcontent-ref %}
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/UKLorhejoUHWY1z7PyBU" %}
[Mobile Proxies](/proxies/mobile-proxies)
{% endcontent-ref %}
{% endcolumn %}

{% column %}

{% endcolumn %}
{% endcolumns %}


# Rotating Residential Proxies

Our Rotating Residential Proxies use genuine IP addresses issued by ISPs to real devices worldwide. These proxies are ideal for simulating real browser activity, minimizing the chances of detection and blocking.

**Key Features**

* **Seamless Integration**: Easily incorporate our proxies into your system.
* **Automatic IP Rotation**: Enjoy consistent IP changes without manual intervention.
* **Session Stickiness**: Maintain the same IP if required for up to 10 minutes.
* **Easy Implementation**: Simple setup to get started quickly.


# Rotating Residential Proxies

Rotating Residential Proxies Quick Start

Goproxies.com supports:

* HTTPS proxy protocol (a.k.a. HTTP proxy with CONNECT method)
* HTTP proxy protocol

Service is accessed using following entry data:

* **Host:** proxy.goproxies.com - All countries.&#x20;

{% hint style="info" %}
Although we have an automatic routing, you may manually target preferred regions to reduce latency:&#x20;

* proxy-asia.goproxies.com - for Asia and Oceania

* proxy-europe.goproxies.com - for Europe and Africa

* proxy-america.goproxies.com - for both Americas
  {% endhint %}

* **Port:** 1080

* **Authorisation:** Basic

* **Username/Password:** *\[provided separately].*&#x20;

There are two types of credentials:

1. **Dashboard user** - used to access the [GoProxies dashboard](https://dashboard.goproxies.com/).
2. **Proxy user** - used to access our proxy pool. Please ensure you use the proxy user credentials when sending requests to our proxy network.

Below are a few basic request examples in various programming languages. You can test it via any application that has HTTP(s) proxy feature or simply a terminal command:

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" expandable="true" %}

```bash
curl --proxytunnel --proxy "https://customer-USERNAME:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const proxyAuth = encodeURIComponent('customer-USERNAME') + ':' + encodeURIComponent('PASSWORD');
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`; // use http:// here for CONNECT proxy auth
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

username = "customer-USERNAME"
password = "PASSWORD"

proxy = f"https://{username}:{password}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)

print(resp.status_code)
print(resp.text)

```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"net/http"
	"net/url"
	"time"
	"io"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		// Optional: tune TLSHandshakeTimeout, IdleConnTimeout, etc.
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}

```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort), new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {
      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby Net::HTTP" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME:PASSWORD');
// Use tunnel for HTTPS so CONNECT is used
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

#### Control Your Connection <a href="#control-your-connection" id="control-your-connection"></a>

* You can refine your proxy request by including parameters that manage IP selection.&#x20;
* Continue reading our step-by-step guide for more information on additional proxy parameters, along with detailed examples.

{% hint style="info" %}
If you cannot find something or need help, contact us at <support@goproxies.com> or start an Intercom chat.
{% endhint %}


# Proxy parameters

This section describes IP targeting and controlling via parameters in Username.

GoProxies Residential Proxies provide access to over 160 different locations and support country, city, and state targeting.

### Country, City, State mapping

We currently use ip2location.com and ipinfo.io databases to assign exit values of `country`, `city` and `state` to our nodes.

Other public databases might show different locations due to database differences. If location mismatches cannot occur, please first ensure the IP assigned by the proxy matches the target website's database location.


# Country

To target a specific country's IP, add the `country` header to the username. The value should be a case-insensitive 2-letter country code in **ISO 3166-1 alpha-2** format, such as `DE` for Germany, `GB` for the United Kingdom, and `ES` for Spain. Example below with more details.\
\
Examples of a few countries that you can target in the `country` parameter:

| Country        | Country parameter |
| -------------- | ----------------- |
| United States  | `country-us`      |
| United Kingdom | `country-gb`      |
| Japan          | `country-jp`      |

The full list for country abbreviations may be found here: [Full Country List](https://docs.goproxies.com/proxies/faq/list-of-all-countries-with-their-2-digit-codes-iso-3166-1)

### Request example

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" expandable="true" %}

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-country-us:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-country-us'; // or -country-gb, -country-jp
const password = 'PASSWORD';

// percent-encode username/password if they contain special chars
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
  console.log(res.status, res.data);
})();

```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-country-gb"  # country-gb example
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	// country example: -country-jp
	proxyURL, _ := url.Parse("http://customer-USERNAME-country-jp:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyCountry {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-country-gb"; // example
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby — Net::HTTP" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-country-jp'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-country-us:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true); // use CONNECT for HTTPS

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# State

To receive proxy IP address from a specific state, you would need to use the state header together with the 2-letter **ISO 3166-1 alpha-2** country code. For example `state-us_illinois` , `state-us_ohio` , `state-us_california .`

Below is a few examples with the `state` targeting in the username.

| State    | State parameter     |
| -------- | ------------------- |
| Alabama  | `state-us_alabama`  |
| Colorado | `state-us_colorado` |
| Florida  | `state-us_florida`  |

### Request example

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-state-us_idaho:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-state-us_florida'; // example
const password = 'PASSWORD';
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-state-us_colorado"
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-state-us_alabama:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyStateExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-state-us_florida";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-state-us_alabama'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-state-us_colorado:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

> Note: State parameter will have priority against Country, so if used together those headers will be ignored.


# City

You can add a city header parameter together with the 2-letter **ISO 3166-1 alpha-2** country code to target a specific city. For example, using `customer-USERNAME-city-us_chicago` will request a proxy specifically from Chicago, United States.

Examples of a few cities that you can target in the `city` parameter:

| City        | City parameter        |
| ----------- | --------------------- |
| Los Angeles | `city-us_los_angeles` |
| London      | `city-gb_london`      |
| Munich      | `city-de_munich`      |

### Request example

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-city-us_chicago:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-city-us_chicago'; // example
const password = 'PASSWORD';
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();

```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-city-us_chicago"
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-city-us_chicago:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-city-us_newyork'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyCityExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-city-us_losangeles";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-city-us_chicago:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

> Note: City header will have priority against State and Country, so if used together those headers will be ignored.


# Session Stickiness

### Establishing a session

The `sessionid` proxy header maintains the same IP address for a session up to 10 minutes, as long as the IP remains in the pool. If not, a new IP is assigned. To reuse an IP, use the same `sessionid` header with a unique identifier of 4 to 10 digits, e.g., `sessionid-42831931` .&#x20;

For session duration adjustments, contact us at <support@goproxies.com>.

### Credentials list of examples for different sessions

Examples below contain a list of credentials that establish a new unique session.

`customer-USERNAME-sessionid-7129391:PASSWORD`\
`customer-USERNAME-sessionid-8128311:PASSWORD`\
`customer-USERNAME-sessionid-1812819:PASSWORD`\
`customer-USERNAME-sessionid-289301:PASSWORD`\
`customer-USERNAME-sessionid-3916211:PASSWORD`<br>

### Understanding sessionid header

When using a session ID, such as `customer-USERNAME-sessionid-7129391:PASSWORD`, the proxy assigns you an IP address (e.g., 1.1.1.1), valid for 10 minutes. Any requests using the same `sessionid` will return the same IP. If there's no activity with the session ID for 10 minutes, you may be assigned a new IP (e.g., 1.1.1.2), or if the old IP is unavailable, it will be replaced as well.

### Request example

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-sessionid-7182391:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-sessionid-7182391';
const password = 'PASSWORD';
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-sessionid-7182391"
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-sessionid-7182391:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxySessionExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-sessionid-7182391";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-sessionid-7182391'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-sessionid-7182391:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# ASN targeting

ASN targeting is not compatible with any random continent, therefore the examples will vary from other targeting methods. This is because ASN targeting only uses region-based endpoints.

use one of these region endpoints depending on ASN:

* America: proxy-america.goproxies.com:1080
* Europe: proxy-europe.goproxies.com:1080
* Asia: proxy-asia.goproxies.com:1080

Format for username: customer-USERNAME-asn-XXXX (replace XXXX with the ASN).

Below are short snippet examples. Please see their comments too where applicable:

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
# America
curl --proxytunnel --proxy "https://customer-USERNAME-asn-12345:PASSWORD@proxy-america.goproxies.com:1080" https://ip.goproxies.com

# Europe
curl --proxytunnel --proxy "https://customer-USERNAME-asn-54321:PASSWORD@proxy-europe.goproxies.com:1080" https://ip.goproxies.com

# Asia
curl --proxytunnel --proxy "https://customer-USERNAME-asn-99999:PASSWORD@proxy-asia.goproxies.com:1080" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-asn-12345';
const password = 'PASSWORD';
const proxyHost = 'proxy-america.goproxies.com:1080'; // or proxy-europe..., proxy-asia...
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@${proxyHost}`;
const agent = new HttpsProxyAgent(proxyUrl);

await axios.get('https://ip.goproxies.com', { httpsAgent: agent });
```

{% endtab %}

{% tab title="Python" %}

```python
from urllib.parse import quote
import requests

username = "customer-USERNAME-asn-12345"
password = "PASSWORD"
proxy_host = "proxy-europe.goproxies.com:1080"  # choose region
proxy = f"http://{quote(username)}:{quote(password)}@{proxy_host}"

proxies = {"http": proxy, "https": proxy}
print(requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10).text)
```

{% endtab %}

{% tab title="Go" %}

```go
proxyURL, _ := url.Parse("http://customer-USERNAME-asn-99999:PASSWORD@proxy-asia.goproxies.com:1080")
transport := &http.Transport{Proxy: http.ProxyURL(proxyURL)}
client := &http.Client{Transport: transport}
resp, _ := client.Get("https://ip.goproxies.com")
defer resp.Body.Close()
io.Copy(os.Stdout, resp.Body)
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-asn-54321'
password = 'PASSWORD'
proxy_addr = 'proxy-asia.goproxies.com'
proxy_port = 1080

uri = URI('https://ip.goproxies.com')
Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  puts http.get(uri).body
end
```

{% endtab %}

{% tab title="Java" %}

```java
// assume Apache HttpClient on the classpath
String proxyHost = "proxy-america.goproxies.com";
int proxyPort = 1080;
String user = "customer-USERNAME-asn-12345";
String pass = "PASSWORD";

// (CredentialsProvider + HttpHost + RequestConfig same as previous examples)
```

{% endtab %}

{% tab title="PHP" %}

```php
$ch = curl_init('https://ip.goproxies.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy-europe.goproxies.com:1080'); // region
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-asn-54321:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
echo curl_exec($ch);
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# Dedicated DataCenter Proxies

GoProxies' Dedicated DataCenter proxies provide an ideal solution for overcoming blocks, offering private and exclusive access just for you. Since these proxies are not shared, they ensure enhanced privacy, improved performance, and reliable, uninterrupted access.

Discover our Dedicated DataCenter proxies in this guide and start your journey today.


# Dedicated DataCenter Proxies

Dedicated DataCenter Proxies Quick Start

Service is accessed using following entry data:

* **Host:** hosting.goproxies.com - All countries.&#x20;
* **Port:** 1080
* **Authorisation:** Basic
* **Username/Password:** *\[provided separately]*

There are two types of credentials:

1. **Dashboard user** - used to access the [GoProxies dashboard](https://dashboard.goproxies.com/).
2. **Proxy user** - used to access our proxy pool. Please ensure you use the proxy user credentials when sending requests to our proxy network.

You can test it via any application that has HTTP(s) proxy feature (Chrome, SwitchyOmega, Profixier, Foxy Proxy, Proxy Switcher etc.) or simply a terminal command:

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --proxytunnel --proxy "https://customer-USERNAME:PASSWORD@hosting.goproxies.com:1080" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME';
const password = 'PASSWORD';
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@hosting.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

username = "customer-USERNAME"
password = "PASSWORD"

proxy = f"https://{username}:{password}@hosting.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)

print(resp.status_code)
print(resp.text)

```

{% endtab %}

{% tab title="Go" %}

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class SharedDatacenterProxy {
    public static void main(String[] args) throws Exception {
        String proxyHost = "hosting.goproxies.com";
        int proxyPort = 1080;
        String user = "customer-USERNAME";
        String pass = "PASSWORD";

        CredentialsProvider credsProvider = new BasicCredentialsProvider();
        credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
                new UsernamePasswordCredentials(user, pass));

        HttpHost proxy = new HttpHost(proxyHost, proxyPort);
        RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

        try (CloseableHttpClient httpclient = HttpClients.custom()
                .setDefaultCredentialsProvider(credsProvider)
                .build()) {

            HttpGet httpget = new HttpGet("https://ip.goproxies.com");
            httpget.setConfig(config);

            try (CloseableHttpResponse response = httpclient.execute(httpget)) {
                System.out.println(response.getStatusLine());
                System.out.println(new String(response.getEntity().getContent().readAllBytes()));
            }
        }
    }
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'hosting.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'hosting.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

#### Control Your Connection <a href="#control-your-connection" id="control-your-connection"></a>

* You can refine your proxy request by including parameters that manage IP selection.&#x20;
* Continue reading our step-by-step guide for more information on additional proxy parameters, along with detailed examples.


# Proxy parameters

### Establishing a session

To maintain a consistent IP address, use the `sessionid` proxy header. The same IP will be assigned as long as possible, if it's in the pool. If the IP is no longer available or removed due to quality issues, a new IP is assigned. To reuse an IP, apply the same `sessionid` header alongside a unique identifier comprising 4 to 10 digits, like.&#x20;


# Country

To target a specific country's IP, add the `country` header to the username. The value should be a case-insensitive 2-letter country code in **ISO 3166-1 alpha-2** format, such as `DE` for Germany, `GB` for the United Kingdom, and `ES` for Spain. Example below with more details.\
\
Examples of a few countries that you can target in the `country` parameter:

| United States  | `country-us` |
| -------------- | ------------ |
| United Kingdom | `country-gb` |
| Japan          | `country-jp` |

The full list of country abbreviations may be found here: [Full Country List](https://docs.goproxies.com/proxies/faq/list-of-all-countries-with-their-2-digit-codes-iso-3166-1)

### Request example

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-country-us:PASSWORD@hosting.goproxies.com" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// country-example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-country-gb'; // e.g. country-gb
const password = 'PASSWORD';
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@hosting.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
# country_example.py
import requests
from urllib.parse import quote

username = "customer-USERNAME-country-jp"  # e.g. country-jp
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@hosting.goproxies.com:1080"

proxies = {"http": proxy, "https": proxy}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-country-jp:PASSWORD@hosting.goproxies.com:1080") // e.g. country-jp
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class CountrySharedDatacenter {
  public static void main(String[] args) throws Exception {
    String proxyHost = "hosting.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-country-gb"; // e.g. country-gb
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}

```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# country_example.rb
require 'net/http'
require 'uri'

username = 'customer-USERNAME-country-us' # e.g. country-us
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'hosting.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// country_example.php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'hosting.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-country-us:PASSWORD'); // e.g. country-us
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# State

To receive proxy IP address from a specific state, you would need to use the state header together with the 2-letter **ISO 3166-1 alpha-2** country code. For example `state-us_illinois` , `state-us_ohio` , `state-us_california .`

Below is a few examples with the `state` targeting in the username.

| Alabama  | `state-us_alabama`  |
| -------- | ------------------- |
| Colorado | `state-us_colorado` |
| Florida  | `state-us_florida`  |

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-state-us_idaho:PASSWORD@hosting.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// state-example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-state-us_florida'; // e.g. state-us_florida
const password = 'PASSWORD';
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@hosting.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
# state_example.py
import requests
from urllib.parse import quote

username = "customer-USERNAME-state-us_colorado"  # e.g. state-us_colorado
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@hosting.goproxies.com:1080"

proxies = {"http": proxy, "https": proxy}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-state-us_florida:PASSWORD@hosting.goproxies.com:1080") // e.g. state-us_florida
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}

```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# state_example.rb
require 'net/http'
require 'uri'

username = 'customer-USERNAME-state-us_alabama' # e.g. state-us_alabama
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'hosting.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class StateSharedDatacenter {
  public static void main(String[] args) throws Exception {
    String proxyHost = "hosting.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-state-us_florida"; // e.g. state-us_florida
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}

```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// state_example.php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'hosting.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-state-us_colorado:PASSWORD'); // e.g. state-us_colorado
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

> Note: State parameter will have priority against Country, so if used together those headers will be ignored.


# City

You can add a city header parameter together with the 2-letter **ISO 3166-1 alpha-2** country code to target a specific city. For example, using `customer-USERNAME-city-us_chicago` will request a proxy specifically from Chicago, United States.

Examples of a few cities that you can target in the `city` parameter:

| Los Angeles | `city-us_los_angeles` |
| ----------- | --------------------- |
| London      | `city-gb_london`      |
| Munich      | `city-de_munich`      |

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-city-us_chicago:PASSWORD@hosting.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// city-example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-city-us_los_angeles'; // e.g. city-us_los_angeles
const password = 'PASSWORD';
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@hosting.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
# city_example.py
import requests
from urllib.parse import quote

username = "customer-USERNAME-city-gb_london"  # e.g. city-gb_london
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@hosting.goproxies.com:1080"

proxies = {"http": proxy, "https": proxy}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-city-us_los_angeles:PASSWORD@hosting.goproxies.com:1080") // e.g. city-us_los_angeles
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class CitySharedDatacenter {
  public static void main(String[] args) throws Exception {
    String proxyHost = "hosting.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-city-us_los_angeles"; // e.g. city-us_los_angeles
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}

```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# city_example.rb
require 'net/http'
require 'uri'

username = 'customer-USERNAME-city-de_munich' # e.g. city-de_munich
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'hosting.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// city_example.php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'hosting.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-city-de_munich:PASSWORD'); // e.g. city-de_munich
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

> Note: City header will have priority against State and Country, so if used together those headers will be ignored.


# Session Stickiness

### Establishing a session

To maintain a consistent IP address with the `sessionid` proxy header, the same IP can be used for up to 10 minutes, provided it stays in the available pool. If the IP is no longer available or removed due to quality issues, a new IP is assigned. To reuse an IP, apply the same `sessionid` header alongside a unique identifier comprising 4 to 10 digits, like.&#x20;

For session duration adjustments in case it is needed, contact us at <support@goproxies.com>.

### Credentials list of examples for different sessions

Examples below contain a list of credentials that establish a new unique session.

`customer-USERNAME-sessionid-3821319:PASSWORD`\
`customer-USERNAME-sessionid-192938:PASSWORD`\
`customer-USERNAME-sessionid-489582:PASSWORD`\
`customer-USERNAME-sessionid-283881:PASSWORD`\
`customer-USERNAME-sessionid-891928:PASSWORD`<br>

### Understanding sessionid header

When using a session ID like `customer-USERNAME-sessionid-128338:PASSWORD`, the proxy assigns an IP address (e.g., 1.1.1.1), which is valid for technicaly as long as the server is active, but if the old IP actually becomes unavailable, it will be replaced.

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-sessionid-128338:PASSWORD@hosting.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// sessionid-example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-sessionid-3821319'; // unique session ID
const password = 'PASSWORD';
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@hosting.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
# sessionid_example.py
import requests
from urllib.parse import quote

username = "customer-USERNAME-sessionid-489582"  # unique session ID
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@hosting.goproxies.com:1080"

proxies = {"http": proxy, "https": proxy}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-sessionid-3821319:PASSWORD@hosting.goproxies.com:1080") // unique session ID
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# sessionid_example.rb
require 'net/http'
require 'uri'

username = 'customer-USERNAME-sessionid-283881' # unique session ID
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'hosting.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class SessionidSharedDatacenter {
  public static void main(String[] args) throws Exception {
    String proxyHost = "hosting.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-sessionid-891928"; // unique session ID
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}

```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// sessionid_example.php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'hosting.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-sessionid-192938:PASSWORD'); // unique session ID
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# List of client's IPs

To view list of IPs client has:

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

```bash
curl https://username:password@hosting.goproxies.com/ip-list
```

{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios
```

```javascript
// ip_list.js
const axios = require('axios');

(async () => {
  try {
    const res = await axios.get('https://hosting.goproxies.com/ip-list', {
      auth: { username: 'username', password: 'password' },
      timeout: 10000
    });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
    if (err.response) console.error('status code:', err.response.status);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
# ip_list.py
import requests

username = "username"
password = "password"

resp = requests.get("https://hosting.goproxies.com/ip-list", auth=(username, password), timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, _ := http.NewRequest("GET", "https://hosting.goproxies.com/ip-list", nil)
	req.SetBasicAuth("username", "password")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("request error:", err)
		os.Exit(1)
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;

public class IpList {
  public static void main(String[] args) throws Exception {
    String username = "username";
    String password = "password";
    String auth = Base64.getEncoder().encodeToString((username + ":" + password).getBytes());

    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://hosting.goproxies.com/ip-list"))
        .header("Authorization", "Basic " + auth)
        .GET()
        .build();

    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println(response.statusCode());
    System.out.println(response.body());
  }
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# ip_list.rb
require 'net/http'
require 'uri'

uri = URI('https://hosting.goproxies.com/ip-list')
req = Net::HTTP::Get.new(uri)
req.basic_auth('username', 'password')

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(req)
end

puts res.code
puts res.body
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://hosting.goproxies.com/ip-list');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'username:password'); // basic auth
$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# Mobile Proxies

Mobile Proxies Quick Start

GoProxies Mobile Proxies provide high-anonymity mobile IPs that originate from real cellular networks. You can successfully avoid rate limits and geo-restrictions while staying completely anonymous. These IPs behave like real mobile device connections, making them ideal for app testing, ad verification, mobile emulation, and geo-sensitive data collection.&#x20;

**Key benefits:**

* Authentic 4G/5G mobile IPs
* Fast response times
* High success rate
* Precise geo-targeting by country, state, city or ASN
* Dynamic IP rotation and sticky sessions

### Endpoints and Protocols

Service is accessed using following entry data:

* **Host:** proxy.goproxies.com - All countries.&#x20;

{% hint style="info" %}
Although we have an automatic routing, you may manually target preferred regions to reduce latency:&#x20;

* proxy-asia.goproxies.com - for Asia and Oceania

* proxy-europe.goproxies.com - for Europe and Africa

* proxy-america.goproxies.com - for both Americas
  {% endhint %}

* **Port:** 1080

* **Authorisation:** Basic

* **Username/Password:** *\[provided separately].*&#x20;

There are two types of credentials:

1. **Dashboard user** - used to access the [GoProxies dashboard](https://dashboard.goproxies.com/).
2. **Proxy user** - used to access our proxy pool. Please ensure you use the proxy user credentials when sending requests to our proxy network.

Example test:

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --proxytunnel --proxy "https://customer-USERNAME:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const proxyAuth = encodeURIComponent('customer-USERNAME') + ':' + encodeURIComponent('PASSWORD');
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`; // use http:// here for CONNECT proxy auth
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

username = "customer-USERNAME"
password = "PASSWORD"

proxy = f"https://{username}:{password}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)

print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"net/http"
	"net/url"
	"time"
	"io"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		// Optional: tune TLSHandshakeTimeout, IdleConnTimeout, etc.
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}

```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort), new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {
      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby Net::HTTP" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME:PASSWORD');
// Use tunnel for HTTPS so CONNECT is used
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

#### Control Your Connection <a href="#control-your-connection" id="control-your-connection"></a>

* You can refine your proxy request by including parameters that manage IP selection.&#x20;
* Continue reading our step-by-step guide for more information on additional proxy parameters, along with detailed examples.


# Proxy parameters

This section describes IP targeting and controlling via parameters in Username.

Country, City, State mapping

We currently use ip2location.com and ipinfo.io databases to assign exit values of `country`, `city` and `state` to our nodes.

Other public databases might show different locations due to database differences. If location mismatches cannot occur, please first ensure the IP assigned by the proxy matches the target website's database location.

If you have any additional questions, please contact your account manager or our support team at <support@goproxies.com> .


# Country

To target a specific country's IP, add the `country` header to the username. The value should be a case-insensitive 2-letter country code in **ISO 3166-1 alpha-2** format, such as `DE` for Germany, `GB` for the United Kingdom, and `ES` for Spain. Example below with more details.\
\
Examples of a few countries that you can target in the `country` parameter:

| Country        | Country parameter |
| -------------- | ----------------- |
| United States  | `country-us`      |
| United Kingdom | `country-gb`      |
| Japan          | `country-jp`      |

The full list for country abbreviations may be found here: [Full Country List](https://docs.goproxies.com/proxies/faq/list-of-all-countries-with-their-2-digit-codes-iso-3166-1)

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-country-us:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-country-us'; // or -country-gb, -country-jp
const password = 'PASSWORD';

// percent-encode username/password if they contain special chars
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
  console.log(res.status, res.data);
})();

```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-country-gb"  # country-gb example
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	// country example: -country-jp
	proxyURL, _ := url.Parse("http://customer-USERNAME-country-jp:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyCountry {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-country-gb"; // example
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby — Net::HTTP" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-country-jp'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-country-us:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true); // use CONNECT for HTTPS

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# State

To receive proxy IP address from a specific state, you would need to use the state header together with the 2-letter **ISO 3166-1 alpha-2** country code. For example `state-us_illinois` , `state-us_ohio` , `state-us_california .`

Below is a few examples with the `state` targeting in the username.

| State    | State parameter     |
| -------- | ------------------- |
| Alabama  | `state-us_alabama`  |
| Colorado | `state-us_colorado` |
| Florida  | `state-us_florida`  |

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-state-us_idaho:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-state-us_florida'; // example
const password = 'PASSWORD';
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-state-us_colorado"
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-state-us_alabama:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyStateExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-state-us_florida";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-state-us_alabama'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-state-us_colorado:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

> Note: State parameter will have priority against Country, so if used together those headers will be ignored.


# City

You can add a city header parameter together with the 2-letter **ISO 3166-1 alpha-2** country code to target a specific city. For example, using `customer-USERNAME-city-us_chicago` will request a proxy specifically from Chicago, United States.

Examples of a few cities that you can target in the `city` parameter:

| City        | City parameter        |
| ----------- | --------------------- |
| Los Angeles | `city-us_los_angeles` |
| London      | `city-gb_london`      |
| Munich      | `city-de_munich`      |

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-city-us_chicago:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-city-us_chicago'; // example
const password = 'PASSWORD';
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();

```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-city-us_chicago"
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-city-us_chicago:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-city-us_newyork'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyCityExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-city-us_losangeles";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-city-us_chicago:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

> Note: City header will have priority against State and Country, so if used together those headers will be ignored.


# Session Stickiness

### Establishing a session

The `sessionid` proxy header maintains the same IP address for a session up to 10 minutes, as long as the IP remains in the pool. If not, a new IP is assigned. To reuse an IP, use the same `sessionid` header with a unique identifier of 4 to 10 digits, e.g., `sessionid-42831931` .&#x20;

For session duration adjustments, contact us at <support@goproxies.com>.

### Credentials list of examples for different sessions

Examples below contain a list of credentials that establish a new unique session.

`customer-USERNAME-sessionid-7129391:PASSWORD`\
`customer-USERNAME-sessionid-8128311:PASSWORD`\
`customer-USERNAME-sessionid-1812819:PASSWORD`\
`customer-USERNAME-sessionid-289301:PASSWORD`\
`customer-USERNAME-sessionid-3916211:PASSWORD`<br>

### Understanding sessionid header

When using a session ID, such as `customer-USERNAME-sessionid-7129391:PASSWORD`, the proxy assigns you an IP address (e.g., 1.1.1.1), valid for 10 minutes. Any requests using the same `sessionid` will return the same IP. If there's no activity with the session ID for 10 minutes, you may be assigned a new IP (e.g., 1.1.1.2), or if the old IP is unavailable, it will be replaced as well.

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-sessionid-7182391:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-sessionid-7182391';
const password = 'PASSWORD';
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-sessionid-7182391"
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-sessionid-7182391:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxySessionExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-sessionid-7182391";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-sessionid-7182391'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-sessionid-7182391:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# ASN targeting

ASN targeting is not compatible with any random continent, therefore the examples will vary from other targeting methods. This is because ASN targeting only uses region-based endpoints.

use one of these region endpoints depending on ASN:

* America: proxy-america.goproxies.com:1080
* Europe: proxy-europe.goproxies.com:1080
* Asia: proxy-asia.goproxies.com:1080

Format for username: customer-USERNAME-asn-XXXX (replace XXXX with the ASN).

Below are short snippet examples. Please see their comments too where applicable:

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

```bash
# America
curl --proxytunnel --proxy "https://customer-USERNAME-asn-12345:PASSWORD@proxy-america.goproxies.com:1080" https://ip.goproxies.com

# Europe
curl --proxytunnel --proxy "https://customer-USERNAME-asn-54321:PASSWORD@proxy-europe.goproxies.com:1080" https://ip.goproxies.com

# Asia
curl --proxytunnel --proxy "https://customer-USERNAME-asn-99999:PASSWORD@proxy-asia.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-asn-12345';
const password = 'PASSWORD';
const proxyHost = 'proxy-america.goproxies.com:1080'; // or proxy-europe..., proxy-asia...
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@${proxyHost}`;
const agent = new HttpsProxyAgent(proxyUrl);

await axios.get('https://ip.goproxies.com', { httpsAgent: agent });
```

{% endtab %}

{% tab title="Python" %}

```python
from urllib.parse import quote
import requests

username = "customer-USERNAME-asn-12345"
password = "PASSWORD"
proxy_host = "proxy-europe.goproxies.com:1080"  # choose region
proxy = f"http://{quote(username)}:{quote(password)}@{proxy_host}"

proxies = {"http": proxy, "https": proxy}
print(requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10).text)
```

{% endtab %}

{% tab title="Go" %}

```go
proxyURL, _ := url.Parse("http://customer-USERNAME-asn-99999:PASSWORD@proxy-asia.goproxies.com:1080")
transport := &http.Transport{Proxy: http.ProxyURL(proxyURL)}
client := &http.Client{Transport: transport}
resp, _ := client.Get("https://ip.goproxies.com")
defer resp.Body.Close()
io.Copy(os.Stdout, resp.Body)
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-asn-54321'
password = 'PASSWORD'
proxy_addr = 'proxy-asia.goproxies.com'
proxy_port = 1080

uri = URI('https://ip.goproxies.com')
Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  puts http.get(uri).body
end
```

{% endtab %}

{% tab title="Java" %}

```java
// assume Apache HttpClient on the classpath
String proxyHost = "proxy-america.goproxies.com";
int proxyPort = 1080;
String user = "customer-USERNAME-asn-12345";
String pass = "PASSWORD";

// (CredentialsProvider + HttpHost + RequestConfig same as previous examples)
```

{% endtab %}

{% tab title="PHP" %}

```php
$ch = curl_init('https://ip.goproxies.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy-europe.goproxies.com:1080'); // region
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-asn-54321:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
echo curl_exec($ch);
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# ISP Residential Proxies

ISP Residential Proxies Quick Start

### Introduction to ISP Residential Proxies

Explore the comprehensive details of our ISP Residential Proxies in this documentation. Begin your journey with:

* **Easy Implementation**: Set up quickly with minimal effort.
* **Session Stickiness**: Retain the same IP for an unlimited session duration.
* **Seamless Integration**: Easily integrate our proxies into your system.

#### Key Features

ISP Residential Proxies provide robust solutions for data collection. With unlimited session durations and bandwidth, these proxies offer reliable and efficient connections suitable for high-traffic tasks. Our ISP Proxies ensure high-quality and stable connections.


# ISP Residential Proxies

ISP Residential Proxies Quick Start

Service is accessed using following entry data:

* **Host:** proxy.goproxies.com - All countries.&#x20;

{% hint style="info" %}
Although we have an automatic routing, you may manually target preferred regions to reduce latency:&#x20;

* proxy-asia.goproxies.com - for Asia and Oceania

* proxy-europe.goproxies.com - for Europe and Africa

* proxy-america.goproxies.com - for both Americas
  {% endhint %}

* **Port:** 1080

* **Authorisation:** Basic

* **Username/Password:** *\[provided separately].*&#x20;

There are two types of credentials:

1. **Dashboard user** - used to access the [GoProxies dashboard](https://dashboard.goproxies.com/).
2. **Proxy user** - used to access our proxy pool. Please ensure you use the proxy user credentials when sending requests to our proxy network.

Below are a few basic request examples in various programming languages. You can test it via any application that has HTTP(s) proxy feature or simply a terminal command:

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" expandable="true" %}

```bash
curl --proxytunnel --proxy "https://customer-USERNAME:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const proxyAuth = encodeURIComponent('customer-USERNAME') + ':' + encodeURIComponent('PASSWORD');
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`; // use http:// here for CONNECT proxy auth
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

username = "customer-USERNAME"
password = "PASSWORD"

proxy = f"https://{username}:{password}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)

print(resp.status_code)
print(resp.text)

```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"net/http"
	"net/url"
	"time"
	"io"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		// Optional: tune TLSHandshakeTimeout, IdleConnTimeout, etc.
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}

```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort), new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {
      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby Net::HTTP" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME:PASSWORD');
// Use tunnel for HTTPS so CONNECT is used
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

#### Control Your Connection <a href="#control-your-connection" id="control-your-connection"></a>

* You can refine your proxy request by including parameters that manage IP selection.&#x20;
* Continue reading our step-by-step guide for more information on additional proxy parameters, along with detailed examples.

{% hint style="info" %}
If you cannot find something or need help, contact us at <support@goproxies.com> or start an Intercom chat.
{% endhint %}


# Proxy parameters

This section describes IP targeting and controlling via parameters in Username.

GoProxies ISP Residential Proxies provide access to over 160 different locations and support country, city, and state targeting.

### Country, City, State mapping

We currently use ip2location.com and ipinfo.io databases to assign exit values of `country`, `city` and `state` to our nodes.

Other public databases might show different locations due to database differences. If location mismatches cannot occur, please first ensure the IP assigned by the proxy matches the target website's database location.

If you have any additional questions, please contact your account manager or our support team at <support@goproxies.com> .


# Session Stickiness

### Establishing a session

The `sessionid` proxy header maintains the same IP address for unlimited time duration, as long as the IP remains in the pool. If the IP is no longer available or was removed due to quality problems, a new IP is assigned. To reuse an IP, use the same `sessionid` header with a unique identifier of 4 to 12 digits, e.g., `sessionid-42831931` .&#x20;

For session duration adjustments in case it is needed, contact us at <support@goproxies.com>.

### Credentials list of examples for different sessions

Examples below contain a list of credentials that establish a new unique session.

`customer-USERNAME-sessionid-1293812:PASSWORD`\
`customer-USERNAME-sessionid-2837218:PASSWORD`\
`customer-USERNAME-sessionid-3832892:PASSWORD`\
`customer-USERNAME-sessionid-585896:PASSWORD`\
`customer-USERNAME-sessionid-789129:PASSWORD`<br>

### Understanding sessionid header

When using a session ID like `customer-USERNAME-sessionid-912937:PASSWORD`, the proxy assigns an IP address (e.g., 1.1.1.1), which is valid indefinitely. Requests with the same `sessionid` will consistently return the same IP. A rare IP change might occur only if the current IP is no longer available in our pool.

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-sessionid-7182391:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-sessionid-7182391';
const password = 'PASSWORD';
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-sessionid-7182391"
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-sessionid-7182391:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxySessionExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-sessionid-7182391";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-sessionid-7182391'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-sessionid-7182391:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# Country

To target a specific country's IP, add the `country` header to the username. The value should be a case-insensitive 2-letter country code in **ISO 3166-1 alpha-2** format, such as `DE` for Germany, `GB` for the United Kingdom, and `ES` for Spain. Example below with more details.\
\
Examples of a few countries that you can target in the `country` parameter:

| Country        | Country parameter |
| -------------- | ----------------- |
| United States  | `country-us`      |
| United Kingdom | `country-gb`      |
| Japan          | `country-jp`      |

The full list of country abbreviations may be found here: [Full Country List](https://docs.goproxies.com/proxies/faq/list-of-all-countries-with-their-2-digit-codes-iso-3166-1)

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-country-us:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-country-us'; // or -country-gb, -country-jp
const password = 'PASSWORD';

// percent-encode username/password if they contain special chars
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
  console.log(res.status, res.data);
})();

```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-country-gb"  # country-gb example
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	// country example: -country-jp
	proxyURL, _ := url.Parse("http://customer-USERNAME-country-jp:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyCountry {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-country-gb"; // example
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby — Net::HTTP" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-country-jp'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-country-us:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true); // use CONNECT for HTTPS

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# State

To receive proxy IP address from a specific state, you would need to use the state header together with the 2-letter **ISO 3166-1 alpha-2** country code. For example `state-us_illinois` , `state-us_ohio` , `state-us_california .`

Below is a few examples with the `state` targeting in the username.

| State    | State parameter     |
| -------- | ------------------- |
| Alabama  | `state-us_alabama`  |
| Colorado | `state-us_colorado` |
| Florida  | `state-us_florida`  |

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-state-us_idaho:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-state-us_florida'; // example
const password = 'PASSWORD';
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-state-us_colorado"
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-state-us_alabama:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyStateExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-state-us_florida";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-state-us_alabama'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-state-us_colorado:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

> Note: State parameter will have priority against Country, so if used together those headers will be ignored.


# City

You can add a city header parameter together with the 2-letter **ISO 3166-1 alpha-2** country code to target a specific city. For example, using `customer-USERNAME-city-us_chicago` will request a proxy specifically from Chicago, United States.

Examples of a few cities that you can target in the `city` parameter:

| City        | City parameter        |
| ----------- | --------------------- |
| Los Angeles | `city-us_los_angeles` |
| London      | `city-gb_london`      |
| Munich      | `city-de_munich`      |

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-city-us_chicago:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-city-us_chicago'; // example
const password = 'PASSWORD';
const proxyAuth = encodeURIComponent(username) + ':' + encodeURIComponent(password);
const proxyUrl = `http://${proxyAuth}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();

```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from urllib.parse import quote

username = "customer-USERNAME-city-us_chicago"
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-city-us_chicago:PASSWORD@proxy.goproxies.com:1080")
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME-city-us_newyork'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'proxy.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class ProxyCityExample {
  public static void main(String[] args) throws Exception {
    String proxyHost = "proxy.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-city-us_losangeles";
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-city-us_chicago:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

> Note: City header will have priority against State and Country, so if used together those headers will be ignored.


# Shared DataCenter Proxies

Shared DataCenter Proxies Quick Start

Explore the comprehensive details of our Shared DataCenter Proxies in this documentation. Begin your journey with:

* **Easy Implementation**: Set up quickly with minimal effort.
* **Session Stickiness**: Retain the same IP for up to 10 minutes.
* **Seamless Integration**: Easily integrate our proxies into your system.

#### Key Features

ISP Residential Proxies provide robust solutions for data collection. With unlimited session durations and bandwidth, these proxies offer reliable and efficient connections suitable for high-traffic tasks. Our ISP Proxies ensure high-quality and stable connections.


# Shared DataCenter Proxies

Shared DataCenter Proxies Quick Start

Service is accessed using following entry data:

* **Host:** hosting.goproxies.com - All countries.&#x20;
* **Port:** 1080
* **Authorisation:** Basic
* **Username/Password:** *\[provided separately]*

There are two types of credentials:

1. **Dashboard user** - used to access the [GoProxies dashboard](https://dashboard.goproxies.com/).
2. **Proxy user** - used to access our proxy pool. Please ensure you use the proxy user credentials when sending requests to our proxy network.

You can test it via any application that has HTTP(s) proxy feature (Chrome, SwitchyOmega, Profixier, Foxy Proxy, Proxy Switcher etc.) or simply a terminal command:

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --proxytunnel --proxy "https://customer-USERNAME:PASSWORD@hosting.goproxies.com:1080" https://ip.goproxies.com
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME';
const password = 'PASSWORD';
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@hosting.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log(res.status, res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

username = "customer-USERNAME"
password = "PASSWORD"

proxy = f"https://{username}:{password}@hosting.goproxies.com:1080"

proxies = {
    "http": proxy,
    "https": proxy,
}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)

print(resp.status_code)
print(resp.text)

```

{% endtab %}

{% tab title="Go" %}

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class SharedDatacenterProxy {
    public static void main(String[] args) throws Exception {
        String proxyHost = "hosting.goproxies.com";
        int proxyPort = 1080;
        String user = "customer-USERNAME";
        String pass = "PASSWORD";

        CredentialsProvider credsProvider = new BasicCredentialsProvider();
        credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
                new UsernamePasswordCredentials(user, pass));

        HttpHost proxy = new HttpHost(proxyHost, proxyPort);
        RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

        try (CloseableHttpClient httpclient = HttpClients.custom()
                .setDefaultCredentialsProvider(credsProvider)
                .build()) {

            HttpGet httpget = new HttpGet("https://ip.goproxies.com");
            httpget.setConfig(config);

            try (CloseableHttpResponse response = httpclient.execute(httpget)) {
                System.out.println(response.getStatusLine());
                System.out.println(new String(response.getEntity().getContent().readAllBytes()));
            }
        }
    }
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'

username = 'customer-USERNAME'
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'hosting.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'hosting.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME:PASSWORD');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

#### Control Your Connection <a href="#control-your-connection" id="control-your-connection"></a>

* You can refine your proxy request by including parameters that manage IP selection.&#x20;
* Continue reading our step-by-step guide for more information on additional proxy parameters, along with detailed examples.


# Proxy parameters

This section describes IP targeting and controlling via parameters in Username.

GoProxies Shared DataCenter Proxies provide access to over 160 different locations and support country, city, and state targeting.

### Country, City, State mapping

We currently use ip2location.com and ipinfo.io databases to assign exit values of `country`, `city` and `state` to our nodes.

Other public databases might show different locations due to database differences. If location mismatches cannot occur, please first ensure the IP assigned by the proxy matches the target website's database location.

If you have any additional questions, please contact your account manager or our support team at <support@goproxies.com> .


# Country

To target a specific country's IP, add the `country` header to the username. The value should be a case-insensitive 2-letter country code in **ISO 3166-1 alpha-2** format, such as `DE` for Germany, `GB` for the United Kingdom, and `ES` for Spain. Example below with more details.\
\
Examples of a few countries that you can target in the `country` parameter:

| Country        | Country parameter |
| -------------- | ----------------- |
| United States  | `country-us`      |
| United Kingdom | `country-gb`      |
| Japan          | `country-jp`      |

The full list of country abbreviations may be found here: [Full Country List](https://docs.goproxies.com/proxies/faq/list-of-all-countries-with-their-2-digit-codes-iso-3166-1)

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-country-us:PASSWORD@hosting.goproxies.com" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// country-example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-country-gb'; // e.g. country-gb
const password = 'PASSWORD';
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@hosting.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
# country_example.py
import requests
from urllib.parse import quote

username = "customer-USERNAME-country-jp"  # e.g. country-jp
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@hosting.goproxies.com:1080"

proxies = {"http": proxy, "https": proxy}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-country-jp:PASSWORD@hosting.goproxies.com:1080") // e.g. country-jp
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class CountrySharedDatacenter {
  public static void main(String[] args) throws Exception {
    String proxyHost = "hosting.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-country-gb"; // e.g. country-gb
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}

```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# country_example.rb
require 'net/http'
require 'uri'

username = 'customer-USERNAME-country-us' # e.g. country-us
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'hosting.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// country_example.php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'hosting.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-country-us:PASSWORD'); // e.g. country-us
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# State

To receive proxy IP address from a specific state, you would need to use the state header together with the 2-letter **ISO 3166-1 alpha-2** country code. For example `state-us_illinois` , `state-us_ohio` , `state-us_california .`

Below is a few examples with the `state` targeting in the username.

| State    | State parameter     |
| -------- | ------------------- |
| Alabama  | `state-us_alabama`  |
| Colorado | `state-us_colorado` |
| Florida  | `state-us_florida`  |

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-state-us_idaho:PASSWORD@hosting.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// state-example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-state-us_florida'; // e.g. state-us_florida
const password = 'PASSWORD';
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@hosting.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
# state_example.py
import requests
from urllib.parse import quote

username = "customer-USERNAME-state-us_colorado"  # e.g. state-us_colorado
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@hosting.goproxies.com:1080"

proxies = {"http": proxy, "https": proxy}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-state-us_florida:PASSWORD@hosting.goproxies.com:1080") // e.g. state-us_florida
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}

```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# state_example.rb
require 'net/http'
require 'uri'

username = 'customer-USERNAME-state-us_alabama' # e.g. state-us_alabama
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'hosting.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class StateSharedDatacenter {
  public static void main(String[] args) throws Exception {
    String proxyHost = "hosting.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-state-us_florida"; // e.g. state-us_florida
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}

```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// state_example.php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'hosting.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-state-us_colorado:PASSWORD'); // e.g. state-us_colorado
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

> Note: State parameter will have priority against Country, so if used together those headers will be ignored.


# City

You can add a city header parameter together with the 2-letter **ISO 3166-1 alpha-2** country code to target a specific city. For example, using `customer-USERNAME-city-us_chicago` will request a proxy specifically from Chicago, United States.

Examples of a few cities that you can target in the `city` parameter:

| City        | City parameter        |
| ----------- | --------------------- |
| Los Angeles | `city-us_los_angeles` |
| London      | `city-gb_london`      |
| Munich      | `city-de_munich`      |

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-city-us_chicago:PASSWORD@hosting.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// city-example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-city-us_los_angeles'; // e.g. city-us_los_angeles
const password = 'PASSWORD';
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@hosting.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
# city_example.py
import requests
from urllib.parse import quote

username = "customer-USERNAME-city-gb_london"  # e.g. city-gb_london
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@hosting.goproxies.com:1080"

proxies = {"http": proxy, "https": proxy}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-city-us_los_angeles:PASSWORD@hosting.goproxies.com:1080") // e.g. city-us_los_angeles
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class CitySharedDatacenter {
  public static void main(String[] args) throws Exception {
    String proxyHost = "hosting.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-city-us_los_angeles"; // e.g. city-us_los_angeles
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}

```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# city_example.rb
require 'net/http'
require 'uri'

username = 'customer-USERNAME-city-de_munich' # e.g. city-de_munich
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'hosting.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// city_example.php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'hosting.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-city-de_munich:PASSWORD'); // e.g. city-de_munich
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

> Note: City header will have priority against State and Country, so if used together those headers will be ignored.


# Session Stickiness

### Establishing a session

To maintain a consistent IP address with the `sessionid` proxy header, the same IP can be used for up to 10 minutes, provided it stays in the available pool. If the IP is no longer available or removed due to quality issues, a new IP is assigned. To reuse an IP, apply the same `sessionid` header alongside a unique identifier comprising 4 to 10 digits, like.&#x20;

For session duration adjustments in case it is needed, contact us at <support@goproxies.com>.

### Credentials list of examples for different sessions

Examples below contain a list of credentials that establish a new unique session.

`customer-USERNAME-sessionid-3821319:PASSWORD`\
`customer-USERNAME-sessionid-192938:PASSWORD`\
`customer-USERNAME-sessionid-489582:PASSWORD`\
`customer-USERNAME-sessionid-283881:PASSWORD`\
`customer-USERNAME-sessionid-891928:PASSWORD`<br>

### Understanding sessionid header

When using a session ID like `customer-USERNAME-sessionid-128338:PASSWORD`, the proxy assigns an IP address (e.g., 1.1.1.1), which is valid for 10 minutes. If there's no activity with the session ID for 10 minutes, you may be assigned a new IP (e.g., 1.1.1.2), or if the old IP is unavailable, it will be replaced as well.

### Request example

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME-sessionid-128338:PASSWORD@hosting.goproxies.com:1080" https://ip.goproxies.com
```

{% endtab %}

{% tab title="JavaScript" %}

```bash
npm install axios https-proxy-agent
```

```javascript
// sessionid-example.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const username = 'customer-USERNAME-sessionid-3821319'; // unique session ID
const password = 'PASSWORD';
const proxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@hosting.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxyUrl);

(async () => {
  try {
    const res = await axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 10000 });
    console.log('status:', res.status);
    console.log('body:', res.data);
  } catch (err) {
    console.error('request error:', err.message);
  }
})();
```

{% endtab %}

{% tab title="Python" %}

```python
# sessionid_example.py
import requests
from urllib.parse import quote

username = "customer-USERNAME-sessionid-489582"  # unique session ID
password = "PASSWORD"
proxy = f"http://{quote(username)}:{quote(password)}@hosting.goproxies.com:1080"

proxies = {"http": proxy, "https": proxy}

resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=10)
print(resp.status_code)
print(resp.text)
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, _ := url.Parse("http://customer-USERNAME-sessionid-3821319:PASSWORD@hosting.goproxies.com:1080") // unique session ID
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
		TLSHandshakeTimeout: 10 * time.Second,
	}
	client := &http.Client{Transport: transport, Timeout: 15 * time.Second}

	resp, err := client.Get("https://ip.goproxies.com")
	if err != nil {
		fmt.Println("request error:", err)
		return
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println("status:", resp.Status)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# sessionid_example.rb
require 'net/http'
require 'uri'

username = 'customer-USERNAME-sessionid-283881' # unique session ID
password = 'PASSWORD'

uri = URI('https://ip.goproxies.com')
proxy_addr = 'hosting.goproxies.com'
proxy_port = 1080

Net::HTTP::Proxy(proxy_addr, proxy_port, username, password).start(uri.host, uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body
end
```

{% endtab %}

{% tab title="Java" %}

```java
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class SessionidSharedDatacenter {
  public static void main(String[] args) throws Exception {
    String proxyHost = "hosting.goproxies.com";
    int proxyPort = 1080;
    String user = "customer-USERNAME-sessionid-891928"; // unique session ID
    String pass = "PASSWORD";

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(user, pass));

    HttpHost proxy = new HttpHost(proxyHost, proxyPort);
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

    try (CloseableHttpClient httpclient = HttpClients.custom()
             .setDefaultCredentialsProvider(credsProvider)
             .build()) {

      HttpGet httpget = new HttpGet("https://ip.goproxies.com");
      httpget.setConfig(config);

      try (CloseableHttpResponse response = httpclient.execute(httpget)) {
        System.out.println(response.getStatusLine());
        System.out.println(new String(response.getEntity().getContent().readAllBytes()));
      }
    }
  }
}

```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// sessionid_example.php
$ch = curl_init('https://ip.goproxies.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'hosting.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'customer-USERNAME-sessionid-192938:PASSWORD'); // unique session ID
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

$response = curl_exec($ch);
if ($response === false) {
    echo 'cURL error: ' . curl_error($ch) . PHP_EOL;
} else {
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}


# Self-Service Dashboard

### Intro

The purpose of this article is to explain how to correctly interpret the usage data that is displayed on the self-service

### Home

The Product you’ve purchased will be displayed as “Active” on the Dashboard page. This is the landing page you first see when you navigate to your self-service.

<figure><img src="/files/QUHiQBh8s8wSElDmIAev" alt=""><figcaption></figcaption></figure>

### Dashboard

The dashboard page displays your traffic usage history. Please note that it takes a couple of hours for your usage data to synchronize with the dashboard.

<figure><img src="/files/TG6kxSOi45l5SPVLdH55" alt=""><figcaption></figcaption></figure>

It is divided into a few key sections, namely:

#### Filtering Tools:

The top of the page allows you to select the date, proxy API users that you connect to the proxy with, and the country that was targeted with:

<figure><img src="/files/IUoHfrBFPoBLn9gClQca" alt=""><figcaption></figcaption></figure>

#### Subusers

This page takes you to the proxy API users page. Check out our [Creating Subusers](https://docs.goproxies.com/proxies/self-service-dashboard/creating-subusers) page for how to create them.<br>

#### Documentation:

This a the link to the same help docs page you're currently navigating.

#### Traffic History:

This is where you see how many requests were made at a selected time period:

<br>

<figure><img src="/files/8xwC67bCnEwBWkwVvXkK" alt=""><figcaption></figcaption></figure>

#### Traffic Usage:

This section allows you to see what is your remaining traffic per your plan. Currently, we do not support upgrading your plan directly from the self-service dashboard while the previous traffic is still available. If you're interested in upgrading your plan or topping up your traffic - please contact our Sales Team at <sales@goproxies.com>.

<figure><img src="/files/JenvJCVkLV1PLmoXcy9i" alt=""><figcaption></figcaption></figure>

#### Successful and Failed Requests:

These sections list all of your requests per domain in the selected time period (“Total traffic” is the amount of requests made to specific domain):

<br>

<figure><img src="/files/rHEV31IypuB9LcENnPFg" alt=""><figcaption></figcaption></figure>

### My Account

This Page lists your current dashboard account details.

<br>

<figure><img src="/files/JNN20vryP1NOaNdLTTii" alt=""><figcaption></figcaption></figure>

If you wish to change your account, you may do so by pressing the “Change” button, which will direct you to the password change page. Press “Confirm” once you’ve entered the new password per the requirements to save the changes:

<figure><img src="/files/sJuI4W3kU1QFmAZhe2f2" alt=""><figcaption></figcaption></figure>

### Billing

The billing section contains your invoices with the product name, plan and price amount. You can download the invoice in pdf by pressing the “Download” button on the right side:

<br>

<figure><img src="/files/gdd2FR66OdqdpAn4acon" alt=""><figcaption></figcaption></figure>

### Contact Us

This section Provides quick access to the support email.

### Help Center

This is a quick link to our support knowledge base. Please try using it to obtain initial answers to any technical questions you may have.


# Intro & Walkthrough

An introductory page to the GoProxies Self-Service Dashboard

### Intro

The purpose of this article is to explain how to correctly interpret the usage data that is displayed on the self-service

### Home

The Product you’ve purchased will be displayed as “Active” on the Dashboard page. This is the landing page you first see when you navigate to your self-service.

<figure><img src="/files/QUHiQBh8s8wSElDmIAev" alt=""><figcaption></figcaption></figure>

### Dashboard

The dashboard page displays your traffic usage history. Please note that it takes a couple of hours for your usage data to synchronize with the dashboard.

<figure><img src="/files/TG6kxSOi45l5SPVLdH55" alt=""><figcaption></figcaption></figure>

It is divided into a few key sections, namely:

#### Filtering Tools:

The top of the page allows you to select the date, proxy API users that you connect to the proxy with, and the country that was targeted with:

<figure><img src="/files/IUoHfrBFPoBLn9gClQca" alt=""><figcaption></figcaption></figure>

#### Subusers

This page takes you to the proxy API users page. Check out our [Creating Subusers](https://docs.goproxies.com/proxies/self-service-dashboard/creating-subusers) page for how to create them.<br>

#### Documentation:

This a the link to the same help docs page you're currently navigating.

#### Traffic History:

This is where you see how many requests were made at a selected time period:

<br>

<figure><img src="/files/8xwC67bCnEwBWkwVvXkK" alt=""><figcaption></figcaption></figure>

#### Traffic Usage:

This section allows you to see what is your remaining traffic per your plan. Currently, we do not support upgrading your plan directly from the self-service dashboard while the previous traffic is still available. If you're interested in upgrading your plan or topping up your traffic - please contact our Sales Team at <sales@goproxies.com>.

<figure><img src="/files/JenvJCVkLV1PLmoXcy9i" alt=""><figcaption></figcaption></figure>

#### Successful and Failed Requests:

These sections list all of your requests per domain in the selected time period (“Total traffic” is the amount of requests made to specific domain):

<br>

<figure><img src="/files/rHEV31IypuB9LcENnPFg" alt=""><figcaption></figcaption></figure>

### My Account

This Page lists your current dashboard account details.

<br>

<figure><img src="/files/JNN20vryP1NOaNdLTTii" alt=""><figcaption></figcaption></figure>

If you wish to change your account, you may do so by pressing the “Change” button, which will direct you to the password change page. Press “Confirm” once you’ve entered the new password per the requirements to save the changes:

<figure><img src="/files/sJuI4W3kU1QFmAZhe2f2" alt=""><figcaption></figcaption></figure>

### Billing

The billing section contains your invoices with the product name, plan and price amount. You can download the invoice in pdf by pressing the “Download” button on the right side:

<br>

<figure><img src="/files/gdd2FR66OdqdpAn4acon" alt=""><figcaption></figcaption></figure>

### Contact Us

This section Provides quick access to the support email.

### Help Center

This is a quick link to our support knowledge base. Please try using it to obtain initial answers to any technical questions you may have.


# Purchase Flow

Article explaining how to purchase GoProxies proxy products

### Intro

The purpose of this article is to explain and guide how to purchase a plan in GoProxies while on the self-service dashboard.

### Walkthrough

When opening the GoProxies dashboard, you will first be met with the Home screen that lists your currently purchased plans, where the one being purchased will be visible as “Active” instead of “Buy Now”:

<figure><img src="/files/hY7KOMXhQs7jE2cGEIiU" alt=""><figcaption></figcaption></figure>

\
Press the “Buy now” button for the plan of your choice and you will be directed to the plan selection page. In this example, we’re going to purchase Rotating Residential Proxies. Press “Buy Now” for the plan of your choice:\ <br>

<figure><img src="/files/uHTQ9Maiue0YYeJf9qaz" alt=""><figcaption></figcaption></figure>

You will now be at the Payment selection screen. Select the available payment methods (currently limited to credit cards). If you have a discount coupon code, enter it into the “Add coupon code” field and press Apply.

Finally, after entering your billing details, check “Agree to Terms and Conditions” and press “Continue” on the bottom:\ <br>

<figure><img src="/files/O4WX6EKJBJr8cGaz2BIA" alt=""><figcaption></figcaption></figure>

After pressing “Continue” you will be directed to the payment screen. Enter your payment details and press “Pay and subscribe” to finish the subscription:

<br>

<figure><img src="/files/R8X15PfNYk1UU4FDywIs" alt=""><figcaption></figcaption></figure>

If your payment is successful, you will be directed to the order confirmed screen.

<figure><img src="/files/zC37iiIJJGQ3WYmCrcNA" alt=""><figcaption></figcaption></figure>

<br>

Alternatively, if the payment fails, you will receive this message and be allowed to start over:

<figure><img src="/files/BqH82NZoQmglPDuK4Xx8" alt=""><figcaption></figcaption></figure>

<br>

Press “Access Proxies” and either proceed to documentation, or return to the dashboard by pressing “Go to Dashboard”:

<figure><img src="/files/BNUoyAhT30mJLeeVlOqb" alt=""><figcaption></figcaption></figure>

### Additional notes:

The invoice for the purchased proxy will be listed and available for download as a .pdf file in the Billing page, which you can access by pressing the “Billing” button in the navigation bar on the left.\ <br>

<figure><img src="/files/D8jflDERt4CQtAO6ji5L" alt=""><figcaption></figcaption></figure>

<br>


# Creating Subusers

Article about creating and managing subusers

### Intro

This article will explain how to create and manage subusers (also called API Proxy Users). These are accounts that you use to connect to the proxy itself.

### Accessing the Subusers Page

Navigate to the "Dashobard" tab on the self-service dashboard:

<figure><img src="/files/I44ABoFPioe7vnCtduwi" alt=""><figcaption></figcaption></figure>

Press the Subusers button to access the subusers list.

<figure><img src="/files/dTrf4n9iZcRfLuWN9NJw" alt=""><figcaption></figcaption></figure>

This will open the My Subusers page.  You can add up to 10 subusers per account.&#x20;

<figure><img src="/files/4XKrYtJ9i2QpVP8IrOX2" alt=""><figcaption></figcaption></figure>

Enter the username of your choice and press Create:<br>

<figure><img src="/files/4LATcIgyNYd92tCak9kf" alt=""><figcaption></figcaption></figure>

\
Make sure to copy the password that is generated in this window as it will not be displayed anywhere else! Afterward, either press “Add New Subuser” below  to repeat the process and add a new one, or press “Back to My Subusers” to return to the subuser list:

<br>

<figure><img src="/files/AhjvtIjWJgSlKglb9K3k" alt=""><figcaption></figcaption></figure>

Once you return to the list of subusers, you will now see your created API proxy user(-s). You may create up to 10 of these per account. Likewise, you may reset their password by pressing “Reset Password”, which will generate a new pop up with the newly reset password (which you will need to copy again before closing!):

<br>

<figure><img src="/files/HwxtAfzI7ZtUMe9MgRZo" alt=""><figcaption></figcaption></figure>

Now you're ready to use the proxy users!


# Endpoint Generator

Article describing how to access and use the endpoint generator

### Intro

This article will explain how to use the endpoint generator - a tool which you can find on our self-service dashboard.

### Walkthrough

1. Navigate to the Dashboard page and select “Endpoint Generator” on the top of the page.&#x20;
2. In the selection fields below, select either HTTP or HTTPS as a protocol.
3. &#x20;Select the subuser (also called the proxy user) from the drop-down,&#x20;
4. &#x20;Enter the subuser’s password (which would’ve been provided for you in a separate window when you first generated the subuser. If you’ve lost it, please navigate to the subusers page on the top right and reset your password there for that subuser, but please be sure to copy the password once it is shown in the new window again).
5. Select the country you’d like to target (optional)
6. &#x20;Select the state from the state drop-down, which dynamically populates for the selected country. (optional)
7. Select the city from the city drop-down, which also dynamically populates for the selected state. (optional)
8. If you want to use session stickiness, check the “sticky” checkbox on the bottom right. (optional)
9. &#x20;Under “number of endpoints”, select how many separate codes you’d like to generate. This is only relevant if you’ve checked “sticky”, as each line will have its own unique session ID needed for stickiness.

\
And you’re done! The code in the “Generated Endpoints” window will be auto generated based on the info you’ve entered earlier. Likewise, the “Integration Snippets” window gives you the code in various programming languages:

<figure><img src="/files/TjS1K5YbdAriBqzrUZvO" alt=""><figcaption></figcaption></figure>


# Integrations

{% content-ref url="/pages/LbpJrXaw9HzIwlbNAwrT" %}
[How to rotate proxies in Python?](/proxies/integrations/how-to-rotate-proxies-in-python)
{% endcontent-ref %}

{% content-ref url="/pages/JvGYKQUCuLy5KLlxM817" %}
[SmartProxy](/proxies/integrations/browsers/smartproxy)
{% endcontent-ref %}

{% content-ref url="/pages/qzDCNVUFoE1vn6ueQX1E" %}
[ZeroOmega (Proxy SwitchyOmega 3)](/proxies/integrations/browsers/zeroomega-proxy-switchyomega-3)
{% endcontent-ref %}

{% content-ref url="/pages/U7K7P8GrvPMryO7Ce3ca" %}
[Selenium](/proxies/integrations/browsers/selenium)
{% endcontent-ref %}

{% content-ref url="/spaces/WiMBYtzwiSH61Xlgx0W1/pages/OTagRcy3f70e1WKnAcMk" %}
[IP Burger](/proxies/integrations/browsers/ip-burger)
{% endcontent-ref %}

{% content-ref url="/spaces/WiMBYtzwiSH61Xlgx0W1/pages/MRHhcy6B0cEOt8E3wQ2t" %}
[Puppeteer](/proxies/integrations/browsers/puppeteer)
{% endcontent-ref %}

{% content-ref url="/spaces/WiMBYtzwiSH61Xlgx0W1/pages/zdKvuD2l2qDSyUt4TUuf" %}
[FoxyProxy](/proxies/integrations/browsers/foxyproxy)
{% endcontent-ref %}


# AI Integrations

Connect GoProxies with AI frameworks and automation tools to power your workflows. Whether you're building scraping pipelines, orchestrating agents, or feeding data into LLM-driven applications, this section covers how to get GoProxies working within those setups.

#### Available Integrations

* **n8n** — A workflow automation platform that blends no-code simplicity with the flexibility of code, with native AI capabilities and a wide range of integrations. Read here.
* **Flowise** — A no-code platform for building LLM-powered workflows and AI agents. Read here.
* **LangChain** — A framework for building LLM-powered applications and agents. Read here.


# Flowise

Flowise is a no-code platform for building LLM-powered workflows and AI agents. This guide shows how to route Flowise's backend requests through GoProxies using environment variables.

#### Requirements

Before getting started, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.
* Flowise is installed and running. If not, you can get started [here](https://docs.flowiseai.com/getting-started).

#### Proxy Setup

Flowise routes all backend requests through a proxy via environment variables. Set the following when starting Flowise:

```
GLOBAL_AGENT_HTTP_PROXY=http://customer-your_username_here:your_password@proxy.goproxies.com:1080
GLOBAL_AGENT_HTTPS_PROXY=http://customer-your_username_here:your_password@proxy.goproxies.com:1080
```

{% hint style="info" %}
To target a specific country, append `-country-country_abbreviation` after your username, e.g. `customer-exampleuser-country-us`, as covered in our [proxy parameters article](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters).
{% endhint %}

If you're running Flowise via **npx**, pass the variables inline:

```
GLOBAL_AGENT_HTTP_PROXY=http://customer-your_username_here:your_password@proxy.goproxies.com:1080 npx flowise start
```

If you're running Flowise via **Docker**, add them to your `.env` file inside the docker folder:

```
GLOBAL_AGENT_HTTP_PROXY=http://customer-your_username_here:your_password@proxy.goproxies.com:1080
GLOBAL_AGENT_HTTPS_PROXY=http://customer-your_username_here:your_password@proxy.goproxies.com:1080
```

#### Verify the Connection

In Flowise, add an **HTTP Request** node to a workflow and set the URL to `https://ip.goproxies.com`. Run the flow — if the response returns an IP that reflects your proxy location, you're all set.


# LangChain

LangChain is a popular framework for building LLM-powered applications and agents. This guide shows how to route your LangChain requests through GoProxies, which is particularly useful for web scraping tools, search integrations, and agent workflows.

#### Requirements

Before getting started, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.
* Python is installed on your machine.

#### Proxy Setup

LangChain picks up proxy settings from environment variables. Set these before running your application:

```
HTTP_PROXY=http://customer-your_username_here:your_password@proxy.goproxies.com:1080
HTTPS_PROXY=http://customer-your_username_here:your_password@proxy.goproxies.com:1080
```

Or set them directly in your Python script before importing LangChain:

python

```python
import os
os.environ["HTTP_PROXY"] = "http://customer-your_username_here:your_password@proxy.goproxies.com:1080"
os.environ["HTTPS_PROXY"] = "http://customer-your_username_here:your_password@proxy.goproxies.com:1080"
```

{% hint style="info" %}
To target a specific country, append `-country-country_abbreviation` after your username, e.g. `customer-exampleuser-country-us`, as covered in our [proxy parameters article](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters).
{% endhint %}

#### Verify the Connection

Add a quick request to `https://ip.goproxies.com` in your script using LangChain's `RequestsGetTool` or a simple `requests` call — if the returned IP reflects your proxy location, you're all set.


# n8n

n8n is a workflow automation platform that lets you connect apps, APIs, and AI tools into automated pipelines — with or without code. This guide shows how to route your n8n HTTP requests through GoProxies.

#### Requirements

Before getting started, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.

#### Proxy Setup

1. Create an account and log into [n8n](https://n8n.io/).
2. Open an existing workflow or create a new one.
3. Add an **HTTP Request** node.
4. Configure the node with the URL you want to send requests to.
5. Scroll down to **Options** and find the **Proxy** field.
6. Enter your proxy in the following format:

```
http://customer-your_username_here:your_password@proxy.goproxies.com:1080
```

{% hint style="info" %}
To target a specific country, append `-country-country_abbreviation` after your username, e.g. `customer-exampleuser-country-us:your_password@proxy.goproxies.com:1080`, as covered in our [proxy parameters article](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters).
{% endhint %}

7. Click **Execute node** to run a test request.

#### Verify the Connection

Set the HTTP Request node URL to `https://ip.goproxies.com` and execute it. If the response returns an IP that reflects your proxy location, you're all set.


# Operating Systems


# Android

How to set up GoProxies with your Android.

#### Requirements

Before getting started, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.

#### Wi-Fi Setup

{% hint style="info" %}
&#x20;Steps may vary slightly depending on your Android version and device model.
{% endhint %}

{% hint style="info" %}
This method only works with browsers. If you need apps to route through the proxy, use the Mobile Data Setup below.
{% endhint %}

1. Open **Settings** and go to **Connections** or **Network & Internet**. ![](/files/HsXTribBIec1u6FblLEm)![](/files/C9fjvHDWASETuzHocsfu)
2. Tap **Wi-Fi**, select your connected network, then tap the gear icon.![](/files/L85ZvqCHKCDCnYuqL5nT)
3. Open **Advanced Settings** — this may also appear as **Modify network** or **View more** depending on your device.
4. Under **Proxy**, select **Manual**.\
   ![](/files/6nY2BUsSPZ3oXBJn1OGL)
5. Fill in the following:
   * **Proxy hostname:** `proxy.goproxies.com`
   * **Proxy port:** `1080`
6. Tap **Save**.

#### Verify the Connection

Open a browser and go to [ip.goproxies.com](https://ip.goproxies.com). If prompted for credentials, enter your subuser username and password and tap **Sign In**. If the IP shown reflects your proxy location, you're all set.\
![](/files/oHJzuj540D34zVH1G0ec)![](/files/lZme6ihJRJDLHq8AaJ5Q)

***

#### Mobile Data Setup

{% hint style="info" %}
Steps may varyslightly depending on your Android version and device model.
{% endhint %}

1. Go to **Settings → Connections** (or **Network & Internet**) **→ Mobile Networks**.
2. Tap **Access Point Names (APN)** and select your active APN.
3. Fill in the following:
   * **Proxy:** `proxy.goproxies.com`
   * **Port:** `1080`
4. Enter your credentials:
   * **Username:** `customer-your_username_here`
   * **Password:** your proxy password
5. Tap the three vertical dots in the top-right corner and select **Save**.
6. Toggle **Mobile Data** off and back on to apply the changes.

#### Verify the Connection

Open a browser and go to [ip.goproxies.com](https://ip.goproxies.com). Enter your credentials if prompted, then confirm the IP reflects your proxy location.


# iOS

This guide covers how to set up a proxy on Wi-Fi for iPhone and iPad.

### Requirements

Before getting started, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.

### Wi-Fi Setup

{% hint style="info" %}
This method only works with browsers. Apps won't route through the proxy this way. iOS also only supports `HTTP` proxies on Wi-Fi.
{% endhint %}

1. Make sure you're connected to a Wi-Fi network and open **Settings**.
2. Tap **Wi-Fi** and select your connected network.
3. Scroll down to the **HTTP Proxy** section and tap **Configure Proxy**.
4. Switch to **Manual**.
5. Fill in the following:
   * **Server:** `proxy.goproxies.com`
   * **Port:** `1080`
6. Enable **Authentication** and enter your credentials:
   * **Username:** `customer-your_username_here`
   * **Password:** your proxy password

{% hint style="info" %}
&#x20;If you're using IP whitelisting, you can skip the authentication step entirely.
{% endhint %}

7. Tap **Save**.
8. If a pop-up appears asking for credentials, tap **Settings** and re-enter your proxy authentication details.

#### Verify the Connection

Open a browser and go to [ip.goproxies.com](https://ip.goproxies.com). If the IP shown reflects your proxy location, you're all set.

#### Disable the Proxy

To turn the proxy off, go back to **Configure Proxy**, select **Off**, and tap **Save**.


# Linux

Linux comes in many distributions, so this guide focuses on a system-wide proxy setup that applies broadly across them.

### Requirements

Before getting started, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.

### Proxy Setup

1. Open **Terminal**.
2. Sign in as a root user.
3. Open the `/etc/environment` file with `nano`.
4. In the text editor, configure your proxy as follows:

```
http_proxy="http://proxy.goproxies.com:1080"
https_proxy="http://proxy.goproxies.com:1080"
no_proxy="localhost"
```

{% hint style="info" %}
If you need authentication, use the format `http://username:password@proxy.goproxies.com:1080`. You can also target a specific country by appending `-country-country_abbreviation` to your username, e.g. `customer-exampleuser-country-us`, as covered in our [proxy parameters article](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters).
{% endhint %}

5. Press `CTRL + X`, then `Y` to save, and `ENTER` to confirm the file location.
6. Lock the file with `chattr +i /etc/environment` and reboot your machine. Skipping this step may cause your proxy settings to reset.

{% hint style="info" %}
To unlock the file later, use `chattr -i /etc/environment`.
{% endhint %}

### Verify the Connection

Open a browser and go to [ip.goproxies.com](https://ip.goproxies.com). If the IP shown reflects your proxy location, you're all set.


# macOS

Set up proxies directly on macOS for Apple laptops and desktops.

### Requirements

Before getting started, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.

### Proxy Setup

1. Click the **Apple** icon in the top-left corner and select **System Settings**.
2. Navigate to **Network** and select **Wi-Fi**.
3. Choose your Wi-Fi connection and click **Details**.
4. Select **Proxies** from the left panel.
5. Choose your protocol — `HTTP`, `HTTPS`, or `SOCKS`.
6. Fill in the following:
   * **Server:** `proxy.goproxies.com`
   * **Port:** `1080`
7. Toggle on **Proxy server requires password** and enter your credentials:
   * **Username:** `customer-your_username_here` — to target a specific country, append `-country-country_abbreviation` after your username, e.g. `customer-exampleuser-country-us`, as covered in our [proxy parameters article](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters)
   * **Password:** your proxy password
8. Click **OK**.

### Verify the Connection

Open a browser and go to [ip.goproxies.com](https://ip.goproxies.com). If prompted for credentials, enter your subuser username and password. If the IP shown reflects your proxy location, you're all set.


# Windows

Set up proxies directly on the Windows operating system.

### Requirements

Before getting started, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.

### Proxy Setup

{% hint style="info" %}
This guide covers both Windows 10 and Windows 11.
{% endhint %}

1. Press `Windows + I` to open **Settings**.
2. Navigate to **Network & Internet**.
3. Click **Set up** under the **Manual proxy setup** section.
4. Enable **Use a proxy server**.
5. Fill in the following:
   * **Proxy IP address:** `proxy.goproxies.com`
   * **Port:** `1080`
6. Check **Don't use the proxy server for local (intranet) addresses**.
7. Click **Save**.

#### Verify the Connection

Open a browser and go to [ip.goproxies.com](https://ip.goproxies.com). If prompted for credentials, enter your subuser username and password. If the IP shown reflects your proxy location, you're all set.

#### Common Issues

{% hint style="info" %}
**SOCKS5:** Windows 10 and 11 don't support `SOCKS5` natively. If you need SOCKS5, use a browser or third-party tool that supports it, such as [Mozilla Firefox](https://www.mozilla.org/firefox/) or the [FoxyProxy extension](https://getfoxyproxy.org/).
{% endhint %}


# Browsers


# Chrome

Chrome Browser's GoProxies Proxy Setup Guide

### Intro

This page will explain how to connect your proxies directly on your Chrome Web browser settings without the need of any addons.

### Requirements

To have GoProxies work in your browser, ensure that:<br>

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Setup

1. Open Google Chrome.
2. Click the three vertical dots ![](/files/EOhAR4Fe4x8WUVBz51ql) in the top right of the browser.
3. Select Settings.
4. Go to the Systems tab on the left.
5. Click "Open your computer's proxy settings"

<figure><img src="/files/Us64zVhEGLUXrJuYIOkD" alt=""><figcaption></figcaption></figure>

You will be redirected to the system configuration screen. This step will vary depending on your operating system (Windows or MacOS)

### macOS Setup

1. Select HTTP, HTTPS, or SOCS protocol
2. Fill in the following fiellds:

* Server: proxy.goproxies.com, or replace 'proxy' with one of the regions: proxy-america, proxy-europe, proxy-asia for Americas, Europe and Africa, Asia and Oceania, respectively.
* Port: 1080

3. Set up the Authentication

* Toggle on Proxy server requires password
* Username: Proxy username
* Password: Proxy password

4. Click OK.

<figure><img src="/files/xY7hYr9Vv4f3E9h5rKMw" alt=""><figcaption></figcaption></figure>

### Windows Setup

{% hint style="info" %}
SOCKS5 Support\
\
Windows 10 and Windows 11 don't support SOCKS5 natively. You may alternatively use a web browser or a third-party tool that includes SOCKS5 support, e.g Mozilla Firefox or FoxyProxy Extension
{% endhint %}

1. Enable Use a proxy server
2. Fill in the following fields:

* Proxy IP Address - proxy.goproxies.com, or replace 'proxy' with one of the regions: proxy-america, proxy-europe, proxy-asia for Americas, Europe and Africa, Asia and Oceania, respectively.&#x20;
* Port: 1080

3. Check "Don't use the proxy server for local (intranet addresses)
4. Click Save.

### Verify The Connection

* Open the Chrome browser and visit ip.goproxies.com
* You may be prompted to enter credentials. Enter the previously specified proxy username and password.
* If successful, your IP address will reflect the location of the proxy.


# Edge

Edge Browser's Proxy Setup Guide

Intro

This page will explain how to use proxies through the Microsoft Edge browser without the need of any add

### Requirements

* Make sure no other VPNs or proxies are active.
* Our proxy endpoint and port, which is proxy.goproxies.com:1080, or instead of 'proxy', make it proxy-america, proxy-europe or proxy-asia for Americas, Europe and Africa, and Oceania respectively if you're only planning to use those regions, as automatic routing of 'proxy' endpoint will be redundant for you then.
* Your goproxies API User (Also called sub-user) username and password.

### Edge System Settings

{% hint style="info" %}
Navigate to the System and performance / System section using this link in the Edge browser's URL field (also called the address field).<br>

> ```undefined
> edge://settings/system/manageSystem#ProxySettings&1
> ```

{% endhint %}

1. Open Microsoft Edge
2. Click the **three horizontal dots** <img src="/files/yDaMbT5iioHVA4zIcWHA" alt="" data-size="line">in the top right.
3. Select **Settings**.
4. Go to the **System and performance** tab.
5. Select **Proxy Settings**.
6. Finally, click **Open proxy settings.**

* You will be redirected to the system configuration screen. This step will vary depending on your operating system - **Windows** or **macOS**

### macOS Setup

1. Select HTTP, HTTPS, or SOCS protocol
2. Fill in the following fiellds:

* Server: proxy.goproxies.com, or replace 'proxy' with one of the regions: proxy-america, proxy-europe, proxy-asia for Americas, Europe and Africa, Asia and Oceania, respectively.
* Port: 1080

3. Set up the Authentication

* Toggle on Proxy server requires password
* Username: Proxy username
* Password: Proxy password

4. Click OK.

<figure><img src="/files/xY7hYr9Vv4f3E9h5rKMw" alt=""><figcaption></figcaption></figure>

### Windows Setup

{% hint style="info" %}
SOCKS5 Support\
\
Windows 10 and Windows 11 don't support SOCKS5 natively. You may alternatively use a web browser or a third-party tool that includes SOCKS5 support, e.g Mozilla Firefox or FoxyProxy Extension
{% endhint %}

1. Enable Use a proxy server
2. Fill in the following fields:

* Proxy IP Address - proxy.goproxies.com, or replace 'proxy' with one of the regions: proxy-america, proxy-europe, proxy-asia for Americas, Europe and Africa, Asia and Oceania, respectively.&#x20;
* Port: 1080

3. Check "Don't use the proxy server for local (intranet addresses)
4. Click Save.

### Verify The Connection

* Open the Edge browser and visit ip.goproxies.com
* You may be prompted to enter credentials. Enter the previously specified proxy username and password.
* If successful, your IP address will reflect the location of the proxy.


# Firefox

Firefox Browser Proxy Setup

Set up GoProxies directly from your Firefox browser.

### Requirements

* Make sure no other VPNs or proxies are active.
* Our proxy endpoint and port, which is proxy.goproxies.com:1080, or instead of 'proxy', make it proxy-america, proxy-europe or proxy-asia for Americas, Europe and Africa, and Oceania respectively if you're only planning to use those regions, as automatic routing of 'proxy' endpoint will be redundant for you then.
* Your goproxies API User (Also called sub-user) username and password.

### Proxy Setup

**Step 1.** Open Firefox.

**Step 2.** Click the **three horizontal bars** in the top right.

**Step 3.** Then, click **Settings**.

\
![](/files/kUwQqRf8GrkIkctsxMIA)

**Step 4.** In the **General** tab, scroll down to the **Network Settings** section and click **Settings...**.

**Step 5.** Select **Manual proxy configuration**.

**Step 6.** Fill in the following fields:

* **HTTP Proxy - proxy.goproxies.com**
* **Port** - 1080
* Check **Also use this proxy for HTTPS**.

{% hint style="info" %}
Alternatively, you can set up a **`SOCKS5`** proxy in the **SOCKS Host** field.

* If so, also check **SOCKS v5**.
  {% endhint %}

**Step 8.** You'll be prompted to enter credentials

* **Username**: Proxy username, in this case appended with "customer-", so customer-yourusername
* **Password**: Proxy password.

> #### Verify the Connection
>
> * Open the Firefox browser and visit [ip.goproxies.com](https://ip.goproxies.com/). If successful, your IP address will reflect the location of the proxy.
>
> #### <br>


# Safari

Safari Browser Proxy Setup GUide

Use GoProxies through the **Safari** browser by setting them up directly on your device.<br>

### Requirements

* Make sure no other VPNs or proxies are active.
* Our proxy endpoint and port, which is proxy.goproxies.com:1080, or instead of 'proxy', make it proxy-america, proxy-europe or proxy-asia for Americas, Europe and Africa, and Oceania respectively if you're only planning to use those regions, as automatic routing of 'proxy' endpoint will be redundant for you then.
* Your goproxies API User (Also called sub-user) username and password.

### Safari Advanced Settings

**Step 1.** Open Safari.

**Step 2.** Click **Safari** in the top left.

**Step 3.** Then, click **Settings**.

**Step 4.** In the **Advanced** tab, next to **Proxies:**, click **Change Settings...**.

**Step 5.** Select the protocol: **`HTTP`**, **`HTTPS`**, or **`SOCKS`**.

**Step 6.** Fill in the following fields:

* **Server** field - proxy.goproxies.com, or the continent ones mentioned in Requirements earlier.
* **Port** - 1080

**Step 7.** Set up the authentication

* Toggle on **Proxy server requires password**.
* **Username**: Proxy username.
* **Password**: Proxy password.

**Step 8.** Click **OK**.

#### Verify the Connection

* Open the Safari browser and visit [ip.goproxies.com](https://ip.goproxies.com).
* You may be asked to enter credentials if you're not on a whitelisted IP. Enter the proxy username and password you previously specified.
* If successful, your IP address will reflect the location of the proxy

### <br>


# Opera

Opera Proxy Setup Guide

### Requirements

* Make sure no other VPNs or proxies are active.
* Our proxy endpoint and port, which is proxy.goproxies.com:1080, or instead of 'proxy', make it proxy-america, proxy-europe or proxy-asia for Americas, Europe and Africa, and Oceania respectively if you're only planning to use those regions, as automatic routing of 'proxy' endpoint will be redundant for you then.
* Your goproxies API User (Also called sub-user) username and password.

### Proxy Setup

1. Open Opera on your computer.
2. Click on **Settings**☰ icon, scroll down, and click **Go to full browser settings**.
3. Scroll down, and click on the **Advanced** button.
4. Scroll down to **System**, and click on **Open your computer's proxy settings**.
5. **Edit your proxy settings.** This step will vary depending on your operating system: **Windows** or **macOS**.

### **Windows**

* Turn on the **Use a proxy server** slider.
* Check **Don't use the proxy server for your local (intranet) network** under **Proxy server**.
* Add endpoint in the **Address section** - proxy.goproxies.com
* Add port in the **Port section -** 1080
* Click **Save**.
* When accessing a website, enter your proxy user credentials.
* Visit [ip.goproxies.com](https://ip.goproxies.com) to check the current IP address and location.

### macOS

* Select the proxy you want to edit on the left side of the page (HTTP/S).
* Add endpoint in the **Address** field - proxy.goproxies.com
* (Optional) Insert proxy **subuser username and password** in the **Username** and **Password** fields.
* Click **OK**.
* Select **Apply**.
* Visit [ip.goproxies.com ](https://ip.goproxies.com)to check the current IP address and location.

\
\ <br>


# Selenium

How to connect to GoProxies using Selenium

Selenium is a tool that helps automate web browser interactions for website testing and more.

To integrate Selenium with GoProxies, you would need to follow the steps below:

* Firstly, you would need to install [**Selenium Wire**](https://github.com/wkeeling/selenium-wire) to extend Selenium's Python bindings, since using the default Selenium module for implementing proxies that require authentication makes it complicated.
* Another package which is recommended for this integration is webdriver-manager. It's a package that simplifies the management of binary drivers for different browsers. In this case, there's no need to manually download a new version of a web driver after each update.

You can install both packages using the following command:

```bash
pip install selenium selenium-wire webdriver-manager
```

{% hint style="info" %}
Note: if using Python 3.13 and you encounter a `blinker._saferef` error, install:

```bash
pip install blinker==1.6.2
```

{% endhint %}

* Specify your account credentials for proxies to work:
  * Firstly, you would need to replace 'your\_username' and 'your\_password' with your credentials.
  * Then you need to specify the endpoint, in this example we're using '`proxy.goproxies.com:1080`'
* The full example of a code should look like this:

```python
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from seleniumwire import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# =========================
# Replace with your details
# =========================
USERNAME = "customer-your_username"
PASSWORD = "your_password"
ENDPOINT = "proxy.goproxies.com:1080"
# =========================


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


def create_driver():
    chrome_options = webdriver.ChromeOptions()

    # Visible browser is recommended for testing
    # Uncomment the line below if you want headless mode
    # chrome_options.add_argument("--headless=new")

    chrome_options.add_argument("--window-size=1920,1080")
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--disable-dev-shm-usage")

    # Optional: reduce page load hanging on heavy JS sites
    chrome_options.page_load_strategy = "eager"

    service = Service(ChromeDriverManager().install())

    driver = webdriver.Chrome(
        service=service,
        options=chrome_options,
        seleniumwire_options=get_proxy_options(USERNAME, PASSWORD, ENDPOINT),
    )

    return driver


def test_proxy():
    driver = create_driver()

    try:
        driver.get("https://ip.goproxies.com/")
        ip = driver.find_element(By.TAG_NAME, "body").text.strip()
        print(f"Your IP is: {ip}")

    finally:
        driver.quit()


if __name__ == "__main__":
    test_proxy()
```

That's it! You've set-up GoProxies via Selenium.

Now run the script by entering the following into your command prompt where the python file is located:

```bash
python your_script_name.py
```

If configured correctly, the script will print the residential IP assigned by GoProxies.

{% hint style="info" %}

* This example uses an HTTP proxy endpoint (:1080)
* For SOCKS5 proxies, use port 10003 and change the scheme to socks5:// .
* Some websites apply advanced bot mitigation. In such cases, using a full browser automation framework (Selenium, Playwright) is recommended over direct HTTP libraries like python's `requests`.
  {% endhint %}


# SmartProxy

How to connect to GoProxies proxy via SmartProxy?

**SmartProxy can be installed -** [**here**](https://chrome.google.com/webstore/detail/smartproxy/jogcnplbkgkfdakgdenhlpcfhjioidoj/related)**.**

Open the SmartProxy extension Settings -> click on "Proxy Servers" and then "Add Server". Give a name to your server, then fill in the rest of the proxy details and click "Save".

{% embed url="<https://www.youtube.com/watch?v=OjGXuySfbQk>" %}

Now your proxy server should be set as default server, so now click on SmartProxy extension icon and choose "Always Enable".

Open our [IP checker](https://ip.goproxies.com/) and see if your IP changed.

{% embed url="<https://www.youtube.com/watch?v=ag7G-yFK68k>" %}

That's it, you're all set!


# IP Burger

How to connect to GoProxies via IP Burger extension?

**IP Burger extension for Chrome can be installed** [**here.**](https://chrome.google.com/webstore/detail/ipburger-proxy-vpn/kchocjcihdgkoplngjemhpplmmloanja)

Click on the IP Burger extension icon in your toolbar and select "Settings" .

In the window that opens up enter your proxy credentials and click "Save".

After that you will see that the status changed to "Protected" and you can also see the new IP address in the same window.

{% embed url="<https://www.youtube.com/watch?v=qnaqY6PlMok>" %}

And that's it, you've successfully connected!


# Puppeteer

How to connect to GoProxies via Puppeteer

Puppeteer is a popular tool for web scraping and parsing.

Below you can find an example of the set-up process

* In Puppeteer, under the ‘proxy-server’, update the proxy server IP and port number (i.e. <https://proxy.goproxies.com:1080>).
* Replace the 'USERNAME' and 'PASSWORD' with your credentials

Here's how a full example of a code should look like:

```
const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch({
    headless: false,
    args: ['--proxy-server=https://proxy.goproxies.com:1080']  
});
  const page = await browser.newPage();
    await page.authenticate({
        username: 'USERNAME',
        password: 'PASSWORD'
    });
    await page.goto('https://ip.goproxies.com');
})();
```

And that's it! You've successfully integrated GoProxies on Puppeteer.


# FoxyProxy

**FoxyProxy Standard extension can be installed -** [**here.**](https://addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/)

Open the FoxyProxy extension and click "Add +". Give a name to your profile and enter your proxy credentials and click "Save".

{% embed url="<https://www.youtube.com/watch?v=-8tEOAl11Wo>" %}

Choose your proxy profile or click on the extension icon and choose a proxy from the list.

Open our [IP checker](https://ip.goproxies.com/) and see what IP you got.

{% embed url="<https://www.youtube.com/watch?v=gxZzg35uqvA>" %}

That's it, you're all set!


# ZeroOmega (Proxy SwitchyOmega 3)

How to connect to GoProxies proxy via  ZeroOmega (Proxy SwitchyOmega 3)

Proxy SwitchyOmega is no longer available because it doesn't follow best practices for Chrome extensions. **Please note** that SwitchyOmega can be found now under the new brand name - **ZeroOmega**.

ZeroOmega (Proxy SwitchyOmega 3) **extension can be installed -** [**here.**](https://chromewebstore.google.com/detail/proxy-switchyomega-3-zero/pfnededegaaopdmhkdmcofjmoldfiped?hl=en)

After the installation open the extension and click "New profile". Give a name to your profile and click "Create".

Then choose protocol HTTP, add the host and port.

<figure><img src="/files/pQaZ42HyKhVuOiQ6o2nR" alt=""><figcaption></figcaption></figure>

Afterwards click on the lock sign on your right, enter Username (replace the word username in the first line) and Password.

Click Save changes and Apply changes.

<figure><img src="/files/KGk2xYJr4hCRmm2yrxuO" alt=""><figcaption></figcaption></figure>

To enable proxy, you will need to click on the extension icon and select your profile.

Open our [IP checker](https://ip.goproxies.com/) and you will see the IP you got.

{% embed url="<https://www.youtube.com/watch?embeds_referring_euri=https://www.goproxies.com/&source_ve_path=MjM4NTE&v=-fVr42xEDOs>" %}

Congratulations, you're all set!


# Proxy Managers


# AdsPower

This Page will show how to integrate with AdsPower

Configure your anti-detect browser with GoProxies in minutes. Secure, scale, and make your browsing environments safeguarded against blacklisting or getting your IP address banned.

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Proxy Setup

**Step 1.** [**create**](https://app.adspower.com/registration) an account, and then [**download**](https://www.adspower.com/download/) AdsPower.

**Step 2.** Open the AdsPower app and select **New Profile**.

<img src="/files/nu953icGNqW5yGacFxeE" alt="" data-size="original"><br>

**Step 3.** **Name** the profile.

**Step 4.** Select the preferred **Browser** and **OS** type for your profile.

<img src="/files/Preh9ZpC1SCHIs6Ciejv" alt="" data-size="original"><br>

**Step 5.** Select the **Proxy type**: **`HTTP`**, **`HTTPS`** or **`SOCKS5`**.

<img src="/files/BVcaeMONTyfU7qpPxUOb" alt="" data-size="original"><br>

**Step 6.** Fill in the **Host:Port, which is proxy.goproxies.com:1080**

**Step 7.** Set up the authentication:

* **Username**: Proxy username. (just remember to add customer- before your username)
* **Password**: Proxy password.

**Step 8.** You can also click **Check Proxy** to test the connection.

**Step 9.** When you're done, click **OK** to save the profile.

<img src="/files/BCA85JDmL4SZp1srXO6j" alt="" data-size="original"><br>

**Step 10.** In the Profile tab press **Open** to launch the Browser profile.

<figure><img src="/files/NXDLVu02QhnefaN66vmy" alt=""><figcaption></figcaption></figure>

#### Verify the Connection

* Once you launch a profile, AdsPower will open a webpage displaying the proxy IP, profile details, and browser fingerprint details. To get the latest IP information, please visit [ip.goproxies.com](https://ip.goproxies.com). If successful, your IP address will display the proxy's location.

<br>


# BitBrowser

BitBrowser Proxy Setup Guide

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Proxy Setup

1. Create an account [**on this page**](https://client.bitbrowser.cn/register?lang=en).
2. [**Download**](https://www.bitbrowser.net/download/) BitBrowser on your device.
3. Open up the **BitBrowser** app and log into your BitBrowser account.

<figure><img src="/files/YsC1hnCWjJdrLyUxOV3b" alt=""><figcaption></figcaption></figure>

4. Navigate to the Browser Profiles tab and click **"Add"** to add a new profile/proxy:
5. The settings tab will appear on the right side; scroll down until you find **Proxy** and select the appropriate proxy type:

* All the special settings you can select for this browser can be viewed on this page [**here**](https://doc.bitbrowser.net/).

6. Input the proxy details/endpoint into the correct fields, and choose the **Proxy Type** (`HTTP`, `HTTPS`, or `SOCKS5`). Next, the proxy details can be found on your Decodo dashboard. Here's an example for **residential** proxies:
   * **Host:** `proxy.goproxies.com`
   * **Port:** `1080`
   * **Username:** Input your proxy username (just make sure to add customer- before your username)    &#x20;
   * **Password:** Input your proxy password
   * You can go into advanced options and customize your browser fingerprint if needed.
7. Once input, you can double-check if the proxy works by clicking **"Check proxy"**:
8. Click **"Confirm"** in the bottom right corner. The profile should be saved, and that's it.

### Verify the Connection

Visit ip.goproxies.com. If proxy setup was successful, your IP address will display the proxy IP adddress.<br>


# Dolphin Anty

How to connect to GoProxies using Dolphin Anty

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Walkthrough

1. Create an account on [this page](https://dolphin-anty.com/panel/#/auth/registration) and then download Dolphin Anty app from [here](https://dolphin-anty.com/download/).

2. Open the app and click **Create Profile** or the Plus **(+)** button on the top.

3. Give a name to your browser profile under "Profile name".

4. Click **New Proxy** on the bottom of the window.                   &#x20;

   <figure><img src="/files/hwGv4smeSo4vvnuiUmG0" alt=""><figcaption></figcaption></figure>

5. Select HTTP or SOCKS5

6. Populate the proxy and authentication fields with&#x20;

* <http://customer-username:password@proxy.goproxies.com:1080> or socks5://customer-username:<password@proxy.goproxies.com>:10003 (if needed, appending the country tag to username as per our country [guide](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters/country)

7. Click **Create Profile** on the bottom right\
   ![](/files/896nwtJpkaCVbGGmNDj6)
8. In the All profiles section, select ![](/files/x3h1FPS109dRCRJ3JwNU) next to your new profile name to open it.

### Verifying Connection

Visit [ip.goproxies.com](/proxies/faq/static-residential-proxies/which-locations-goproxies-covers-with-static-residential-proxies) and if successful, your new IP will display the location of the proxy.


# Geelark

How to connect to GoProxies using Geelark?

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Walkthrough

1. Sign up to their service [here](https://app.geelark.com/#/register).
2. Download the app [on this page](https://www.geelark.com/download-center/).
3. Open the app.
4. Click Profiles on the top left to see your current profiles.&#x20;
5. On the top right, choose New Profile

<figure><img src="/files/TpwJSYntIG9QddKLifTq" alt=""><figcaption></figcaption></figure>

6. Name the profile and choose the operating system
7. Scroll down to **Proxy Settings** and select **Custom**
8. Pick **Type** as HTTP or Socks5

<figure><img src="/files/ZQ9VrQUujlmawWT0rvqR" alt=""><figcaption></figcaption></figure>

9. Scroll down and input the proxy details:

* ip/Host: proxy.goproxies.com:1080, or instead of 'proxy', make it proxy-america, proxy-europe or proxy-asia for Americas, Europe and Africa, and Oceania respectively if you're only planning to use only that specific regions, otherwise automatic routing of global 'proxy' endpoint will be adding unnecessary latency for you.
* Port: 1080
* Username: enter customer-your\_username\_here (if you want to target specific countries or states as per our [proxy parameters articles](/proxies/rotating-residential-proxies/proxy-parameters), append -country-country\_abbreviation **after** the username, e.g customer-exampleuser-country-us
* Press **Check Proxy a**nd see if you're receiving an IP address as per the screenshot below:

  <figure><img src="/files/1AAUOw2zFQHt2rtHJh5U" alt=""><figcaption></figcaption></figure>

10. Click **OK** at the bottom to save the settings of your profile.You Should be redirected back to the **Profiles** page whre you'll see your newly created profile as a tile.&#x20;
11. Hover over the tile and press the **Start** button that appears there.

<figure><img src="/files/sKc1nbtGifaFVV03neTx" alt=""><figcaption></figcaption></figure>

And you're done! Verify the connection by going to ip.goproxies.com where you should receive a proxy IP address.


# GoLogin

How to setup GoLogin to work with GoProxies

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Proxy Setup

1. Go to GoLogin website and create an account [here](https://gologin.com/).
2. Open GoLogin and click **Add profile** on the top-left of the screen.

<figure><img src="/files/zEMSOGYKBu4Zo4N3jp1M" alt=""><figcaption></figcaption></figure>

3. Give a name to your profile.
4. Select Your Proxy below.
5. Skip **Auto** for now, and enter:

* IP Address: proxy.goproxies.com
* Port: 1080
* Login: enter customer-your\_username\_here (if you want to target specific countries or states as per our [proxy parameters articles](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters), append -country-country\_abbreviation **after** the username, e.g customer-exampleuser-country-us
* Password: proxypassword

6. Press **Check Proxy** at the bottom

<figure><img src="/files/y3tpdcNF2G0Imb5HzTXD" alt=""><figcaption></figcaption></figure>

7. You should be able to switch the proxy type now:\
   ![](/files/AfpQ4dCynHCAMCf8YXn8)
8. Click **Create Profile**
9. You should be directed back to the Profile Management section. Here, press the **Run** button next to the profile name as it appears in the proxy list:

   <figure><img src="/files/xD1I1vLSq8WgeOWBwxjc" alt=""><figcaption></figcaption></figure>

### Verify the Connection

Open the browser and go to [ip.goproxies.com](https://ip.goproxies.com). If you've done everything correctly, the IP address should now display the proxy location.&#x20;


# Hidemyacc

How to connect to GoProxies using Hidemyacc

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Walkthrough

1. Download the Hidemyacc app and create an account through it.
2. Sign in to your Hidemyacc
3. Click **Create new profile at the center of the screen, since you don't have any listed here. Otherwise, click the**![](/files/CinQymNYsnEUGQpyL2s1) **sign on the top left**:

<figure><img src="/files/pTMDSaM8y07uwPGdLEIc" alt=""><figcaption></figcaption></figure>

4. The Overview page will display the settings for your operating system and browser. Select the appropriate ones. For the documentation on advanced features, see their [official documentaion page](https://docs.hidemyacc.com/?_gl=1*33wbwq*_gcl_au*MzAwMTI1NDEuMTcyNjIwMTA3Nw..*_ga*NjA4MDk0NzM3LjE3MjYyMDEwNzc.*_ga_N9X6D2Y20T*MTcyODg3NjMzMi4yLjEuMTcyODg3Njk0NC41OS4wLjA.):\
   ![](/files/NAmlTv24tVjv89N1zODX)
5. Go to **Proxy** on the top left
6. Select **Your Proxy** on the top.
7. Populate these fields:

* Connection type: **HTTP**, or **Socks5**.
* Quick Add: proxy.goproxies.com:1080:your\_proxy\_username:your\_proxy\_password (username has to have customer- prefixed, fro example: customer-your\_proxy\_username)
* Enter Proxy information below:&#x20;
  * IP Address/Host: proxy.goproxies.com
  * Port: 1080 (or 10003 for Socks5)
  * Username: enter customer-your\_username\_here (if you want to target specific countries or states as per our [proxy parameters articles](/proxies/rotating-residential-proxies/proxy-parameters), append -country-country\_abbreviation **after** the username, e.g customer-exampleuser-country-us
  * Password: your\_proxy\_password

8. Press **Check Proxy**. If you've entered the correct credentials and your proxy is valid, it will display the proxy IP address next to it at the bottom:

<figure><img src="/files/DFHSnPZ2dX4EFlFP6ign" alt=""><figcaption></figcaption></figure>

9. Press **+ Create** on the top right.
10. You'll be redirected to the **Profiles** page again where you will see the newly created profile now. Press ![](/files/tpbqUrDG10EJRd9Cec0Z) at the right edge of the profile to start your proxy:

<figure><img src="/files/fdQG4lpSHfvAqXvbXtHu" alt=""><figcaption></figcaption></figure>

11. It will say ![](/files/KkaNiC0qgyZNR2lBAf38) and prepare everything before opening up your browser that you selected back in the **Overview** page.

### Verify the connection

Navigate to ip.goproxies.com. If you've connected to the proxy correctly, it should show you the new proxy address.

<figure><img src="/files/v4WqJZo4cI3tIKDmkIbe" alt=""><figcaption></figcaption></figure>


# Incognition

How to use GoProxies with Incognition

Incognition is a proxy manager that allows you to manage many profiles that launch their own cutom and independent browsers with it's own cookies and other website data.

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Walkthrough

1. [Sign up](https://incogniton.com/my-account/) on the Incognition signup page.
2. Download the Incognition proxy manager here: [download](https://incogniton.com/download-incogniton/)
3. Install and launch the app.
4. Go to Profile Management and press&#x20;
5. at the top of the screen.

<figure><img src="/files/nlcSBWoHYGR3PcIcjwEl" alt=""><figcaption></figcaption></figure>

6. On the left, go to the Proxy -> Custom Proxy
7. Set HTTP or Socks5
8. Proxy: (ip:port): proxy.goproxies.com:1080, or instead of 'proxy', make it proxy-america, proxy-europe or proxy-asia for Americas, Europe and Africa, and Oceania respectively if you're only planning to use only that specific regions, otherwise automatic routing of global 'proxy' endpoint will be adding unnecessary latency for you. You also need to specify the country and session stickiness here if you're using those as per [Proxy Parameters](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters) guide.
9. Proxy username: customer-your\_proxy\_username
10. Proxy password: your proxy password
11. (Optional) Click **Check Proxy** on the bottom to see if you've configured it correctly and you're receiving a proxy IP Address (it's going to be shown on the right)\
    \
    ![](/files/MPBJkkufKH2RRXuI1Uuz)
12. Check the other options on the left, for example **Overview** where you can specify what operating system you're using
13. Once you're finished, press "Create Profile" on the very right of the page

<figure><img src="/files/f7YlaMOhxEUSfF7uTk6s" alt=""><figcaption></figcaption></figure>

14. You Will be redirected to the **Profile Management** Screen where you will see your newly-created profile. Press **Start** on it's right end to launch it.

### Confirm Connectivity

When in the new browser, go to [ip.goproxies.com.](https://ip.goproxies.com) If you've correctly set it up, you will see a proxy ip there.


# ixBrowser

How to set up GoProxies with ixBrowser

In this guide, we'll cover how to configure your GoProxies proxies within IXBrowser, ensuring each browser profile is assigned its own dedicated IP address.

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Proxy Setup

1. Sign up to their service by creating an account [here](https://ixbrowser.com/register)
2. Download ixBrowser to your device [here](https://ixbrowser.com/en)
3. Log into your account and click on the Browser Profile on the top left.
4. Select **Create Profile**
5. Click **Proxy Configuration**
6. Under **Proxy Method** Select **Custom**
7. Choose **Proxy Type** as **HTTP, HTTPS** or **Socks5**

* **Host:** proxy.goproxies.com
* **Port:** 1080 (or 10003 if Socks5)
* **Proxy Account:** customer-your\_proxy\_account
* **Proxy Password:** your proxy password

8. Press Create on the bottom-right
9. You should be redirected to the **Profile list** page.
10. Press **Open** on the right end of your newly-created profile.

### Confirm Connectivity

When in the new browser, go to [ip.goproxies.com.](https://ip.goproxies.com) If you've correctly set it up, you will see a proxy ip there.


# MoreLogin

How to integrate GoProxies with MoreLogin

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Walkthrough

1. Create an account on their website [here](https://www.morelogin.com/register/).
2. Download MoreLogin to your device [here](https://www.morelogin.com/download/).
3. Open the MoreLogin app.
4. Click on the **+ New Profile** button on the top left.                  ![](/files/3ku9U76rR3d4EnG8jprW)
5. At the top, click the **Advanced create** tab and pick the wanted options for your proxy connection to configure the browser (or leave the default settings).      ![](/files/IF7X94zvT5VA1xylCjyM)
6. Scroll down to the proxy actions section and select **New proxy**.
7. Choose the Proxy Type as HTTPS, HTTP or SOCKS5, then enter the proxy details (your API Username and password, appended with 'customer-', so e.g customer-username.

* Host: proxy.goproxies.com
* Port: 1080
* Proxy Account: customer-yourproxyusername (any country needs to be appended here, e.g customer-yourproxyusername-country-us)
* Proxy Password: enter your proxy password
* &#x20;You can head to the advanced options to customize your settings further if needed.

8. When finished, click **OK** to save the created profile.
9. Go Back to the profile tab and click **Start** to launch your profile and establish a proxy connection, and you're done!

Try visiting ip.goproxies.com to confirm your IP address is now changed.


# Multilogin

How to connect with GoProxies using Multilogin

Multilogin is a paid service tool that allows you to manage many unique browsing profiles.

### Requirements

To have GoProxies work properly in this setup, ensure that:<br>

* No other VPN or proxies are active.
* You have the GoProxies endpoints ready, e.g proxy.goproxies.com:1080, or proxy-america.goproxies.com:1080
* Your GoProxies subuser (also called API User)  username and password.

### Setup

1. Navigate to the Multilogin [**website**](https://multilogin.com/), log in, and click **+ Create**.![](/files/8JC4oDSFASCW6oFuwMbh)
2. **Give a name to** your browser profile. &#x20;
3. Under **Proxy,** select **Custom.**
4. Choose HTTPS, HTTP or SOCKS5.
5. Fill in the proxy and authentication field:
   * Add Proxy Details: proxy.goproxies.com:1080:username:password;
   * Add more details if needed by pressing **Advanced mode**.
6. Click C**reate Profile**
7. In the **All profiles** section, click **Start** next to your new profile to open it.
8. Once you Start the profile, Multilogin will open a webpage displaying the proxy IP and fingerprint details. To see your IP address, please visit [ip.goproxies.com.](https://ip.goproxies.com) If successful, your IP address will display the proxy's location.

<figure><img src="/files/8fh9mrOlpbeLMJn077sk" alt=""><figcaption></figcaption></figure>


# Octo Browser

How to setup Octo Browser to work with GoProxies

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.

### Proxy Setup

1. Download Octo Browser and create an account [here](https://octobrowser.net/).
2. Open the application and click **Create Profile** from the Profiles section.
3. In the **General** tab, give your profile a name.
4. click the **Proxy** field, and select **+ Set a new proxy**.\
   ![](/files/jx4dPucFA3KJ2OcUzWSF)
5. Set the proxy type to **HTTP** and enter the following:
   * **Host:** `proxy.goproxies.com`
   * **Port:** `1080`
   * **Login:** `customer-your_username_here` — to target a specific country, append `-country-country_abbreviation` after your username, e.g. `customer-exampleuser-country-us`, as covered in our [proxy parameters article](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters)
   * **Password:** your proxy password
6. Hit **Check Proxy** to make sure everything is set up correctly, then click **Confirm**.\
   ![](/files/4GEgSZF57bWz42X1X4Ed)
7. Click **Create Profile**, then press ![](/files/x6JTBv6So09Oj3YV4ByE) next to the profile to launch the browser:<br>

   <figure><img src="/files/P9oDJwTi6F0Imgp6jhPo" alt="" width="563"><figcaption></figcaption></figure>

   \
   \
   This will start up the Octo Browser for you:<br>

   <figure><img src="/files/4aTxxQnRSVxoriMA5Xmf" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
&#x20;Tick **Save to Proxy Manager** before confirming to save this proxy for future profiles.
{% endhint %}

### Verify the Connection

While using the opened Octo browser, go to [ip.goproxies.com](https://ip.goproxies.com). If the IP shown reflects your proxy location, you're all set.


# VMLogin

### Requirements

To have GoProxies work properly in this setup, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.

### Proxy Setup

1. Download VMLogin and create an account [here](https://www.vmlogin.us/).
2. Open the application and click **New browser profile** from the left-hand menu.<img src="/files/IvQOD6Ttp2GIuy7ZcKS9" alt="" data-size="original">
3. Enter a name for your profile in the **Display name** field, then click **Setting proxy server**.![](/files/j2i59jBaPyTGT1cyAqF9)\ <img src="/files/ejj3hOEJi0wE5yPWBpuG" alt="" data-size="original">
4. Select **HTTP** from the proxy type dropdown and fill in the following:
   * **IP address:** `proxy.goproxies.com`
   * **Port:** `1080`
   * **Username:** `customer-your_username_here` — to target a specific country, append `-country-country_abbreviation` after your username, e.g. `customer-exampleuser-country-us`, as covered in our [proxy parameters article](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters)
   * **Password:** your proxy password
5. Click **Test Proxy** — if it returns IP details, you're good. Click **Confirm**, then **Save** to finalize the proxy settings.
6. Once you're happy with the rest of your profile settings, click **Save profile**.

### Verify the Connection

Open the browser and go to [ip.goproxies.com](https://ip.goproxies.com). If the IP shown reflects your proxy location, you're all set.


# Proxifiler

How set up Proxifiler with GoProxies

Proxifier is a network utility for Windows and macOS that routes application traffic through `SOCKS5` and `HTTPS` proxies. It's useful for bypassing firewalls, masking your IP, and controlling exactly which connections go through the proxy.

### Requirements

Before getting started, ensure that:

* No other VPN or proxies are active.
* You have your GoProxies endpoint ready, e.g. `proxy.goproxies.com:1080`
* Your GoProxies subuser (also called API User) username and password.

### Windows Proxy Setup

1. Download Proxifier [here](https://www.proxifier.com/).
2. Open the application and go to **Proxy Servers**.
3. Click **Add** to create a new proxy server.
4. Select the proxy type — `HTTPS` or `SOCKS5`.
5. Enter `proxy.goproxies.com` as the host and `1080` as the port.
6. Check the **Enable** box to set up authentication.
7. Fill in your credentials:
   * **Username:** `customer-your_username_here` — to target a specific country, append `-country-country_abbreviation` after your username, e.g. `customer-exampleuser-country-us`, as covered in our [proxy parameters article](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters)
   * **Password:** your proxy password
8. Click **OK** to save, then **OK** again on the next window.

### Troubleshooting

If you're running into connection issues, try enabling leak prevention:

1. Go to **Profile → Advanced** and enable **DNS and IP Leak Prevention** mode.
2. Click **Yes** to confirm.

### Verify the Connection

Open a browser and go to [ip.goproxies.com](https://ip.goproxies.com). If the IP shown reflects your proxy location, you're all set. If not, try restarting the application.

***

### macOS Proxy Setup

1. Open Proxifier and go to **Proxies**.
2. Click **Add** to create a new proxy server.
3. Enter `proxy.goproxies.com` as the host and `1080` as the port.
4. Select the proxy type — `HTTPS` or `SOCKS5`.
5. Check the **Enable** box to set up authentication.
6. Fill in your credentials:
   * **Username:** `customer-your_username_here` — to target a specific country, append `-country-country_abbreviation` after your username, e.g. `customer-exampleuser-country-us`, as covered in our [proxy parameters article](https://docs.goproxies.com/proxies/rotating-residential-proxies/proxy-parameters)
   * **Password:** your proxy password
7. Click **Save**.

### Verify the Connection

Open a browser and go to [ip.goproxies.com](https://ip.goproxies.com). If the IP shown reflects your proxy location, you're all set. If not, try restarting the application.


# How to rotate proxies in Python?

In this article we will explain how to rotate proxies for web scraping. Rotating proxies will ensure stable sessions so you can reach your desired targets without issues.

### How to start with rotating proxies in Python - installing prerequisites

To get started, you can create a virtual environment by running the following command:

```
virtualenv venv
```

Use the source command to activate your environment on Unix-like operating systems, including Linux and macOS:

```
source venv/bin/activate
```

Install requests module in the current virtual environment you are using:

```
pip install requests
```

Congratulations! You have finished all the steps for  the installation of the requests module!

### Sending GET requests through a proxy

Now, let’s start with the basics. In some cases you might need to connect and use one single IP address or proxy. How do we use a single proxy?These are the essential things that you will need:

* Scheme (e.g., http);
* Endpoint;
* Port (e.g., 1080);
* Username and password to connect to the proxy.

Here is an example how the proxy request should look in this case:

```
https://customer-username:password@proxy.goproxies.com:1080
```

You can also select multiple protocols, as well as specify domains where you would like to use a separate proxy.

Replace `PROXY1`, `PROXY2` with your proxy format as shown in the example below:

```
proxies = {
    'http': 'PROXY1',
    'https': 'PROXY2'
}
```

Make a request using requests.get while providing the variables we created previously:

```
try:
    response = requests.get('https://ip.goproxies.com', proxies=proxies, timeout=10)
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")
```

Your full script which returns back the IP address should look like this:

```
import requests

proxies = {
    'http': 'http://customer-username:password@proxy.goproxies.com:1080',
    'https': 'https://customer-username:password@proxy.goproxies.com:1080'
}

try:
    response = requests.get('https://ip.goproxies.com', proxies=proxies, timeout=10)
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")
```

The result of this script will provide you with the IP address of your proxy:

You have now taken care of hiding behind a proxy when making requests through the Python script.\
Let's learn how to rotate through a list of proxies instead of just using one.

```
% python proxy.py 
45.42.JKL.MNO
```

### Rotating proxies using proxy pool

You will work with a list of proxy servers saved as a CSV file called proxies.csv, in which you will list proxy servers as shown below:

```
http://customer-username:password@proxy.goproxies.com:1080
https://customer-username:password@proxy.goproxies.com:1080
http://customer-username:password@proxy-america.goproxies.com:1080
http://customer-username:password@proxy-asia.goproxies.com:1080
http://customer-username:password@proxy-europe.goproxies.com:1080
```

If you want to add more proxies in the file, add each of them in a separate line.

After that, create a Python file and specify the file name and the timeout duration for each single proxy response.

```
TIMEOUT_IN_SECONDS = 10
CSV_FILENAME = 'proxies.csv'
```

Using the code provided, open the CSV file, read each line of proxy servers into the csv\_row variable, and build the scheme\_proxy\_map configuration.&#x20;

This is an example of how it should look:

```
with open(CSV_FILENAME) as open_file:
    reader = csv.reader(open_file)
    for csv_row in reader:
        scheme_proxy_map = {
            'https': csv_row[0],
        }
```

To ensure that everything runs efficiently, we'll use the same scraping code as before, to access the site with proxies.

```
with open(CSV_FILENAME) as open_file:
    reader = csv.reader(open_file)
    for csv_row in reader:
        proxies = {
            'https': csv_row[0],
        }

        try:
            response = requests.get('https://ip.goproxies.com', proxies=proxies, timeout=TIMEOUT_IN_SECONDS)
            print(response.text)
        except requests.exceptions.RequestException as e:
            print(f"An error occurred with proxy {csv_row[0]}: {e}")
```

If you want to scrape content using any working proxy from the list and stop the script after a successful attempt, just add a break after print line to stop going through the proxies in the CSV file:

```
response = requests.get('https://ip.goproxies.com', 
proxies=proxies, timeout=TIMEOUT_IN_SECONDS)
        print(response.text)
        break  # break here to stop going through the proxies
```

Your full updated code should look like this:

```
import requests
import csv

TIMEOUT_IN_SECONDS = 10
CSV_FILENAME = 'proxies.csv'

with open(CSV_FILENAME) as open_file:
    reader = csv.reader(open_file)
    for csv_row in reader:
        proxies = {
            'https': csv_row[0],
        }

        try:
            response = requests.get('https://ip.goproxies.com', proxies=proxies, timeout=TIMEOUT_IN_SECONDS)
            print(response.text)
            break  # Break the loop after a successful request
        except requests.exceptions.RequestException as e:
            print(f"An error occurred with proxy {csv_row[0]}: {e}")
```

That's it! Congratulations, you have successfully learned how to rotate proxies using Python.


# How to use GoProxies in Ruby?

## Using Ruby to Route Traffic Via GoProxies

In this guide, you'll learn how to utilize Ruby for sending traffic through GoProxies. Follow the steps below to efficiently manage your network traffic

Below you will find a straightforward example of sending a request through GoProxies in Ruby:

```
require 'uri'
require 'net/http'

uri = URI.parse('http://ipinfo.io')
proxy = Net::HTTP::Proxy('proxy.goproxies.com', 1080, 'customer-USERNAME-country-au', 'PASSWORD')

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

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

puts result.body
```

\
Congratulations! You have successfully sent a request through our proxy. To change the country, select a different country code in ISO 3166-1 alpha-2 format, like GB or DE.


# Resellers API

GoProxies offers a highly customisable Reseller API. Further instructions and settable parameters can be found on our extensive documentation here.


# Login

## POST /api/v1/login

> Login

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"paths":{"/api/v1/login":{"post":{"summary":"Login","operationId":"login","tags":["Login"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"LoginRequest":{"properties":{"username":{"type":"string"},"password":{"type":"string"}},"required":["username","password"]},"Token":{"properties":{"token":{"type":"string"}},"required":["token"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}
```


# Statistics

## GET /api/v1/stats/traffic

> Get user traffic stats

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"TrafficStats":{"properties":{"bytes":{"type":"number"},"filter":{"$ref":"#/components/schemas/TrafficStatsQuery"}},"required":["bytes","filter"]},"TrafficStatsQuery":{"properties":{"country":{"type":"string"},"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"username":{"type":"string"}},"required":["start_at","end_at"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/stats/traffic":{"get":{"summary":"Get user traffic stats","operationId":"getTrafficStats","tags":["Statistics"],"parameters":[{"name":"country","in":"query","description":"Filter by country","required":false,"schema":{"type":"string"}},{"name":"start_at","in":"query","description":"Filter by start date","required":false,"schema":{"type":"string","format":"date-time","default":"end of current day"}},{"name":"end_at","in":"query","description":"Filter by end date","required":false,"schema":{"type":"string","format":"date-time","default":"start of the current month"}},{"name":"username","in":"query","description":"Filter by username of subuser.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrafficStats"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## GET /api/v1/stats/traffic/history

> Get user traffic stats history

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"TrafficHistoryInterval":{"type":"string","enum":["hour","day","week","auto"]},"TrafficHistoryStats":{"properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/TrafficHistoryStat"}},"filter":{"$ref":"#/components/schemas/TrafficHistoryStatsQuery"}},"required":["values","filter"]},"TrafficHistoryStat":{"properties":{"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"bytes":{"type":"number"}},"required":["start_at","end_at","bytes"]},"TrafficHistoryStatsQuery":{"properties":{"country":{"type":"string"},"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"interval":{"$ref":"#/components/schemas/TrafficHistoryInterval"},"username":{"type":"string"}},"required":["start_at","end_at"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/stats/traffic/history":{"get":{"summary":"Get user traffic stats history","operationId":"getTrafficStatsHistory","tags":["Statistics"],"parameters":[{"name":"country","in":"query","description":"Filter by country","required":false,"schema":{"type":"string"}},{"name":"start_at","in":"query","description":"Filter by start date","required":false,"schema":{"type":"string","format":"date-time","default":"end of current day"}},{"name":"end_at","in":"query","description":"Filter by end date","required":false,"schema":{"type":"string","format":"date-time","default":"start of the current month"}},{"name":"interval","in":"query","description":"Group history into values by given interval","required":false,"schema":{"$ref":"#/components/schemas/TrafficHistoryInterval"}},{"name":"username","in":"query","description":"Filter by username of subuser.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrafficHistoryStats"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## GET /api/v1/stats/requests/history

> Get user requests history

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"TrafficHistoryInterval":{"type":"string","enum":["hour","day","week","auto"]},"RequestsHistoryStats":{"properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/RequestsHistoryStat"}},"filter":{"$ref":"#/components/schemas/RequestsHistoryStatsQuery"}},"required":["values","filter"]},"RequestsHistoryStat":{"properties":{"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"count":{"type":"integer"},"amount":{"type":"integer"}},"required":["start_at","end_at","amount"]},"RequestsHistoryStatsQuery":{"properties":{"country":{"type":"string"},"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"interval":{"$ref":"#/components/schemas/TrafficHistoryInterval"},"username":{"type":"string"},"status":{"type":"integer"},"status_not":{"type":"integer"}},"required":["start_at","end_at","interval"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/stats/requests/history":{"get":{"summary":"Get user requests history","operationId":"getRequestsHistory","tags":["Statistics"],"parameters":[{"name":"country","in":"query","description":"Filter by country","required":false,"schema":{"type":"string"}},{"name":"start_at","in":"query","description":"Filter by start date","required":false,"schema":{"type":"string","format":"date-time","default":"end of current day"}},{"name":"end_at","in":"query","description":"Filter by end date","required":false,"schema":{"type":"string","format":"date-time","default":"start of the current month"}},{"name":"interval","in":"query","description":"Group history into values by given interval","required":false,"schema":{"$ref":"#/components/schemas/TrafficHistoryInterval"}},{"name":"username","in":"query","description":"Filter by username of subuser.","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","description":"Filter by request status","required":false,"schema":{"type":"integer"}},{"name":"status_not","in":"query","description":"Filter by request status not equal to","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestsHistoryStats"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Get countries used in traffic

> Get list of countries used in traffic statistics (in country code in 2-letter 3166-1 alpha-2 format).

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"UsedCountriesStats":{"properties":{"countries":{"type":"array","items":{"type":"string"}}},"required":["countries"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/stats/countries":{"get":{"summary":"Get countries used in traffic","description":"Get list of countries used in traffic statistics (in country code in 2-letter 3166-1 alpha-2 format).","operationId":"getUsedCountriesStats","tags":["Statistics"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsedCountriesStats"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````


# Resellers

## List subusers

> Get a list of all subusers. Optionally filter by name to select a username.

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ResellerSubusers":{"properties":{"subusers":{"type":"array","items":{"$ref":"#/components/schemas/ResellerSubuser"}},"paging":{"$ref":"#/components/schemas/Paging"}},"required":["subusers","paging"]},"ResellerSubuser":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used"]},"Paging":{"properties":{"limit":{"type":"integer"},"offset":{"type":"integer"}},"required":["limit","offset"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/reseller/subusers":{"get":{"summary":"List subusers","description":"Get a list of all subusers. Optionally filter by name to select a username.","operationId":"resellerGetSubusers","tags":["Resellers"],"parameters":[{"name":"username","in":"query","description":"Filter by username","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Limit the number of results","required":false,"schema":{"type":"integer","default":1000}},{"name":"offset","in":"query","description":"Offset the results","required":false,"schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResellerSubusers"}}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Create a new subuser

> Create a subuser with optional limits. If limits are set the period starts at the time of the call.

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"NewResellerSubuser":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number","description":"Traffic limit amount in GB"},"traffic_limit_unit":{"type":"string","description":"Traffic limit unit","deprecated":true},"period_seconds":{"type":"integer","description":"Traffic limit period in seconds"},"recurring":{"type":"boolean","description":"Whether the traffic limit is recurring"}},"required":["username"]},"ResellerSubuserWithSecret":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"},"secret":{"type":"string"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used","secret"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/reseller/subusers":{"post":{"summary":"Create a new subuser","description":"Create a subuser with optional limits. If limits are set the period starts at the time of the call.","operationId":"resellerCreateSubuser","tags":["Resellers"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewResellerSubuser"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResellerSubuserWithSecret"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Get details for a subuser

> Get a details of a subuser e.g. statistics of traffic usage.

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ResellerSubuser":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/reseller/subusers/{username}":{"get":{"summary":"Get details for a subuser","description":"Get a details of a subuser e.g. statistics of traffic usage.","operationId":"resellerGetSubuser","tags":["Resellers"],"parameters":[{"name":"username","in":"path","description":"Subuser's username","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResellerSubuser"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Update a subuser

> Update a subuser limits. Set all to 0 to remove them. If the user already has limits set, the period start time stays the same, otherwise it is set to the time of the call.

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ResellerSubuserUpdate":{"properties":{"traffic_limit_amount":{"type":"number","description":"Traffic limit amount in GB"},"traffic_limit_unit":{"type":"string","description":"Traffic limit unit","deprecated":true},"period_seconds":{"type":"integer","description":"Traffic limit period in seconds"},"recurring":{"type":"boolean","description":"Whether the traffic limit is recurring"}}},"ResellerSubuser":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/reseller/subusers/{username}":{"put":{"summary":"Update a subuser","description":"Update a subuser limits. Set all to 0 to remove them. If the user already has limits set, the period start time stays the same, otherwise it is set to the time of the call.","operationId":"resellerUpdateSubuser","tags":["Resellers"],"parameters":[{"name":"username","in":"path","description":"Subuser's username","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResellerSubuserUpdate"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResellerSubuser"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## DELETE /api/v1/reseller/subusers/{username}

> Delete a subuser

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/reseller/subusers/{username}":{"delete":{"summary":"Delete a subuser","operationId":"resellerDeleteSubuser","tags":["Resellers"],"parameters":[{"name":"username","in":"path","description":"Subuser's username","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Reset a subuser's limits

> Resets the current limit for an subuser, starting a new period. If a subuser has no limit this call will fail.

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ResellerSubuser":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/reseller/subusers/{username}/reset-limits":{"put":{"summary":"Reset a subuser's limits","description":"Resets the current limit for an subuser, starting a new period. If a subuser has no limit this call will fail.","operationId":"resellerResetSubuserLimits","tags":["Resellers"],"parameters":[{"name":"username","in":"path","description":"Subuser's username","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResellerSubuser"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Reset a subuser's secret

> Reset a subuser's secret with a randomly generated password.

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ResellerSubuserWithSecret":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"},"secret":{"type":"string"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used","secret"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/reseller/subusers/{username}/reset-secret":{"put":{"summary":"Reset a subuser's secret","description":"Reset a subuser's secret with a randomly generated password.","operationId":"resellerResetSubuserSecret","tags":["Resellers"],"parameters":[{"name":"username","in":"path","description":"Subuser's username","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResellerSubuserWithSecret"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## PUT /api/v1/reseller/subusers/{username}/enable

> Enable a subuser

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ResellerSubuser":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/reseller/subusers/{username}/enable":{"put":{"summary":"Enable a subuser","operationId":"resellerEnableSubuser","tags":["Resellers"],"parameters":[{"name":"username","in":"path","description":"Subuser's username","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResellerSubuser"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## PUT /api/v1/reseller/subusers/{username}/disable

> Disable a subuser

````json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"security":[{"userBearerAuth":[]}],"components":{"securitySchemes":{"userBearerAuth":{"description":"Bearer authentication with sentinel token for users.\n\nYou can use the following command to get the bearer token:\n\n```\ncurl -d '{\"username\":\"<username>\", \"password\":\"<password>\"}' -H \"Content-Type: application/json\" -X POST -s https://api.goproxies.com/api/v1/login | jq -r '.token'\n```\n\nSubstitute `<username>` and `<password>` with your credentials.\n","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ResellerSubuser":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used"]},"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/reseller/subusers/{username}/disable":{"put":{"summary":"Disable a subuser","operationId":"resellerDisableSubuser","tags":["Resellers"],"parameters":[{"name":"username","in":"path","description":"Subuser's username","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResellerSubuser"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````


# Health

## GET /api/v1/status

> Get status

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"servers":[{"url":"/"}],"paths":{"/api/v1/status":{"get":{"summary":"Get status","operationId":"getStatus","tags":["Health"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}}}}}},"components":{"schemas":{"Status":{"properties":{"db_status":{"type":"string"}},"required":["db_status"]}}}}
```


# Models

## The LoginRequest object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"LoginRequest":{"properties":{"username":{"type":"string"},"password":{"type":"string"}},"required":["username","password"]}}}}
```

## The Token object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"Token":{"properties":{"token":{"type":"string"}},"required":["token"]}}}}
```

## The TrafficStats object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"TrafficStats":{"properties":{"bytes":{"type":"number"},"filter":{"$ref":"#/components/schemas/TrafficStatsQuery"}},"required":["bytes","filter"]},"TrafficStatsQuery":{"properties":{"country":{"type":"string"},"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"username":{"type":"string"}},"required":["start_at","end_at"]}}}}
```

## The TrafficStatsQuery object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"TrafficStatsQuery":{"properties":{"country":{"type":"string"},"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"username":{"type":"string"}},"required":["start_at","end_at"]}}}}
```

## The TrafficHistoryStats object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"TrafficHistoryStats":{"properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/TrafficHistoryStat"}},"filter":{"$ref":"#/components/schemas/TrafficHistoryStatsQuery"}},"required":["values","filter"]},"TrafficHistoryStat":{"properties":{"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"bytes":{"type":"number"}},"required":["start_at","end_at","bytes"]},"TrafficHistoryStatsQuery":{"properties":{"country":{"type":"string"},"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"interval":{"$ref":"#/components/schemas/TrafficHistoryInterval"},"username":{"type":"string"}},"required":["start_at","end_at"]},"TrafficHistoryInterval":{"type":"string","enum":["hour","day","week","auto"]}}}}
```

## The TrafficHistoryStat object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"TrafficHistoryStat":{"properties":{"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"bytes":{"type":"number"}},"required":["start_at","end_at","bytes"]}}}}
```

## The TrafficHistoryStatsQuery object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"TrafficHistoryStatsQuery":{"properties":{"country":{"type":"string"},"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"interval":{"$ref":"#/components/schemas/TrafficHistoryInterval"},"username":{"type":"string"}},"required":["start_at","end_at"]},"TrafficHistoryInterval":{"type":"string","enum":["hour","day","week","auto"]}}}}
```

## The RequestsHistoryStats object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"RequestsHistoryStats":{"properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/RequestsHistoryStat"}},"filter":{"$ref":"#/components/schemas/RequestsHistoryStatsQuery"}},"required":["values","filter"]},"RequestsHistoryStat":{"properties":{"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"count":{"type":"integer"},"amount":{"type":"integer"}},"required":["start_at","end_at","amount"]},"RequestsHistoryStatsQuery":{"properties":{"country":{"type":"string"},"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"interval":{"$ref":"#/components/schemas/TrafficHistoryInterval"},"username":{"type":"string"},"status":{"type":"integer"},"status_not":{"type":"integer"}},"required":["start_at","end_at","interval"]},"TrafficHistoryInterval":{"type":"string","enum":["hour","day","week","auto"]}}}}
```

## The RequestsHistoryStat object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"RequestsHistoryStat":{"properties":{"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"count":{"type":"integer"},"amount":{"type":"integer"}},"required":["start_at","end_at","amount"]}}}}
```

## The RequestsHistoryStatsQuery object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"RequestsHistoryStatsQuery":{"properties":{"country":{"type":"string"},"start_at":{"type":"string","format":"date-time"},"end_at":{"type":"string","format":"date-time"},"interval":{"$ref":"#/components/schemas/TrafficHistoryInterval"},"username":{"type":"string"},"status":{"type":"integer"},"status_not":{"type":"integer"}},"required":["start_at","end_at","interval"]},"TrafficHistoryInterval":{"type":"string","enum":["hour","day","week","auto"]}}}}
```

## The UsedCountriesStats object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"UsedCountriesStats":{"properties":{"countries":{"type":"array","items":{"type":"string"}}},"required":["countries"]}}}}
```

## The TrafficHistoryInterval object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"TrafficHistoryInterval":{"type":"string","enum":["hour","day","week","auto"]}}}}
```

## The NewResellerSubuser object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"NewResellerSubuser":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number","description":"Traffic limit amount in GB"},"traffic_limit_unit":{"type":"string","description":"Traffic limit unit","deprecated":true},"period_seconds":{"type":"integer","description":"Traffic limit period in seconds"},"recurring":{"type":"boolean","description":"Whether the traffic limit is recurring"}},"required":["username"]}}}}
```

## The ResellerSubuserUpdate object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"ResellerSubuserUpdate":{"properties":{"traffic_limit_amount":{"type":"number","description":"Traffic limit amount in GB"},"traffic_limit_unit":{"type":"string","description":"Traffic limit unit","deprecated":true},"period_seconds":{"type":"integer","description":"Traffic limit period in seconds"},"recurring":{"type":"boolean","description":"Whether the traffic limit is recurring"}}}}}}
```

## The ResellerSubuser object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"ResellerSubuser":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used"]}}}}
```

## The ResellerSubuserWithSecret object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"ResellerSubuserWithSecret":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"},"secret":{"type":"string"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used","secret"]}}}}
```

## The ResellerSubusers object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"ResellerSubusers":{"properties":{"subusers":{"type":"array","items":{"$ref":"#/components/schemas/ResellerSubuser"}},"paging":{"$ref":"#/components/schemas/Paging"}},"required":["subusers","paging"]},"ResellerSubuser":{"properties":{"username":{"type":"string"},"enabled":{"type":"boolean"},"traffic_limit_amount":{"type":"number"},"traffic_limit_unit":{"type":"string"},"period_seconds":{"type":"integer"},"period_started_at":{"type":"string","format":"date-time"},"recurring":{"type":"boolean"},"traffic_used":{"type":"number"}},"required":["username","enabled","traffic_limit_amount","traffic_limit_unit","period_seconds","recurring","traffic_used"]},"Paging":{"properties":{"limit":{"type":"integer"},"offset":{"type":"integer"}},"required":["limit","offset"]}}}}
```

## The Paging object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"Paging":{"properties":{"limit":{"type":"integer"},"offset":{"type":"integer"}},"required":["limit","offset"]}}}}
```

## The Status object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"Status":{"properties":{"db_status":{"type":"string"}},"required":["db_status"]}}}}
```

## The Error object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"Error":{"properties":{"error":{"$ref":"#/components/schemas/Err"},"status":{"type":"integer"},"path":{"type":"string"}}},"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The Err object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"Err":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/FieldError"}}}},"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The FieldError object

```json
{"openapi":"3.0.3","info":{"title":"Resellers API specification","version":"1.0.0"},"components":{"schemas":{"FieldError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}
```


# GoProxies Scraping Examples

Examples showing how to use GoProxies with Python, cURL, Node.JS, Java, Ruby, PHP and Go.

GoProxies can be easily integrated into your scraping setup, no matter which programming language you decide to use. Below are demo examples for scraping amazon.com (for testing purposes) in several programming languages you can copy, paste and run right away - just make sure to replace credentials with your own API username and password.

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

```bash
curl --proxytunnel --proxy "https://customer-USERNAME:PASSWORD@proxy.goproxies.com:1080" https://www.amazon.com/dp/B07RZ74VLR
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
// How to run:
//   npm install axios https-proxy-agent
//   node proxy_example.js
//
// Save as proxy_example.js

const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');

const USERNAME = process.env.GOPROXIES_USER || 'customer-USERNAME';
const PASSWORD = process.env.GOPROXIES_PASS || 'PASSWORD';
const proxy = `https://${USERNAME}:${PASSWORD}@proxy.goproxies.com:1080`;
const agent = new HttpsProxyAgent(proxy);

// Test proxy (IP check)
axios.get('https://ip.goproxies.com', { httpsAgent: agent, timeout: 30000 })
  .then(res => console.log('IP check:', res.data))
  .catch(err => console.error('IP error:', err.message));

// Demo request to Amazon (for demo only)
axios.get('https://www.amazon.com/dp/B07RZ74VLR', { httpsAgent: agent, timeout: 30000 })
  .then(res => console.log('Page snippet:', res.data.slice(0,500)))
  .catch(err => console.error('Page error:', err.message));
```

{% endtab %}

{% tab title="Python" %}

```python
# How to run:
#   pip install requests
#   python proxy_example.py
#
# Save as proxy_example.py

import os
import requests

# Replace or use env vars
USERNAME = os.getenv("GOPROXIES_USER", "customer-USERNAME")
PASSWORD = os.getenv("GOPROXIES_PASS", "PASSWORD")
proxy_url = f"https://{USERNAME}:{PASSWORD}@proxy.goproxies.com:1080"

proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

# Test proxy (IP check)
resp = requests.get("https://ip.goproxies.com", proxies=proxies, timeout=30)
print("IP check:", resp.text)

# Demo request to Amazon (for demo only)
resp2 = requests.get("https://www.amazon.com/dp/B07RZ74VLR", proxies=proxies, timeout=30)
print("Status:", resp2.status_code)
print("Page snippet:", resp2.text[:500])
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# How to run:
#   ruby proxy_example.rb
#
# Save as proxy_example.rb

require 'net/http'
require 'uri'

proxy_host = 'proxy.goproxies.com'
proxy_port = 1080
proxy_user = ENV['GOPROXIES_USER'] || 'customer-USERNAME'
proxy_pass = ENV['GOPROXIES_PASS'] || 'PASSWORD'

uri = URI('https://www.amazon.com/dp/B07RZ74VLR')

Net::HTTP.start(uri.host, uri.port,
                proxy_host, proxy_port, proxy_user, proxy_pass,
                use_ssl: uri.scheme == 'https') do |http|
  req = Net::HTTP::Get.new(uri)
  res = http.request(req)
  puts res.code
  puts res.body[0..499]  # first 500 chars
end
```

{% endtab %}

{% tab title="Java" %}

```java
// How to run:
//   Requires Java 11+
//   javac ProxyExample.java
//   java ProxyExample
//
// Save as ProxyExample.java

import java.net.*;
import java.net.http.*;
import java.time.Duration;
import java.util.Base64;

public class ProxyExample {
    public static void main(String[] args) throws Exception {
        String proxyHost = "proxy.goproxies.com";
        int proxyPort = 1080;
        String user = System.getenv().getOrDefault("GOPROXIES_USER", "customer-USERNAME");
        String pass = System.getenv().getOrDefault("GOPROXIES_PASS", "PASSWORD");
        String auth = Base64.getEncoder().encodeToString((user + ":" + pass).getBytes());

        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(20))
            .proxy(ProxySelector.of(new InetSocketAddress(proxyHost, proxyPort)))
            .build();

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://www.amazon.com/dp/B07RZ74VLR"))
            .timeout(Duration.ofSeconds(30))
            .header("Proxy-Authorization", "Basic " + auth) // proxy auth header
            .GET()
            .build();

        HttpResponse<String> resp = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(resp.statusCode());
        System.out.println(resp.body().substring(0, Math.min(500, resp.body().length())));
    }
}

```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// How to run:
//   php proxy_example.php
//
// Save as proxy_example.php

$user = getenv('GOPROXIES_USER') ?: 'customer-USERNAME';
$pass = getenv('GOPROXIES_PASS') ?: 'PASSWORD';

$ch = curl_init('https://www.amazon.com/dp/B07RZ74VLR');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.goproxies.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "$user:$pass");
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
} else {
    echo curl_getinfo($ch, CURLINFO_HTTP_CODE) . PHP_EOL;
    echo substr($response, 0, 500);
}
curl_close($ch);
```

{% endtab %}

{% tab title="Go" %}

```go
// How to run:
//   go run main.go
//
// Save as main.go

package main

import (
    "fmt"
    "io"
    "net/http"
    "net/url"
    "os"
    "time"
)

func main() {
    user := os.Getenv("GOPROXIES_USER")
    if user == "" {
        user = "customer-USERNAME"
    }
    pass := os.Getenv("GOPROXIES_PASS")
    if pass == "" {
        pass = "PASSWORD"
    }
    proxyStr := "http://" + user + ":" + pass + "@proxy.goproxies.com:1080"
    proxyURL, _ := url.Parse(proxyStr)

    tr := &http.Transport{
        Proxy: http.ProxyURL(proxyURL),
    }
    client := &http.Client{
        Transport: tr,
        Timeout:   30 * time.Second,
    }

    resp, err := client.Get("https://www.amazon.com/dp/B07RZ74VLR")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(resp.StatusCode)
    if len(body) > 500 {
        fmt.Println(string(body[:500]))
    } else {
        fmt.Println(string(body))
    }
}
```

{% endtab %}
{% endtabs %}


# HTTP Error Response codes

| Error code                              | Description                                                                                             |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| **400 Bad Request**                     | Request did not contain a host to connect to or if there was a generic error when validating a request. |
| **403 Forbidden**                       | Error when validating ACL for request.                                                                  |
| **407 Proxy Authentification Required** | Request lacks proxy authentication information, or username or password is invalid.                     |
| **429 Hard limit reached**              | Hard limit value reached, sending additional IP requests is blocked.                                    |
| **500 Internal server error**           | Proxy server has encountered an internal error.                                                         |
| **502 Bad Gateway**                     | Error when request proxying encountered an error.                                                       |
| **504 Timeout**                         | A proxy server did not receive a response from the upstream server in time. Try again.                  |
| **525 Exit node missing**               | Error shown when no exit node was found to complete the request.                                        |


# FAQ

{% content-ref url="/spaces/WiMBYtzwiSH61Xlgx0W1/pages/GIhN1wW5cNe2hN0jbIxZ" %}
[General Questions](/proxies/faq/general-questions)
{% endcontent-ref %}

{% content-ref url="/spaces/WiMBYtzwiSH61Xlgx0W1/pages/vlvWr2wm8tJ5JYCycvkV" %}
[Billing and Pricing](/proxies/faq/billing-and-pricing)
{% endcontent-ref %}

{% content-ref url="/spaces/WiMBYtzwiSH61Xlgx0W1/pages/VN5N53B395jBrC2Z22dG" %}
[Static Residential Proxies](/proxies/faq/static-residential-proxies)
{% endcontent-ref %}

{% content-ref url="/spaces/WiMBYtzwiSH61Xlgx0W1/pages/GZayVxetLu5WeuWvYKqu" %}
[Rotating Residential Proxies](/proxies/faq/rotating-residential-proxies)
{% endcontent-ref %}


# SOCKS5 vs HTTP Proxy

Page explaining the pros and cons of using SOCKS5 vs HTTP

### Intro

GoProxies now added a SOCKS5 (TCP) proxy , which allows you to have another way to connect. Below we will explain in greater detail how to actually set your environment to use this proxy type.

### SOCKS5

SOCKS5 proxies operate on a lower level than HTTP proxies, making them useful in more protocols and applications. That being said, HTTP proxies still have their own strengths.

### Why Use SOCKS5 Over HTTP?

1. **It is protocol-agnostic (not just HTTP/HTTPS)**

SOCKS5 works at the TCP level, meaning it supports any application protocol (HTTP, HTTPS, SMTP, FTP, SSH tunnels, WebSockets, custom TCP apps).

2. **Better for non-browser traffic and scraping**

When dealing with API scraping, automation tools, or TCP-based clients, SOCKS5 has a tendency to be more reliable.

3. **No content editing**

HTTP proxies may modify or inject headers. SOCKS5 simply forwards bytes, making it ideal for applications that are sensitive to header integrity.

4. **Faster in some scenarios**&#x20;

Because SOCKS5 is simpler (no request parsing), it can reduce overhead for certain types of traffic.

### Why Use HTTP Proxies Instead of SOCKS5?

1. **Built-in support in web technologies**

Browsers, HTTP clients, and many SDKs natively support HTTP proxies without extra libraries.

2. **Easier debugging**

HTTP proxies can log or inspect HTTP traffic. SOCKS5 merely passes raw TCP which isn’t visibile.

3. **Ideal for web-only workloads**

If your workload is pure HTTPS/REST API traffic, HTTP proxies are often sufficient and simpler.

Code Examples:

Below are some example snippets for SOCKS5 use written in various coding languages:<br>

<br>

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

```bash
curl -x socks5://customer-username:password@proxy.goproxies.com:10003 https://ipinfo.io
```

{% endtab %}

{% tab title="Javascript (Node.js)" %}

```javascript
import fetch from "node-fetch";
import { SocksProxyAgent } from "socks-proxy-agent";

const agent = new SocksProxyAgent("socks5://customer-username:password@proxy.goproxies.com:10003");

const res = await fetch("https://ipinfo.io", { agent });
console.log(await res.text());
```

{% endtab %}

{% tab title="Python (Requests + PySocks)" %}

```python
import requests

proxies = {
    'http':  'socks5://customer-username:password@proxy.goproxies.com:10003',
    'https': 'socks5://customer-username:password@proxy.goproxies.com:10003'
}

response = requests.get("https://ipinfo.io", proxies=proxies)
print(response.text)

```

{% endtab %}

{% tab title="Go (with proxy/socks5)" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"

	"golang.org/x/net/proxy"
)

func main() {
	auth := proxy.Auth{
		User:     "customer-username",
		Password: "password",
	}
	dialer, _ := proxy.SOCKS5("tcp", "proxy.goproxies.com:10003", &auth, proxy.Direct)

	httpTransport := &http.Transport{
		Dial: dialer.Dial,
	}

	client := &http.Client{Transport: httpTransport}

	resp, _ := client.Get("https://ipinfo.io")
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java (via jsocks or ProxySelector)" %}

```java
import java.net.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        Proxy proxy = new Proxy(Proxy.Type.SOCKS,
                new InetSocketAddress("proxy.goproxies.com", 10003));

        Authenticator.setDefault(new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("customer-username", "password".toCharArray());
            }
        });

        URL url = new URL("https://ipinfo.io");
        URLConnection conn = url.openConnection(proxy);

        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        System.out.println(in.readLine());
    }
}
```

{% endtab %}

{% tab title="Ruby (using socksify)" %}

```ruby
require 'socksify/http'

uri = URI("https://ipinfo.io")

Net::HTTP.SOCKSProxy("proxy.goproxies.com", 10003, "customer-username", "password")
        .start(uri.host, uri.port, use_ssl: true) do |http|

  res = http.get(uri)
  puts res.body
end
```

{% endtab %}

{% tab title="PHP (using curl)" %}

```php
<?php

$ch = curl_init("https://ipinfo.io");

curl_setopt_array($ch, [
    CURLOPT_PROXY => "socks5://proxy.goproxies.com:10003",
    CURLOPT_PROXYUSERPWD => "customer-username:password",
    CURLOPT_RETURNTRANSFER => true
]);

echo curl_exec($ch);
curl_close($ch);
```

{% endtab %}
{% endtabs %}

<br>

<br>

<br>


# General Questions

{% content-ref url="/pages/io4IJyrxAJaCUf3YM0eE" %}
[What solutions do GoProxies offer?](/proxies/faq/general-questions/what-solutions-do-goproxies-offer)
{% endcontent-ref %}

{% content-ref url="/pages/MQZb9j7CSWrnW0j3qj3x" %}
[Is there an option to purchase a custom proxy package?](/proxies/faq/general-questions/is-there-an-option-to-purchase-a-custom-proxy-package)
{% endcontent-ref %}

{% content-ref url="/pages/8bx1U3dp0iLiEFTaKGLX" %}
[Can you transfer my unused traffic to next month?](/proxies/faq/general-questions/can-you-transfer-my-unused-traffic-to-next-month)
{% endcontent-ref %}

{% content-ref url="/pages/FHnjXP89wBnRgKTrf83U" %}
[Broken mention](broken://pages/FHnjXP89wBnRgKTrf83U)
{% endcontent-ref %}

{% content-ref url="/pages/lzmGVHH8KJp19xA67izP" %}
[Do you charge additional fees for the setup?](/proxies/faq/general-questions/do-you-charge-additional-fees-for-the-setup)
{% endcontent-ref %}

{% content-ref url="/pages/YjhmI0idCNbODWw3lqba" %}
[Can I cancel my subscription at any time?](/proxies/faq/general-questions/can-i-cancel-my-subscription-at-any-time)
{% endcontent-ref %}


# What solutions do GoProxies offer?

At GoProxies, we offer these types of proxies:

* [Rotating Residential Proxies ](https://www.goproxies.com/proxies/rotating-proxies)
* [Static Residential Proxies](https://www.goproxies.com/proxies/static-proxies)&#x20;
* [Shared Datacenter Proxies](https://www.goproxies.com/proxies/shared-datacenter-proxies)

Additionally, if your needs are custom, we can always explore other options.


# Is there an option to purchase a custom proxy package?

Yes, we’re flexible in this area and can build custom packages for any needs. Please contact our sales team at <sales@goproxies.com> to discuss your requirements and pricing.


# E-mail Dashboard user vs API user

Describes the difference between two types of credentials associated with GoProxies.

### Intro

When using Goproxies, you will have two types of credentials - one is the **Dashboard Access** and the other is **API user** for proxy.  Each serves a different purpose — one for managing your account and accessing reports, the other for accessing proxy services.

### **Dashboard Access:**

The format of these credentials are:

* email for a username, e.g <someone@example.com>
* alpha-numeric password.

\
They are used when going to [dashboard.goproxies.com](http://dashboard.goproxies.com) , or by pressing “log in” on the top-right of the general [goproxies.com](http://goproxies.com) website:

<img src="/files/OSMeOKZ4DaLxoHwD1Oo3" alt="" data-size="original">&#x20;

Unless you registered on your own with Google authentication, please enter the email and password for the dashboard access under “Email” and “Password” respectively:

<img src="/files/DR51nMeUvU5MPSQwt0Pe" alt="" data-size="original">

### **API users (for proxy access)**

### &#x20;These are credentials that you use to make proxy requests with, for example (if you’ve purchased a residential proxy):

`curl --proxytunnel --proxy "https://customer-USERNAME:PASSWORD@proxy.goproxies.com:1080" https://ip.goproxies.com`

Where the username and password are the ones that either the GoProxies team manually created for you (which they will always label as “API User”) or you’ve either generated one on your own on the dashboard as you were purchasing the product:<br>

![](/files/DVxidhzhBlauHhlG9u4x)<br>

![](/files/xhJ0UFayETRy3tuSCoMX)

**Important! If you’ve missed this window and failed to copy the password, please reach out to the GoProxies support team and they will help you have it recovered.**

<br>

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

```javascript
const message = "hello world";
console.log(message);
```

{% endtab %}

{% tab title="Python" %}

```python
message = "hello world"
print(message)
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
message = "hello world"
puts mess
```

{% endtab %}
{% endtabs %}


# Can you transfer my unused traffic to next month?

Sadly, your unused traffic cannot be transferred to the next month. We always suggest making calculations before purchasing and then choosing the most suitable plan for your needs.

‍

You can find our plans here:

* [Rotating Residential Proxy monthly plans](https://www.goproxies.com/pricing/rotating-proxies-pricing)
* [Static Residential Proxy monthly plans](https://www.goproxies.com/pricing/static-proxies-pricing)


# Do you charge additional fees for the setup?

We do not have any set fees for that. However, if your company requires building a custom solution, certain fees may be applicable.


# Can I cancel my subscription at any time?

Yes, you can cancel your subscription at any time. However, you need to be aware of the termination conditions in the agreement. For the cancellation process, please inform your dedicated account manager.


# How to login into GoProxies API and list your current sub-users?

### How to login into GoProxies API?

To login into GoProxies API and receive auth token, you will need to use email address and password that you used to register to our self-service dashboard.

Here is example of the curl request that will return you your login token:

```shellscript
curl -X POST https://api.goproxies.com/api/v1/login \
     -H "Content-Type: application/json" \
     -d '{"username": "{YOUR_USERNAME}", "password": "{YOUR_PASSOWRD}"}'
```

### How to list all current sub-users?

To list current sub-users you'd need to call this [request](https://api.goproxies.com/swagger/resellers/ui/#/Resellers/resellerGetSubusers), here's the example which would list all your sub-users, all you need to do is replace`YOUR_TOKEN_FROM_LOGIN` with your login token.

```shellscript
curl -X GET https://api.goproxies.com/api/v1/reseller/subusers \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_TOKEN_FROM_LOGIN"
```




---

[Next Page](/llms-full.txt/1)

