Targeting & geo
Before a strategy picks a node, bytetourist filters the fleet down to nodes
that satisfy your constraints. Set them via the username encoding or X-Proxy-*
headers (see Authentication); for an HTTPS
target the headers must go on the CONNECT (--proxy-header in curl).
Region (hierarchical)
Section titled “Region (hierarchical)”region matches a dot-delimited prefix. eu matches eu and eu.west;
eu.west does not match eu. As of September 2026, edges carry flat provider
labels with no dots (e.g. ap-south-1, bom, in-gj), so in practice region matches one
label exactly. A label containing - can’t go in the username (it’s split on
-); send it as the X-Proxy-Region header instead:
# edges labelled bom (Fly's Mumbai region)-U "YOUR_API_KEY-region-bom:"# a label with a '-' in it, on an HTTPS target--proxy-header "X-Proxy-Region: ap-south-1"Country
Section titled “Country”cc matches the country code the node reports about itself, exactly
(case-insensitive); not every edge reports one:
-U "YOUR_API_KEY-cc-in:" # edges reporting IndiaEgress class
Section titled “Egress class”bytetourist runs datacenter edges (cloud machines) and residential ones
(home connections). Choose with iptype (datacenter or residential) or
X-Proxy-IPType; mobile is also accepted. Credits cost the same either way.
As of September 2026, one edge is residential, a home connection in India (region
in-gj), and there are no mobile edges yet. If no edge of the type you ask for is
online, the request silently falls back to any edge unless you set strict-true:
-U "YOUR_API_KEY-iptype-residential-strict-true:" # residential only, or an errorProtocol
Section titled “Protocol”protocol requires a node that advertises a given protocol. Every edge
advertises http only, so this has no practical effect (socks5 matches
nothing). Most traffic doesn’t need this.
Combining constraints
Section titled “Combining constraints”Constraints stack. The node must satisfy all of them:
-U "YOUR_API_KEY-region-eu.west-cc-de:"When nothing matches
Section titled “When nothing matches”By default (strict=false), if no node matches, bytetourist silently drops your
constraints and picks from the whole fleet, so your request still goes out, from
wherever that node is. Set strict-true to get a 502 instead. See
Reliability & retries.