Mobile Proxy for n8n
Route any HTTP Request node in n8n through a mobile carrier IP. Re-usable Generic Credentials, rotation triggered mid-workflow, and a complete web-scrape example you can import.
Prerequisites
- →An n8n instance (self-hosted v1.50+ or n8n Cloud).
- →A mobileproxies.org slot with HTTP port and a generated API key.
- →Proxy fields from the dashboard:
hostname,http_port,username,password.
Step-by-Step Configuration
Pull credentials from the dashboard API
Call the proxies endpoint once to grab the slot you want to use.
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://buy.mobileproxies.org/api/v1/proxies
# response (truncated)
[{
"slot_id": "us-mob-01",
"hostname": "proxy.mobileproxies.org",
"http_port": 8000,
"socks5_port": 8001,
"username": "u_4a9c",
"password": "p_2X7q..."
}]Create a Generic Credential in n8n
In n8n go to Credentials → New → HTTP Request Auth (Generic Credential Type). Use these field values — they apply to every HTTP Request node that selects this credential.
Name: MobileProxies-US-01
Authentication: Generic Credential Type
Generic Auth Type: Header Auth # we only use this to store the proxy meta
Header Auth: { name: "X-Proxy", value: "stored-elsewhere" }
# Save — we reference these values via n8n expressions
# Then in the HTTP Request node use the "Proxy" field directly:Set the proxy on the HTTP Request node
Inside any HTTP Request node, open Options → Proxy and paste the URL form. n8n forwards the request through that proxy for both HTTP and HTTPS targets.
# In the n8n UI:
# Options → Proxy:
http://u_4a9c:p_2X7q...@proxy.mobileproxies.org:8000
# Or as JSON in the workflow export (HTTP Request node parameters):
{
"method": "GET",
"url": "https://httpbin.org/ip",
"options": {
"proxy": "http://u_4a9c:p_2X7q...@proxy.mobileproxies.org:8000",
"timeout": 30000
}
}Add the rotation step (optional but recommended)
For scrape-heavy workflows, drop in an HTTP Request node before the main fetch that calls our rotation endpoint. Each call gives you a fresh egress IP.
# HTTP Request node — "Rotate IP"
{
"method": "POST",
"url": "https://buy.mobileproxies.org/api/v1/proxies/us-mob-01/switch",
"headerParameters": {
"Authorization": "Bearer YOUR_API_KEY"
},
"options": { "timeout": 15000 }
}
# Chain it BEFORE the scrape node so each iteration egresses
# from a different carrier IP.Wire it into a "Web Scrape" workflow
Minimal three-node scrape workflow you can import:
Schedule Trigger (every 1h) ↓ HTTP Request "Rotate" → POST /api/v1/proxies/us-mob-01/switch ↓ HTTP Request "Scrape" → GET target URL, proxy = mobile proxy ↓ HTML Extract → CSS selectors on response body ↓ Postgres / Sheets → store rows
Verify It Works
Run a one-off execution targeting https://api.ipify.org?format=json. The returned IP should belong to a mobile ASN — check it on https://ipinfo.io/{ip}/json and look for"org": "AS..." matching a carrier like T-Mobile, AT&T or Vodafone. If you see AWS / OVH / Hetzner, the proxy field isn't being applied — see troubleshooting below.
Mid-Workflow IP Rotation
For workflows that loop over a list of URLs, add a Code node that calls rotate every N iterations instead of every iteration — rotating too aggressively wastes the carrier session and is itself a bot signal.
// Code node — runs once per item
const idx = $itemIndex;
if (idx > 0 && idx % 25 === 0) {
await this.helpers.httpRequest({
method: 'POST',
url: 'https://buy.mobileproxies.org/api/v1/proxies/us-mob-01/switch',
headers: { Authorization: 'Bearer ' + $env.MP_API_KEY },
});
// small backoff so the new IP is fully established
await new Promise(r => setTimeout(r, 4000));
}
return $input.item;Common Errors
"tunneling socket could not be established, statusCode=407"
Auth failure. Re-check that the proxy URL has the form http://USER:PASS@HOST:PORT and that special characters in the password are URL-encoded.
Workflow hangs and times out at exactly 5 minutes
n8n's default HTTP timeout is too high for proxied scraping. Set options.timeout to 20–30s and add a retry-on-error setting on the node.
ipify still returns my server IP
The Proxy option was left empty on a downstream HTTP node, or you used the Authentication field instead of Options → Proxy. Only the Proxy field actually rewrites the outbound socket.
Related Guides
Plug n8n Into Real Mobile IPs
$5 trial. Carrier-grade ASNs, rotation API, sticky sessions. Drop the URL into any HTTP Request node and you're done.