The mobile proxy API you can paste into anything
There is no client library to install and no bespoke REST contract to learn. ProxyMobile speaks the standard proxy protocol every HTTP client already supports, so integrating it means setting one environment variable. Country, pool and rotation are encoded in the proxy username, which means you change behaviour by editing a string — not by rewriting your code.
$2 free credit on your first top-up
Quickstart: one URL, four languages
Your dashboard shows the connection line with your username and key already filled in. Copy it into PROXY_URL and every example below works as written.
curl
export PROXY_URL="http://USERNAME-mbl-us-rot-sticky:[email protected]:7000"
curl -x "$PROXY_URL" https://api.ipify.org?format=jsonPython
import os, requests
proxy = os.environ["PROXY_URL"]
r = requests.get(
"https://api.ipify.org?format=json",
proxies={"http": proxy, "https": proxy},
timeout=30,
)
print(r.json())Node.js
import { HttpsProxyAgent } from 'https-proxy-agent';
const agent = new HttpsProxyAgent(process.env.PROXY_URL);
const res = await fetch('https://api.ipify.org?format=json', { agent });
console.log(await res.json());Playwright
import { chromium } from 'playwright';
const url = new URL(process.env.PROXY_URL);
const browser = await chromium.launch({
proxy: {
server: `http://${url.host}`,
username: decodeURIComponent(url.username),
password: decodeURIComponent(url.password),
},
});Built for vibe coding
If you are building with Cursor, Claude Code, Copilot or any other assistant, the hard part of adding a proxy is usually the vendor SDK: the model has never seen it, invents method names, and you spend an afternoon debugging code you did not write. There is no SDK here, so that failure mode does not exist.
Nothing for the model to hallucinate
Coding assistants already know how to set a proxy in requests, axios, httpx, Playwright and Puppeteer — it is in every framework's documentation and has been for a decade. Ask for "route this through my proxy" and you get working code on the first try, because there is no ProxyMobile-specific SDK surface for the model to guess at.
One environment variable is the whole integration
Drop PROXY_URL into your .env and pass it wherever your HTTP client takes a proxy. That is the entire change. Nothing in your request-building, retry or parsing logic has to know a proxy exists, so you can add or remove it from a working project without touching the parts you had trouble getting right.
Change country or rotation without changing code
The username carries the routing: swap -us- for -de- to move country, or -rot-sticky for -rot-auto10 to rotate every ten minutes. In a vibe-coded project this matters — you can tune behaviour from a config value or an env var instead of asking a model to refactor a working file.
It fails in ways you can read
Because it is an ordinary proxy, a bad key is a 407 and a blocked target is whatever that site returns. You debug with the tools and error messages you already understand rather than decoding a vendor-specific error envelope.
Hand this to your assistant
Route every outbound HTTP request in this project through the proxy in the
PROXY_URL environment variable. It is a standard HTTP proxy with credentials
in the URL. Do not install a vendor SDK — use my HTTP client's normal proxy
option. Keep a single shared client/agent rather than building one per request.What each part of the URL does
The routing lives in the username, so changing behaviour never means changing code.
{protocol}://{username}-{pool}-{country}[-sid-{id}][-rot-{mode}]:{key}@{gateway}:{port}| Token | Values | What it controls |
|---|---|---|
| pool | mbl · peer | mbl is real 4G/5G mobile modems; peer is the residential Android pool. |
| country | us, gb, nl, pl, fr, ge, de, es, ch, pa, am | Two-letter code for where the exit IP sits. |
| sid | any [a-z0-9_] string | Session id. Reconnecting with the same sid returns you to the same device. |
| rot | sticky · auto10 · auto30 · hard · none | How often the exit IP changes. See the table below. |
| port | 7000 · 7001 | 7000 for HTTP/HTTPS, 7001 for SOCKS5. |
Rotation modes
| sticky | Hold one device for the session. Pair it with -sid- to keep the same device across reconnects, as stable as the carrier allows. |
| auto10 | Rotate roughly every ten minutes. The usual choice for long-running scrapers. |
| auto30 | Rotate on a longer interval, for jobs that want a slower churn. |
| hard | Strict device pin, like sticky. |
| none | Default gateway behaviour, no rotation directive. |
What people build with it
Ad verification
Check that a campaign renders the way it should for a real subscriber on a real carrier, in the country you bought the placement in. Mobile IPs matter here because ad servers treat datacentre traffic differently — often serving a different creative, or nothing at all.
Price and marketplace monitoring
Track competitor pricing, stock and shipping estimates across regions. Retail sites localise heavily and rate-limit aggressively, so a rotating mobile pool gets you consistent reads where a fixed IP gets stale prices or a block page.
SERP and rank tracking
Search results differ by country, carrier and device class. Querying through mobile IPs in the market you care about gives you the ranking a real user in that market sees, rather than a datacentre approximation of it.
AI agents and browser automation
Agents that browse — research crawlers, shopping bots, QA runners — hit bot walls fast from a cloud IP, because the whole datacentre range is known. Pointing the agent's browser at a mobile proxy is a one-line change in Playwright or Puppeteer and removes an entire class of failure.
Web scraping and data collection
Long crawls survive better on carrier IPs that rotate on a schedule you control. Set auto10, run the job, and pay for the gigabytes you moved rather than a per-request markup.
QA and geo-testing
Test the localised build of your own app or checkout flow — currency, language, tax, shipping rules, geo-gated content — from inside the market instead of guessing what a user there would see.
Market and review research
Aggregate listings, reviews and availability across regions for research, without your own office IP shaping the results you get back.
API pricing — per GB, no per-request fee
You are billed for bandwidth, not for calls. Requests, sessions, rotations and countries cost nothing extra, and there is no monthly subscription to keep the key alive.
| Bandwidth | Price | Per GB | Save |
|---|---|---|---|
| 1 GB | $7 | $7 | — |
| 5 GB | $35 | $7 | — |
| 10 GB | $68 | $6.80 | 3% |
| 25 GB | $150 | $6 | 14% |
| 50 GB | $283 | $5.66 | 19% |
| 100 GB | $500 | $5 | 29% |
Mobile proxy API FAQ
Do I need to install an SDK to use the mobile proxy API?
No. ProxyMobile is a standard HTTP and SOCKS5 proxy, so any HTTP client, browser automation framework or scraping library that supports proxies already supports it. You set one proxy URL and you are done.
How do I use it with an AI coding assistant?
Tell your assistant to route requests through the proxy in your PROXY_URL environment variable using your HTTP client's normal proxy option, and not to install a vendor SDK. Because proxy support is a standard feature of every major library, the generated code works without any ProxyMobile-specific knowledge.
How do I change country or rotation?
Both are encoded in the proxy username. Swap the two-letter country token to move country, and change the -rot- token to switch between sticky sessions and timed rotation. Your code does not change — only the URL string.
What is the difference between the mbl and peer pools?
The mbl pool is real 4G/5G carrier modems. The peer pool is the residential Android peer pool. You pick between them with the first token in the username, and both are billed at the same per-GB rate.
Does it work with Playwright, Puppeteer and Selenium?
Yes. All three accept a proxy server with credentials at launch, which is exactly what the connection URL gives you. Browser automation is one of the most common ways our customers use the pool.
How is API usage billed?
Per gigabyte of traffic, from $7/GB down to $5/GB at volume. There is no per-request fee, no monthly subscription and no charge for API calls themselves — you add credits and the bandwidth you use is drawn from that balance.
Can I keep the same IP across requests?
Yes. Add a -sid- token with any identifier you choose and use rotation mode sticky. Reconnecting with the same sid returns you to the same device, so a login session survives across requests and restarts.
Is there a free trial?
Your first top-up gets $2 in free credit added on top, which is enough to test the pool properly against your own targets before committing to a larger balance.
