PuraRoute integration guide
Purchase, configure, connect, and operate dynamic and static residential proxies safely.
Use this guide to make your first PuraRoute proxy request and prepare the integration for production. All hosts, ports, usernames, and passwords below are placeholders. Copy the current connection details from your console instead of typing them from an example.
Choose a product
| Product | Choose it when | Purchased as | Connection identity |
|---|---|---|---|
| Dynamic residential | Requests need geographic flexibility, rotation, or short-term sticky sessions | Traffic in GB | Generated from a subaccount and session configuration |
| Static residential | A workflow or allowlist needs a stable, dedicated IP | IP quantity and duration | Fixed for the allocated resource term |
Product availability, regions, protocols, inventory, and prices are live values. Confirm them in the console before purchase.
Quick start
- Sign in to PuraRoute and enable the available account security options.
- Top up the wallet if the selected purchase requires wallet balance.
- Request a quote in the dynamic or static product page. Review the amount, unit, quantity, duration, region, and payment method.
- Submit the order and wait for a successful payment and allocation status.
- Generate or retrieve credentials from the relevant resource page.
- Run a small test request before enabling concurrency or production traffic.
Marketing prices are not settlement values. Always use the current quote shown immediately before order confirmation.
Dynamic residential setup
1. Purchase traffic
Open the dynamic residential product page, enter the traffic amount, and request a quote. After purchase, the new traffic batch and available balance appear in the console. Individual traffic batches may have their own expiration rules.
2. Create a subaccount
Create a subaccount for the application or team. Give it only the traffic limit it needs. Separate subaccounts make usage attribution, credential rotation, and incident containment easier.
3. Generate a connection
In Proxy configuration, select:
- an enabled subaccount;
- automatic routing or an available country;
- Rotating or Sticky session mode;
- the sticky duration when sticky mode is selected;
- HTTP(S) or SOCKS5; and
- the number of connection entries to generate.
The console retrieves the correct gateway and port and generates the proxy username from the selected region and session policy. Do not manually edit the generated username unless instructed by support.
4. Understand the session modes
- Rotating: appropriate for independent requests that can safely use different exits.
- Sticky: attempts to preserve one exit for the selected time window. It is useful for a short multi-step flow, but it is not a permanent IP reservation.
Retries, reconnects, supplier conditions, or session expiration can still change an exit. Your application should recover cleanly from a connection change.
Static residential setup
- Open the static residential product page.
- Select the current product type, country or region, protocol, duration, and IP quantity.
- Check live inventory and request a quote.
- Confirm the order only after reviewing the total amount and wallet balance.
- After allocation, open the resource to retrieve its endpoint, username, and password.
- Monitor resource status and expiration. Enable auto-renewal only if you intend to maintain enough wallet balance.
A submitted order does not reserve inventory until the platform confirms payment and allocation. A resource may stop accepting connections when it expires, is disabled, or becomes unavailable.
Connection format
Most proxy clients accept one of these formats:
http://<USERNAME>:<PASSWORD>@<HOST>:<PORT>
socks5://<USERNAME>:<PASSWORD>@<HOST>:<PORT>Percent-encode usernames and passwords when placing them inside a URL. Libraries that accept credentials as separate fields are preferable because they reduce encoding mistakes and accidental logging.
Test with cURL
curl --fail-with-body \
--show-error \
--silent \
--location \
--max-time 30 \
--proxy "http://<USERNAME>:<PASSWORD>@<HOST>:<PORT>" \
"https://httpbin.org/ip"For SOCKS5, use the SOCKS5 host and port supplied by the console and change the proxy scheme to socks5://. Use a test destination that you are authorized to access.
Python example
Install the client:
python -m pip install requestsThen keep credentials in environment variables rather than source code:
import os
from urllib.parse import quote
import requests
host = os.environ["PROXY_HOST"]
port = os.environ["PROXY_PORT"]
username = quote(os.environ["PROXY_USERNAME"], safe="")
password = quote(os.environ["PROXY_PASSWORD"], safe="")
proxy_url = f"http://{username}:{password}@{host}:{port}"
response = requests.get(
"https://httpbin.org/ip",
proxies={"http": proxy_url, "https": proxy_url},
timeout=30,
)
response.raise_for_status()
print(response.text)For SOCKS5, install requests[socks] and use the scheme and endpoint shown in the console.
Node.js example
Install an HTTP proxy agent:
npm install https-proxy-agentconst https = require('node:https');
const { HttpsProxyAgent } = require('https-proxy-agent');
const proxyUrl = new URL(
`http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`
);
proxyUrl.username = process.env.PROXY_USERNAME;
proxyUrl.password = process.env.PROXY_PASSWORD;
const request = https.get(
'https://httpbin.org/ip',
{ agent: new HttpsProxyAgent(proxyUrl) },
(response) => {
let body = '';
response.setEncoding('utf8');
response.on('data', (chunk) => (body += chunk));
response.on('end', () => {
if (!response.statusCode || response.statusCode >= 300) {
throw new Error(`Proxy test failed: HTTP ${response.statusCode}`);
}
console.log(body);
});
}
);
request.setTimeout(30_000, () =>
request.destroy(new Error('Proxy request timed out'))
);
request.on('error', console.error);The console also provides generated examples for cURL, Python, Node.js, Go, and Java using the selected connection.
Production recommendations
- Store credentials in a secret manager or protected environment variables.
- Never include proxy passwords in client-side code, public repositories, screenshots, analytics, or application logs.
- Use separate subaccounts or static resources for separate trust boundaries.
- Set connection and response timeouts. Retry only safe operations and use exponential backoff with jitter.
- Cap concurrency and request rate according to the destination’s rules and the workload’s real needs.
- Reuse connections where appropriate, but do not assume a sticky session lasts beyond its configured window.
- Monitor dynamic usage, wallet balance, order status, static resource status, and expiration.
- Rotate credentials immediately if exposure is suspected.
Monitoring usage and resources
The console provides:
- available dynamic traffic and traffic batches;
- daily usage by subaccount;
- dynamic account status and traffic limits;
- order and payment status;
- wallet balance and transaction history; and
- static resource status, location, expiration, and renewal settings.
Usage may include traffic needed to establish, relay, retry, and close connections. Alert before traffic or wallet balance reaches zero and before a static resource expires.
Troubleshooting
Authentication failed
Copy the credentials again from the correct account or resource. Check URL encoding, protocol, host, and port. Confirm that the subaccount or resource is enabled and unexpired.
Connection timed out
Test from another network, reduce concurrency, and verify that your firewall allows the supplied host and port. Use a 30-second test timeout before tuning for your workload.
The exit location is unexpected
Regenerate the dynamic connection after checking the country selection, or confirm the allocated location of a static resource. Geolocation databases can disagree, so compare more than one trusted lookup source before reporting a mismatch.
A sticky session changed IP
Confirm that the same generated username and credentials were reused and that the session window did not expire. Reconnects and network conditions can end a session; do not use sticky mode where permanent IP continuity is mandatory.
Traffic use is higher than expected
Check retry loops, redirects, response sizes, parallel workers, and whether both successful and failed attempts transferred data. Use a dedicated subaccount and lower traffic limit while investigating.
Static resource stopped working
Check its status and expiration, then verify wallet balance and renewal state. Retrieve current credentials again before contacting support.
Responsible use
Use PuraRoute only for lawful, authorized activity. Respect target-site terms, access controls, rate limits, intellectual property, privacy, and data protection obligations. Do not use the service for unauthorized access, credential attacks, spam, fraud, malware, denial-of-service activity, or collection of sensitive data without a valid legal basis.
When contacting support, include the order or resource identifier, timestamp, protocol, region, and an error message with secrets removed. Never send account passwords, two-factor secrets, or proxy passwords in a support request.