Quick start
This starts a one-time browser using your account’s default available pool:internal_uuid to stop the session when the job finishes.
Choosing the tier
An explicitly requested tier is not replaced with the other tier. Specify
tier when the choice matters to your workload.
proxy on a persistent profile’s start keeps its stored proxy. An explicit start override applies to that run; it does not update the saved profile. See changing a profile’s proxy.
timezone, languages, and geolocation follow the exit IP unless the profile pins them. See fields that follow the IP.
Shared proxies
Shared proxies support an optional two-lettercountry. Use List shared countries to see current availability.
If the requested country has no healthy shared proxy, the API returns shared_pool_country_unavailable. Select another country or omit country targeting if any location is acceptable.
Do not send region, city, asn, pool, type, coordinates, or session options with tier: "shared"; those combinations are rejected.
Shared IPs are also used by other sessions, so the shared tier is recommended for testing only. Run production on premium or your own proxy. Check the account’s allowance through shared quota and usage through shared traffic stats.
Surfsky proxies
Usetier: "premium" to request premium targeting. Access depends on your account configuration; check the dashboard or contact support if it is unavailable.
Location targeting
Choose one location mode:pool selects a geographic region, not a pricing tier. Use tier for shared or premium.
Set
type to residential or mobile when your job needs a particular connection type. Requests without type use residential. More restrictive targeting can reduce the number of available peers.
Session control
A sticky duration cannot keep an offline peer connected. Use
keep_ip when changing IP is less acceptable than failing the job.
Using your own proxies
Send a proxy URL inproxy, or a VPN configuration in its own field:
URL-encode reserved characters in credentials, or omit credentials if the proxy does not require them. Shadowsocks takes your provider’s encryption method in place of the username. SSH requires a password; key files are not supported.
Surfsky treats an
https:// URL as an HTTP proxy. Browser traffic is tunneled through it, but the connection to the proxy itself is not TLS-wrapped.
UDP is carried end to end on a SOCKS5 proxy that supports UDP ASSOCIATE, and on OpenVPN and
WireGuard. HTTP/3 and QUIC, WebRTC, and UDP DNS all travel inside the tunnel. Surfsky probes the
proxy at start and uses what it supports.
fingerprint.dns resolver is queried outside the tunnel on such a connection, so pair one with a UDP-capable SOCKS5 proxy.
OpenVPN configuration
Useopen_vpn with the complete configuration file contents as a JSON string. Add username and password when your VPN requires them:
WireGuard configuration
mtu and peer pre_shared_key and persistent_keepalive_interval. See the start request schema for their types and defaults.
Use only one of proxy, open_vpn, or wireguard in a request.
Proxy blacklist
Block unneeded ad, analytics, or tracking domains to reduce downloads. Requests to blocked domains do not reach the proxy or consume metered proxy traffic. Block domains withproxy_blacklist in the start request:
* for a wildcard. Include the root domain separately if your rule also needs to block it. Start with domains you know are unnecessary and compare the page before and after blocking. Blocking a login provider, challenge script, or API host can prevent the page from working.
An entry that parses as an IP address or CIDR range is not blocked. Those addresses are excluded from the tunnel and connect directly from the container, outside your proxy. Use domain patterns to block. The list applies to proxy and WireGuard sessions; an OpenVPN session ignores it.
For resource types such as images or fonts, use SDK resource blocking.
Domain routing
Domain routing can reduce residential or mobile proxy costs by sending static assets through a cheaper datacenter proxy. Keep the target site on the main connection and test that asset hosts accept the alternate proxy. You can also use routing when a particular host needs a different exit location. Send selected domains through a different proxy while the rest use the browser’s main connection:proxy and at least one matching condition:
Rules are evaluated in order; the first matching rule supplies the route. Unmatched traffic uses the main connection. Keep rules narrow so an unrelated service does not receive an unintended IP or location. Domain routes apply to
proxy sessions; a session started with open_vpn or wireguard ignores them.
Proxy errors
See errors for retry guidance. If the browser starts but the site rejects the connection, use troubleshooting to compare one variable at a time.