Oxylabs Documentation
English
Search…
⌃K

Making requests

curl -k -x ngrp.oxylabs.io:60000 "https://example.com"
The easiest way to start is to send a simple query without custom options. We will add all standard headers on our end, pick the fastest proxy and deliver you the response body.
To utilize additional functionalities of Next-Gen Residential Proxies such as setting up proxy location or reusing the same IP for a few consecutive requests, please send additional headers with the request.
If Next-Gen Residential Proxies are being used to scrape websites dependant on loading data via JavaScript, please refer to JavaScript rendering. The product is not designed to be used with headless browsers (e.g. Chromium, PhantomJS, Splash, etc.) and their drivers (e.g. Playwright, Selenium, Puppeteer, etc.) directly!
Here's the full list of supported functionalities and headers:

Additional functionalities

Parameter
Description
Link to read more
X-Oxylabs-Session-Id
If you would like to reuse the same IP for multiple requests, add a session ID which can be a random string of characters.
Session
X-Oxylabs-Geo-Location
To use an IP address from a specific location, specify a country or a city, for example, Germany. You can find supported geo-location values here.
Headers
You can add your headers, such as User-Agent, or any other, instead of pre-generated ones.
Headers
Cookies
You can add your cookies, for example, Cookie: NID=1234567890, to your requests.
Cookies
X-Oxylabs-Status-Code
If your target site returns a non-standard status code with a successful response, you can send the response's status code, and our system will not retry the request.
X-Oxylabs-Render
If you would like to render JavaScript, use html to get a rendered HTML or png to get a screenshot of the page.
X-Oxylabs-Parser-Type
Use this header to set the parser type. Currently, only the ecommerce-product (adaptive parser) value is supported.
X-Oxylabs-Parse
Set the value to 1 to enable parsing.
For more advanced code examples, please refer to individual functionality pages linked in table above

Basic code examples

cURL
Python
PHP
C#
Golang
Java
Node.js
curl -k -x ngrp.oxylabs.io:60000 -U USERNAME:PASSWORD 'https://ip.oxylabs.ip/headers'
import requests
from pprint import pprint
# Define proxy dict. Don't forget to put your real user and pass here as well.
proxies = {
'http': 'http://YOUR_USERNAME:[email protected]:60000',
}
response = requests.request(
'GET',
'https://ip.oxylabs.io/headers',
verify=False, # Ignore the certificate
proxies=proxies,
)
# Print result page to stdout
pprint(response.text)
# Save returned HTML to result.html file
with open('result.html', 'w') as f:
f.write(response.text)
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://ip.oxylabs.io/headers");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, 'ngrp.oxylabs.io:60000');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "YOUR_USERNAME" . ":" . "YOUR_PASSWORD");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($ch);
echo $result;
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
?>
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
namespace OxyApi
{
class Program
{
static async Task Main(string[] args)
{
var webProxy = new WebProxy
{
Address = new Uri($"http://ngrp.oxylabs.io:60000"),
BypassProxyOnLocal = false,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(
userName: "YOUR_USERNAME",
password: "YOUR_PASSWORD"
)
};
var httpClientHandler = new HttpClientHandler
{
Proxy = webProxy,
};
// Ignore the certificate
httpClientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
httpClientHandler.ServerCertificateCustomValidationCallback =
(httpRequestMessage, cert, cetChain, policyErrors) =>
{
return true;
};
var client = new HttpClient(handler: httpClientHandler, disposeHandler: true);
Uri baseUri = new Uri("https://ip.oxylabs.io/headers");
client.BaseAddress = baseUri;
var requestMessage = new HttpRequestMessage(HttpMethod.Get, "");
var response = await client.SendAsync(requestMessage);
var contents = await response.Content.ReadAsStringAsync();
Console.WriteLine(contents);
}
}
}
package main
import (
"crypto/tls"
"fmt"
"io/ioutil"
"net/http"
"net/url"
)
func main() {
const Username = "YOUR_USERNAME"
const Password = "YOUR_PASSWORD"
proxyUrl, _ := url.Parse(
fmt.Sprintf(
"http://%s:%[email protected]:60000",
Username,
Password,
),
)
customTransport := &http.Transport{Proxy: http.ProxyURL(proxyUrl)}
// Ignore the certificate
customTransport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
client := &http.Client{Transport: customTransport}
request, _ := http.NewRequest("GET",
"https://ip.oxylabs.io/headers",
nil,
)
request.SetBasicAuth(Username, Password)
response, _ := client.Do(request)
responseText, _ := ioutil.ReadAll(response.Body)
fmt.Println(string(responseText))
}
import okhttp3.Authenticator;
import okhttp3.Credentials;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import javax.net.ssl.*;
import java.net.InetSocketAddress;
import java.net.Proxy;
public class Main implements Runnable {
private static final String AUTHORIZATION_HEADER = "Proxy-Authorization";
public static final String USERNAME = "YOUR_USERNAME";
public static final String PASSWORD = "YOUR_PASSWORD";
public void run() {
Authenticator authenticator = (route, response) -> {
String credential = Credentials.basic(USERNAME, PASSWORD);
return response
.request()
.newBuilder()
.header(AUTHORIZATION_HEADER, credential)
.build();
};
OkHttpClient.Builder builder = new OkHttpClient.Builder();
// Ignore the certificate
this.disableSSLCertificateChecking(builder);
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("ngrp.oxylabs.io", 60000));
var client = builder
.proxy(proxy)
.proxyAuthenticator(authenticator)
.build();
var request = new Request.Builder()
.url("https://ip.oxylabs.io/headers")
.get()
.build();
try (var response = client.newCall(request).execute()) {
assert response.body() != null;
System.out.println(response.body().string());
} catch (Exception exception) {
exception.printStackTrace();
System.exit(1);
}
System.exit(0);
}
private void disableSSLCertificateChecking(OkHttpClient.Builder builder) {
TrustManager[] trustManagers = new TrustManager[]{
new X509TrustManager() {
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] x509Certificates, String authType) {
}
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] x509Certificates, String authType) {
}
}
};
try {
HttpsURLConnection.setDefaultHostnameVerifier((s, sslSession) -> true);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagers, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
builder.sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustManagers[0]);
} catch (Exception exception) {
exception.printStackTrace();
System.exit(1);
}
builder.hostnameVerifier((hostname, session) -> true);
}
public static void main(String[] args) {
new Thread(new Main()).start();
}
}
import fetch from 'node-fetch';
import createHttpsProxyAgent from 'https-proxy-agent'
const username = 'YOUR_USERNAME';
const password = 'YOUR_PASSWORD';
const agent = createHttpsProxyAgent(
`http://${username}:${password}@ngrp.oxylabs.io:60000`
);
// Ignore the certificate
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;
const response = await fetch('https://ip.oxylabs.io/headers', {
method: 'get',
agent: agent,
});
console.log(await response.text());