One credential. One endpoint. Encode the country, city, carrier, session, and rotation into your proxy username — the gateway routes you to a matching real mobile modem. Pay only for the GB you use. Duration is free.
How it works
Most proxy providers make you provision individual ports through a dashboard, copy 20 different credentials per geo, and re-provision when you need a different country. Pool Gateway flips that: you connect to one endpoint with one credential, and tell the gateway what you want via your username. Want a US T-Mobile IP that stays the same for an hour? Set your username. Want a UK IP that rotates every 10 minutes? Change your username.
Point your scraper, browser, bot, or AI agent at gw.proxies.sx:7000 (HTTP) or :7001 (SOCKS5). Standard proxy auth — works with curl, Python requests, Node fetch, Puppeteer, Selenium, Playwright, every existing tool.
Username encodes routing: psx_<id>-mbl-us. Password is your account proxy password from the customer portal. Up to 500 concurrent connections and 250 sessions per account.
Gateway parses your username, picks an online mobile modem matching your country/carrier/city, and pipes your traffic through it. ~150ms to first byte on a warm pool.
Every byte routed counts against your shared bandwidth pool. Top up GB whenever you want. Duration is free — no expiring plans.
The username token DSL
Every routing decision lives in your proxy username. Swap one token, change behavior. No API calls, no dashboard clicks.
<account>-<pool>-<country>[-token-value...] Examples: psx_abc-mbl-us → US mobile, default rotation psx_abc-mbl-gb-rot-auto10 → UK mobile, new IP every 10 min psx_abc-mbl-nl-sid-job4729 → Dutch mobile, sticky session psx_abc-mbl-us-carrier-tmobile → T-Mobile US specifically psx_abc-mbl-us-city-newyork → NYC mobile IPs only psx_abc-mbl-fr-rot-ondemand → French mobile, new modem on each new connection
Required tokens
| Position | Token | Values | Example |
|---|---|---|---|
| 1 | Account | psx_* | psx_abc123 |
| 2 | Pool | mbl · peer · any · best | mbl |
| 3 | Country | 2-letter ISO code | us · gb · fr · nl · pl · ge |
Optional tokens
| Token | Value | What it does |
|---|---|---|
| -sid-<id> | up to 64 chars · [a-z0-9_] | Sticky session — pins the same modem for this session ID (the carrier can still change its exit IP) |
| -rot-<mode> | auto5 · auto10 · auto20 · auto60 · ondemand · sticky · hard | Rotation policy — auto-rotate on schedule, or pin (sticky and hard both hold one modem) |
| -carrier-<name> | Carrier slug | Filter to a specific carrier (e.g. tmobile, vodafone, ee, orange) |
| -city-<name> | City slug | City-level targeting (e.g. newyork, london, paris, amsterdam, warsaw) |
| -failover-<policy> | any · samecountry · samecarrier · strict | What to do when the assigned modem drops mid-session |
| -ttl-<seconds> | 60 – 2592000 | Session time-to-live in seconds (default 3600) |
Sticky session IDs: up to 64 characters of [a-z0-9_]; other characters are dropped, and a - ends the value. Sessions are scoped to your account, so another customer's session ID never collides with yours. -session- is not a token: use -sid-. Pick one ID per account or job.
Click country / carrier / city / session / rotation — get the curl, Python, and Node code instantly.
Code examples
curl — sanity check
curl -x http://psx_YOUR_ID-mbl-us:YOUR_PASSWORD@gw.proxies.sx:7000 \
https://api.ipify.org?format=json
# → { "ip": "172.58.x.x" } ← real T-Mobile US IPPython — requests
import requests
PROXY = "http://psx_YOUR_ID-mbl-us-rot-auto10:YOUR_PASSWORD@gw.proxies.sx:7000"
proxies = {"http": PROXY, "https": PROXY}
r = requests.get("https://example.com", proxies=proxies, timeout=30)
print(r.status_code, r.headers.get("server"))Python — sticky session per account
# 100 ad accounts, each pinned to its own IP
for account_id in range(100):
sid = f"acct{account_id:03d}_{secrets.token_hex(4)}"
proxy = f"http://psx_YOUR_ID-mbl-us-sid-{sid}:YOUR_PASSWORD@gw.proxies.sx:7000"
# Each session ID maps to its own consistent mobile IPNode.js — Playwright
import { chromium } from 'playwright';
const browser = await chromium.launch({
proxy: {
server: 'http://gw.proxies.sx:7000',
username: 'psx_YOUR_ID-mbl-gb-city-london',
password: 'YOUR_PASSWORD',
},
});SOCKS5
curl --socks5 psx_YOUR_ID-mbl-nl:YOUR_PASSWORD@gw.proxies.sx:7001 \
https://api.ipify.org?format=jsonUse cases
The token DSL maps cleanly to most real-world proxy workflows. Here are the patterns we see most.
Web scraping
Real T-Mobile / Vodafone IPs that pages won't block on the first request. Rotate per session for crawling at volume, stick when you need cookies/auth state to persist.
SEO rank tracking
See the SERP a real customer in San Diego on T-Mobile actually sees. City-level targeting unlocks per-locale rank tracking that datacenter IPs can't reach.
Multi-account ops
One sticky session token per ad account / marketplace seller / social account. Each account stays on its own IP so bans don't cascade across the cluster.
AI agents
Drop the Pool Gateway endpoint into Claude/Cursor agents via MCP, or pay autonomously via x402 USDC. Agents browse from real mobile IPs without human supervision.
Drop bots
A different modem per new connection via rot-ondemand. Region-locked drops? Switch country in the username. EU drops use mbl-nl or mbl-gb.
Ad verification
Verify your ad campaign from a real T-Mobile customer in Phoenix, or Berlin, or Manchester. City-level + carrier-level targeting from one credential.
Price intelligence
Amazon, Walmart, Shopify, eBay all serve different prices per region. Pull all 6 countries in parallel by changing one username token.
Reseller / SaaS
Building a niche proxy product? Use Pool Access Keys to give your sub-customers gateway access — traffic bills to you. Open-source pool-starter ships the dashboard.
Country & carrier coverage
All connections land on real SIM cards in real phones routed through real carrier networks — verifiable by ASN. Coverage updates regularly as we onboard new modems.
| Country | Code | Major carriers | Status |
|---|---|---|---|
| United States | us | T-Mobile · AT&T · Verizon | live |
| United Kingdom | gb | EE · Vodafone · O2 | live |
| France | fr | Orange · SFR · Bouygues | live |
| Netherlands | nl | KPN · Vodafone · T-Mobile | live |
| Poland | pl | Play · Orange · T-Mobile | live |
| Georgia | ge | Magticom · Silknet · Beeline | live |
Live online endpoint counts per country are visible in your customer portal. About 120 modems were online across these six countries on October 12, 2026; the peer pool adds about 30,000 endpoints in about 175 countries.
Protocols, sessions, limits
| Aspect | Value |
|---|---|
| HTTP endpoint | gw.proxies.sx:7000 |
| SOCKS5 endpoint | gw.proxies.sx:7001 |
| Authentication | Username + password · standard proxy auth |
| Concurrent connections | Up to 500 per account (250 sessions) |
| Max URL length | 256 characters in proxy username |
| Sticky session ID | up to 64 chars · [a-z0-9_] |
| Default rotation | Different modem every 10 minutes (auto10) |
| Speeds | Mobile network speeds — varies by carrier and signal |
| Compatibility | curl · Python · Node · Go · Rust · Playwright · Puppeteer · Selenium · Antidetect browsers |
Pricing
Pay only for the bandwidth you use. No expiring plans, no per-port fees, no commitments. Volume discounts kick in automatically as your monthly usage grows.
Routed across the whole pool of mobile modems. Endpoints and unlimited rotation are free; you only pay for traffic. Best for scraping, SEO, multi-account and ad verification.
Volume discounts up to 40% (10% at 25 GB, 20% at 50 GB, 30% at 100 GB, 40% at 250+ GB). Pay with card via the customer portal, or with USDC on Base / Solana via x402 (no account needed). See full pricing on the pricing page.
Built-in protections
| Protection | What it means for you |
|---|---|
| SSRF guard | Requests to private IP ranges and cloud metadata endpoints are blocked at the gateway |
| Rate limiting | Per-IP and per-account auth rate limits prevent credential brute-forcing |
| Connection caps | Up to 500 concurrent connections and 250 sessions per account · safety TTL on stuck slots |
| Geographic anomaly detection | Flags suspicious cross-geo session patterns |
| Auth caching | Successful auth cached briefly to keep latency low without repeated DB hits |
| Session ID validation | Common/sequential session IDs rejected so customers can't collide accidentally |
| Bcrypt password hashing | Your proxy password is never stored in plaintext |
Pool Gateway vs traditional proxy products
| Aspect | Most providers | Pool Gateway |
|---|---|---|
| Provisioning | Per-port through a dashboard | One credential — everything in the username |
| Geo switch | Buy new ports, copy new creds | Change one token in the username |
| Rotation control | Fixed per port | Per-request via -rot-<mode> |
| Sticky sessions | Separate "sticky" product line | Just add -sid-<id> |
| City targeting | Premium add-on | Built in: -city-<name> |
| Carrier targeting | Rare | Built in: -carrier-<name> |
| IP source | Often residential repackaged | Real carrier mobile IPs · ASN-verifiable |
| Pricing model | Per-port · duration-based | Pay-per-GB · duration is free |
| AI-agent payments | Card or invoice only | x402 + USDC (Base / Solana) supported |
FAQ
Are these really mobile IPs?▾
What's the difference between mbl and peer pools?▾
How do I get sticky sessions?▾
Can I rotate IP on demand?▾
How do I pay without a credit card?▾
Can I resell the pool gateway to my own customers?▾
What happens if I run out of GB mid-job?▾
How fast is it?▾
Sign in to client.proxies.sx, copy your psx_ account ID and proxy password, and you're routing in 60 seconds.