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:
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
-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.
| Plan | Americas gateway | Europe gateway | Port |
|---|---|---|---|
| SolveResidential | solve-us.netdash.io | solve-eu.netdash.io | 1000 |
| ScaleResidential | scale-us.netdash.io | scale-eu.netdash.io | 2000 |
| OpusResidential | opus-us.netdash.io | opus-eu.netdash.io | 3000 |
| MobileMobile | mobile-us.netdash.io | mobile-eu.netdash.io | 4000 |
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:
| Part | Required | Values | Example |
|---|---|---|---|
| Base username | Yes | Your username from the dashboard | USERNAME |
-cc-{CC} | Yes, in every username | ISO 3166-1 alpha-2 country code in uppercase. Use GB for the United Kingdom, not UK. | -cc-US |
-session-{SID} | For sticky sessions | Letters and digits only, no hyphens. The dashboard generates 8 lowercase characters. | -session-a1b2c3d4 |
-ttl-{MIN} | Whenever -session- is used | Session 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.
| Session | Username |
|---|---|
| Rotating, US exit | USERNAME-cc-US |
| Rotating, UK exit | USERNAME-cc-GB |
| Sticky, German exit, 30 minutes | USERNAME-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:
| Format | Example (Scale, Americas gateway, sticky US session) | Use it with |
|---|---|---|
http://user:pass@host:port | http://USERNAME-cc-US-session-a1b2c3d4-ttl-30:PASSWORD@scale-us.netdash.io:2000 | HTTP clients that take a proxy URL: curl, Python requests and httpx, Go net/http, Node.js undici ProxyAgent |
host:port:user:pass | scale-us.netdash.io:2000:USERNAME-cc-US-session-a1b2c3d4-ttl-30:PASSWORD | Tools and scripts that import proxy lists, one proxy per line |
user:pass:host:port | USERNAME-cc-US-session-a1b2c3d4-ttl-30:PASSWORD:scale-us.netdash.io:2000 | Tools 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"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.
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))
}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"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)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());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))
}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"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)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());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))
}Example output
Go guide{"ip":"203.0.113.10"}Your output shows a different address in the country you chose.
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 gateway to an exit IP in , , on the plan.
Proxy URL
http://USERNAME-cc-US:PASSWORD@scale-us.netdash.io:2000Replace 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.
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:
203.0.113.10:PORT:user:passThe 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.
- 01curl man page: -x, --proxyAccessed 2026-10-09
- 02Requests documentation: Advanced Usage, ProxiesAccessed 2026-10-09
- 03HTTPX documentation: ProxiesAccessed 2026-10-09
- 04Go net/http package: ProxyURLAccessed 2026-10-09
- 05undici documentation: ProxyAgentAccessed 2026-10-09
- 06Playwright documentation: Network, HTTP ProxyAccessed 2026-10-09
Spotted something out of date? Tell us.