Skip to content

Proxy string format and endpoints

A netdash proxy string is http://USERNAME-cc-{CC}[-session-{SID}-ttl-{MIN}]:PASSWORD@{plan}-{us|eu}.netdash.io:{port}. This page lists every endpoint and parameter.

Updated
Reading time
5 min
Checked against
6 sources

Every netdash request names three things: a gateway (host and port), a username with parameters, and your password. The gateway decides the plan and the region, and the username carries the exit country and, for sticky sessions, the session ID and its lifetime. This is the complete proxy string format in one line:

Proxy string format
http://USERNAME-cc-{CC}[-session-{SID}-ttl-{MIN}]:PASSWORD@{plan}-{us|eu}.netdash.io:{port}

Proxy username

USERNAME-cc-US-session-a1b2c3d4-ttl-30

USERNAMEYour username
From the dashboard
-cc-USExit country
ISO code, GB for the UK
-session-a1b2c3d4Session ID
Sticky only; letters and digits
-ttl-30Lifetime
Minutes to keep the exit IP
Leave out -session-…-ttl-… for rotating sessions. The password is the proxy password from the dashboard, not your sign-in password.

Endpoints

Each plan has two regional gateways: -us for the Americas and -eu for Europe, Africa and Asia. The port is fixed per plan.

Gateway hosts and ports
PlanAmericas gatewayEurope gatewayPort
SolveResidentialsolve-us.netdash.iosolve-eu.netdash.io1000
ScaleResidentialscale-us.netdash.ioscale-eu.netdash.io2000
OpusResidentialopus-us.netdash.ioopus-eu.netdash.io3000
MobileMobilemobile-us.netdash.iomobile-eu.netdash.io4000

Solve is our lowest-cost residential plan, Scale our mid-priced plan and Opus our highest-priced plan. They differ in which network pool they route to and in price. The syntax is identical, so you switch plans by changing the host and port. Mobile uses the same syntax with mobile exit IPs. Plans and prices are described on the residential proxies, mobile proxies and pricing pages.

Your username and password work on every residential and mobile plan, but each plan has its own GB balance, and traffic through a plan's gateway counts against that plan's balance.

The -us gateway runs in Ashburn and has lower latency for exits in the Americas; the -eu gateway runs in Frankfurt and has lower latency for exits in Europe, Africa and Asia. The examples on this site pair US with scale-us.netdash.io and DE or GB with scale-eu.netdash.io. For an exit country in Oceania, ask support which gateway to use.

Always include the port. curl, for example, assumes port 1080 when a proxy string has none, which doesn't match any netdash gateway.

Eligible Opus accounts can enable two additional pools, shown in the dashboard as Opus Extended and HighSpeed. They have their own country lists and longer default sticky sessions, and their usernames are generated in the dashboard, so this page doesn't document a syntax for them.

Username syntax

The username is your base username followed by parameters, in this order, each starting with a hyphen:

PartRequiredValuesExample
Base usernameYesYour username from the dashboardUSERNAME
-cc-{CC}Yes, in every usernameISO 3166-1 alpha-2 country code in uppercase. Use GB for the United Kingdom, not UK.-cc-US
-session-{SID}For sticky sessionsLetters and digits only, no hyphens. The dashboard generates 8 lowercase characters.-session-a1b2c3d4
-ttl-{MIN}Whenever -session- is usedSession lifetime in minutes. Dashboard presets: 15, 30, 720 (12 hours) and 10080 (7 days).-ttl-30

Leave the session part out for a rotating session, and the gateway assigns exit IPs. Add it for a sticky session: requests with the same session ID keep the same exit IP for the TTL while that IP stays available.

SessionUsername
Rotating, US exitUSERNAME-cc-US
Rotating, UK exitUSERNAME-cc-GB
Sticky, German exit, 30 minutesUSERNAME-cc-DE-session-a1b2c3d4-ttl-30

Parameters other than -cc-, -session- and -ttl- aren't part of the syntax. Sessions and country targeting explain both parts in detail.

Authentication

netdash authenticates every request with your username and password, and with nothing else: there is no IP allowlisting and no public account API. Usage, balances and credentials live in the dashboard, and no SDK is needed because netdash is a standard HTTP proxy.

In the URL form, the username and password come before the @. If a value ever contains a character other than letters, digits and hyphens, such as @, : or /, percent-encode it (@ becomes %40) or pass the username and password as separate fields.

Output formats

The dashboard generator can export your proxies in three formats. All three carry the same host, port, username and password:

FormatExample (Scale, Americas gateway, sticky US session)Use it with
http://user:pass@host:porthttp://USERNAME-cc-US-session-a1b2c3d4-ttl-30:PASSWORD@scale-us.netdash.io:2000HTTP clients that take a proxy URL: curl, Python requests and httpx, Go net/http, Node.js undici ProxyAgent
host:port:user:passscale-us.netdash.io:2000:USERNAME-cc-US-session-a1b2c3d4-ttl-30:PASSWORDTools and scripts that import proxy lists, one proxy per line
user:pass:host:portUSERNAME-cc-US-session-a1b2c3d4-ttl-30:PASSWORD:scale-us.netdash.io:2000Tools that expect the credentials before the host in a list

Browser automation tools take the server and the credentials as separate settings. Playwright's proxy option, for example, has server (http://scale-us.netdash.io:2000), username and password fields. The Playwright, Puppeteer and Selenium guides show the setup for each tool.

Proxy string format examples

The same three requests in curl, Python, Node.js and Go. Each prints the exit IP.

Rotating, United States

curl --max-time 30 -x "http://USERNAME-cc-US:PASSWORD@scale-us.netdash.io:2000" \
  "https://api.ipify.org?format=json"
cURL

Example output

Quickstart
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

import requests

proxy = "http://USERNAME-cc-US:PASSWORD@scale-us.netdash.io:2000"
proxies = {"http": proxy, "https": proxy}  # set both, or HTTPS requests bypass the proxy

response = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
response.raise_for_status()
print(response.text)
Python

Example output

Python guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

import { ProxyAgent, fetch } from "undici";

const dispatcher = new ProxyAgent({
  uri: "http://scale-us.netdash.io:2000",
  token: "Basic " + Buffer.from("USERNAME-cc-US:PASSWORD").toString("base64"),
});

const res = await fetch("https://api.ipify.org?format=json", { dispatcher, signal: AbortSignal.timeout(30_000) });
console.log(await res.text());
Node.js

Example output

Node.js guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

package main

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

func main() {
	proxyURL, err := url.Parse("http://USERNAME-cc-US:PASSWORD@scale-us.netdash.io:2000")
	if err != nil {
		panic(err)
	}
	client := &http.Client{
		Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)},
		Timeout:   30 * time.Second,
	}

	resp, err := client.Get("https://api.ipify.org?format=json")
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(body))
}
Go

Example output

Go guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

Sticky session, Germany

curl --max-time 30 -x "http://USERNAME-cc-DE-session-a1b2c3d4-ttl-30:PASSWORD@scale-eu.netdash.io:2000" \
  "https://api.ipify.org?format=json"
cURL

Example output

Quickstart
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

import requests

proxy = "http://USERNAME-cc-DE-session-a1b2c3d4-ttl-30:PASSWORD@scale-eu.netdash.io:2000"
proxies = {"http": proxy, "https": proxy}  # set both, or HTTPS requests bypass the proxy

response = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
response.raise_for_status()
print(response.text)
Python

Example output

Python guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

import { ProxyAgent, fetch } from "undici";

const dispatcher = new ProxyAgent({
  uri: "http://scale-eu.netdash.io:2000",
  token: "Basic " + Buffer.from("USERNAME-cc-DE-session-a1b2c3d4-ttl-30:PASSWORD").toString("base64"),
});

const res = await fetch("https://api.ipify.org?format=json", { dispatcher, signal: AbortSignal.timeout(30_000) });
console.log(await res.text());
Node.js

Example output

Node.js guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

package main

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

func main() {
	proxyURL, err := url.Parse("http://USERNAME-cc-DE-session-a1b2c3d4-ttl-30:PASSWORD@scale-eu.netdash.io:2000")
	if err != nil {
		panic(err)
	}
	client := &http.Client{
		Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)},
		Timeout:   30 * time.Second,
	}

	resp, err := client.Get("https://api.ipify.org?format=json")
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(body))
}
Go

Example output

Go guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

Mobile, United Kingdom

curl --max-time 30 -x "http://USERNAME-cc-GB:PASSWORD@mobile-eu.netdash.io:4000" \
  "https://api.ipify.org?format=json"
cURL

Example output

Quickstart
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

import requests

proxy = "http://USERNAME-cc-GB:PASSWORD@mobile-eu.netdash.io:4000"
proxies = {"http": proxy, "https": proxy}  # set both, or HTTPS requests bypass the proxy

response = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
response.raise_for_status()
print(response.text)
Python

Example output

Python guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

import { ProxyAgent, fetch } from "undici";

const dispatcher = new ProxyAgent({
  uri: "http://mobile-eu.netdash.io:4000",
  token: "Basic " + Buffer.from("USERNAME-cc-GB:PASSWORD").toString("base64"),
});

const res = await fetch("https://api.ipify.org?format=json", { dispatcher, signal: AbortSignal.timeout(30_000) });
console.log(await res.text());
Node.js

Example output

Node.js guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

package main

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

func main() {
	proxyURL, err := url.Parse("http://USERNAME-cc-GB:PASSWORD@mobile-eu.netdash.io:4000")
	if err != nil {
		panic(err)
	}
	client := &http.Client{
		Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)},
		Timeout:   30 * time.Second,
	}

	resp, err := client.Get("https://api.ipify.org?format=json")
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(body))
}
Go

Example output

Go guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

Checked against a local test proxy

Build your own string

Pick a plan, gateway, country and session type, and copy the string or the code. Pair the gateway with the exit country: -us for the Americas, -eu for Europe, Africa and Asia. For an exit country in Oceania, ask support which gateway to use.

Your route

Through the AshburnFrankfurt gateway to an exit IP in Via Ashburn (-us)United StatesCanadaMexicoBrazilArgentinaChileVia Frankfurt (-eu)United KingdomGermanyFranceSouth AfricaIndiaJapan, rotatingsticky for 15 minsticky for 30 minsticky for 12 hsticky for 7 days, on the SolveScaleOpusMobile plan.

Proxy URL

http://USERNAME-cc-US:PASSWORD@scale-us.netdash.io:2000

Replace USERNAME and PASSWORD with the credentials from your dashboard.

Scale, Americas gateway, exit IP in United States, rotating.

curl --max-time 30 -x "http://USERNAME-cc-US:PASSWORD@scale-us.netdash.io:2000" \
  "https://api.ipify.org?format=json"

Example output

Quickstart
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

import requests

proxy = "http://USERNAME-cc-US:PASSWORD@scale-us.netdash.io:2000"
proxies = {"http": proxy, "https": proxy}  # set both, or HTTPS requests bypass the proxy

response = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
response.raise_for_status()
print(response.text)

Example output

Python guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

import { ProxyAgent, fetch } from "undici";

const dispatcher = new ProxyAgent({
  uri: "http://scale-us.netdash.io:2000",
  token: "Basic " + Buffer.from("USERNAME-cc-US:PASSWORD").toString("base64"),
});

const res = await fetch("https://api.ipify.org?format=json", { dispatcher, signal: AbortSignal.timeout(30_000) });
console.log(await res.text());

Example output

Node.js guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

import { chromium } from "playwright";

const browser = await chromium.launch({
  proxy: {
    server: "http://scale-us.netdash.io:2000",
    username: "USERNAME-cc-US",
    password: "PASSWORD",
  },
});
const page = await browser.newPage();
await page.goto("https://api.ipify.org?format=json");
console.log(await page.textContent("body"));
await browser.close();

Example output

Playwright guide
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

Illustrative routes, not live traffic. Exits are available in most countries; the countries shown are examples. For exits in Oceania, ask support which gateway to use.

Protocol

netdash is an HTTP proxy. HTTPS websites go through a CONNECT tunnel: your client asks the gateway to open a tunnel to the website and then runs TLS inside it, so your client checks the website's own certificate as usual. Use the http:// scheme for the proxy URL, also for HTTPS websites. With https:// as the proxy scheme, the client tries to start TLS with the gateway itself, and the connection fails.

ISP and datacenter lists

Static ISP and datacenter IPs don't use the username parameters above. Each order is delivered as a static list in host:port:user:pass format, with its own username and password:

ISP or datacenter list
203.0.113.10:PORT:user:pass

The location is chosen when you order, and each IP stays assigned to you for as long as the subscription renews.

Checkout paused

Self-serve checkout for ISP and datacenter proxies is paused. Contact sales about ISP or datacenter availability.

Guides by language and tool

  • Python

    requests and httpx, with both proxy keys and timeouts.

  • Node.js

    undici ProxyAgent with fetch, and axios with https-proxy-agent.

  • Go guide

    An authenticated proxy URL in a net/http Transport.

  • Scrapy

    Proxies through request meta or a downloader middleware.

  • Selenium

    Authenticated proxies for WebDriver sessions through a small local forwarder.

  • Playwright

    Proxies per browser or per context, in Node.js and Python.

  • Puppeteer

    --proxy-server with page.authenticate, and per-context proxies.

  • Claude Code

    Credentials in .env and a proxy per client in agent-built projects.

New to netdash? Start with the quickstart.

Stuck? See troubleshooting or email support.

Sources

Third-party behaviour described on this page was checked against these documents.

  1. 01curl man page: -x, --proxyAccessed 2026-10-09
  2. 02Requests documentation: Advanced Usage, ProxiesAccessed 2026-10-09
  3. 03HTTPX documentation: ProxiesAccessed 2026-10-09
  4. 04Go net/http package: ProxyURLAccessed 2026-10-09
  5. 05undici documentation: ProxyAgentAccessed 2026-10-09
  6. 06Playwright documentation: Network, HTTP ProxyAccessed 2026-10-09

Spotted something out of date? Tell us.

Privacy choices

We use cookies and similar technologies that this site needs to work and to remember your choice. We also use Google Analytics to understand which pages and features people use: in the EEA, the UK and Switzerland only with your consent. Live chat loads only if you open it. You can change your choice at any time under “Privacy choices” in the footer. Privacy Policy

Privacy choices

Choose what netdash.io may use. You can change this at any time under “Privacy choices” in the footer.

Necessary (always on)

Keeps the site working and secure, and remembers your privacy choices (nd_consent, 12 months).

In the EEA, the UK and Switzerland it stays off until you switch it on; elsewhere it is on unless you switch it off here. Google Analytics 4 measures page views, clicks on links and buttons, use of the price calculator, connection builder and code examples, scroll depth, file downloads, and page-performance metrics. It sets the cookies _ga and _ga_96MPNM6GHH, which last up to 12 months. Google processes this data, which may involve transfer to the United States. We do not send your name, email address or account details to Google Analytics. With this switched on we also remember a referral code or campaign you arrived with (nd_attr, 30 days), so a partner can be credited if you sign up.

Support chat (loads only when you open it)

Our live chat is provided by LiveChat. It loads only when you open the chat window. LiveChat then sets its own cookies and processes the messages you send and technical data about your browser.