Home/Docs/curl
Integration guide 150+ countries 99.9% uptime

How to Use ProxyOmega Proxies with curl

curl is the standard command-line HTTP client and the fastest way to verify any proxy is wired up correctly. Before integrating ProxyOmega into a scraper or browser, run the curl check below — if the IP returned changes between calls, the rest of your stack will work too.

Quick start

Use the Premium Unlimited endpoint below — it accepts the username-modifier syntax used throughout this guide. Other plans use the same code shape with a different host and port (see the endpoint table at the bottom).

Quick startbash
curl -x "http://<USERNAME>:<PASSWORD>@premium.proxyomega.com:8000" \
     -sS https://api.ipify.org?format=json

# Expected: a JSON body with a residential IP that is NOT your own.

Rotation: sticky session vs rotating

Append -session-<id>-ttl-<seconds> to your username to hold the same exit IP. Drop the suffix entirely for a fresh IP on every request.

Sticky session vs rotatingbash
# Rotating: bare username — new IP every invocation
for i in 1 2 3; do
  curl -sS -x "http://<USERNAME>:<PASSWORD>@premium.proxyomega.com:8000" \
       https://api.ipify.org
  echo
done

# Sticky: same IP for 600 seconds via -session-<id>-ttl-<seconds>
curl -sS -x "http://<USERNAME>-session-abc123-ttl-600:<PASSWORD>@premium.proxyomega.com:8000" \
     https://api.ipify.org

Country targeting

Add -country-XX (ISO 3166 alpha-2) to your username. State and city modifiers are supported on Premium Unlimited, Platinum and Mobile.

Country, state and city targetingbash
# Country (ISO 3166 alpha-2)
curl -sS -x "http://<USERNAME>-country-de:<PASSWORD>@premium.proxyomega.com:8000" \
     https://api.ipify.org

# US state
curl -sS -x "http://<USERNAME>-country-us-state-CA:<PASSWORD>@premium.proxyomega.com:8000" \
     https://api.ipify.org

# City
curl -sS -x "http://<USERNAME>-country-us-city-newyork:<PASSWORD>@premium.proxyomega.com:8000" \
     https://api.ipify.org

Authentication: username/password vs IP whitelist

Two ways to authenticate. Username/password is set on every request and is what every example in this guide uses. IP whitelist is configured in the ProxyOmega dashboard — once your runner IP is listed, drop the credentials from the proxy URL and the connection is authorised by source IP.

curl encodes the credentials into the Proxy-Authorization header automatically. Use -U user:pass to keep them out of shell history, or whitelist the host IP in the dashboard and drop credentials altogether.

Common errors and fixes

HTTP 407 Proxy Authentication Required

Wrong username or password, or the credentials contain a special character that was not URL-encoded. Re-copy from the dashboard.

Connection refused / connection reset

Either the runner IP is not on your whitelist (if you use IP auth) or your network blocks outbound on the proxy port. Test with curl first.

Read timeout / no response

Residential exits sometimes have tail latency. Raise client timeout to 30–60 s and enable retry. If timeouts persist across many sessions, the target is rate-limiting your country — switch country.

Always the same IP returned

You have a -session- suffix in your username, or HTTP keep-alive is reusing the connection. Drop the session suffix and disable keep-alive on the client to force new exits.

Recommended plan

Premium Unlimited Residential
Unlimited bandwidth + per-request username modifiers — the most flexible plan for ad-hoc CLI testing.
View plan

All endpoints

PlanHostPortNotes
Budget Unlimitedresidential.proxyomega.com10000–10099Per-port country / rotation set in the dashboard. No username suffixes.
Premium Unlimitedpremium.proxyomega.com8000Username modifiers: -country-XX, -session-{id}-ttl-{seconds}.
Platinumplatinum.proxyomega.com20228ASN / state / city targeting via username modifiers.
Mobilemobile.proxyomega.com20229Real 4G/5G carrier IPs. Same username modifier syntax.
IPv6ipv6.proxyomega.com9000IPv6 exits, supports UDP_ASSOCIATE.

FAQ

curl returns 407, what does it mean?

The proxy rejected your Proxy-Authorization header. Re-check the username/password copied from the dashboard — special characters need URL-encoding if you embed them in -x.

Connection refused on port 8000?

Most likely your network blocks outbound 8000. Try from another network, or use --proxy-insecure to rule out TLS. The standard ProxyOmega ports are 8000 / 10000-10099 / 20228 / 20229 / 9000.

How do I force HTTPS proxy (CONNECT)?

For HTTPS targets, curl automatically issues CONNECT through the proxy. You do not need --proxytunnel unless your target is a non-HTTP protocol.

Why does the IP not change between requests?

You almost certainly have a -session- suffix in the username. Drop it for rotating. Otherwise, check Keep-Alive — same TCP connection may reuse the same upstream.

Related guides

Ready to use ProxyOmega with curl?
Sign up in under a minute. Pay-as-you-go and unlimited plans available.