No SDK · HTTP & SOCKS5

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=json

Python

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}
TokenValuesWhat it controls
poolmbl · peermbl is real 4G/5G mobile modems; peer is the residential Android pool.
countryus, gb, nl, pl, fr, ge, de, es, ch, pa, amTwo-letter code for where the exit IP sits.
sidany [a-z0-9_] stringSession id. Reconnecting with the same sid returns you to the same device.
rotsticky · auto10 · auto30 · hard · noneHow often the exit IP changes. See the table below.
port7000 · 70017000 for HTTP/HTTPS, 7001 for SOCKS5.

Rotation modes

stickyHold one device for the session. Pair it with -sid- to keep the same device across reconnects, as stable as the carrier allows.
auto10Rotate roughly every ten minutes. The usual choice for long-running scrapers.
auto30Rotate on a longer interval, for jobs that want a slower churn.
hardStrict device pin, like sticky.
noneDefault 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.

BandwidthPricePer GBSave
1 GB$7$7—
5 GB$35$7—
10 GB$68$6.803%
25 GB$150$614%
50 GB$283$5.6619%
100 GB$500$529%

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.

Pick a country to route through