← all guides

Running two providers at once and splitting traffic

Why run two providers instead of one

Most scraping setups start with one proxy provider because that’s the simplest thing to wire up. You get an endpoint, a username and password, and you point your requests at it. That works fine until the provider has a bad day: a pool gets exhausted, an upstream carrier has an outage, support goes quiet for six hours, or the provider’s IP ranges start getting flagged more often on a target you care about. When that happens with a single provider, your whole pipeline stalls.

Running two providers at once is mostly a resilience decision, not a performance trick. If provider A’s pool degrades on a specific target, you still have provider B carrying traffic while you investigate. If provider A has a billing issue or an outage, jobs don’t fully stop, they just run at reduced capacity. This is the same logic as multi-region hosting or having a second ISP link into an office: you’re not trying to be faster, you’re trying to avoid a single point of failure taking down the whole operation.

There’s also a cost angle. Residential and mobile pools are priced and sized differently across providers, and no single provider is the best fit for every target. One provider might have a strong, low-latency pool in the regions you scrape most; another might be cheaper per GB but with a smaller pool that’s fine for lower-volume jobs. Splitting traffic lets you route each job to whichever provider actually fits it, instead of paying premium rates for everything because that’s what your one contract offers.

What “splitting traffic” actually means

Splitting traffic doesn’t mean alternating providers request by request inside the same browsing session. It means deciding, at the job or session level, which provider handles which slice of work. A few common ways teams do this:

By target site. Some targets are more sensitive to proxy pool quality than others. A site that runs aggressive fingerprinting and IP reputation checks might get routed to your more expensive, better-maintained pool, while a low-friction target runs on the cheaper provider. This is a straightforward mapping in a config file: target domain to provider name.

By volume tier. Send a fixed percentage of traffic to each provider, say 70/30 or 50/50, and adjust the split based on observed error rates. This is closer to a weighted load balancer than anything clever. The weight itself is usually a manually tuned number, updated when you notice one provider’s success rate sliding.

By job type. Long-running sessions that need a stable IP for the whole session (a login flow, a multi-page checkout crawl) go to a provider with reliable sticky sessions. Short, stateless requests that don’t care about IP continuity go to whichever provider is cheapest that day. Mixing these up, putting a session-dependent job on a rotating pool that changes IP every request, is a common way to break your own scraper, not a proxy problem at all.

By geography. If provider A has a denser pool in one country and provider B in another, route by the region you need to appear to be in. This is often the actual deciding factor, more than price, because a thin pool in the wrong geography behaves worse regardless of what you’re paying.

Building the routing layer

You don’t need a message queue or a service mesh for this. Most production setups I’ve seen (and run) use a simple provider registry: a list of provider configs (endpoint, auth, protocol, region tags, cost per GB) and a selection function that picks one based on the job’s requirements. The selection function is the only piece of real logic, everything else is data.

A basic version looks like: check if the target has a pinned provider, if not check the job type for a sticky-session requirement, if not fall back to the weighted round robin across whatever providers are currently healthy. “Currently healthy” matters, this is where a lot of the value comes from. If you’re tracking per-provider error rates (timeouts, connection resets, unusually high rates of non-200 responses on a target that’s normally clean), you can automatically deprioritize a provider that’s having a bad hour without a human noticing first.

That health check doesn’t need to be fancy. A rolling window of the last few hundred requests per provider, tracking success rate and average latency, is enough to catch a provider degrading before it takes your whole job down with it.

Session integrity when mixing providers

The one thing that reliably breaks when people mix providers carelessly is session state. Cookies, TLS fingerprints, and sometimes even canvas or WebGL fingerprints in a browser-based scraper are tied to a specific client identity in the eyes of the target site’s systems. If a session starts on provider A’s IP, sets a session cookie, and then a later request in that same logical session goes out over provider B’s IP with a different fingerprint, that’s a mismatch a detection system is specifically built to notice. Legitimate users don’t jump networks mid-session on a stable connection, and IP-plus-fingerprint inconsistency is one of the more basic signals these systems check for.

The fix isn’t clever, it’s just discipline in the routing layer: pin a provider (and ideally a specific sticky IP) for the lifetime of a session, and only make the provider decision once, at session start. Splitting traffic happens across sessions and across jobs, not within one.

The overhead you’re taking on

Two providers means two dashboards, two invoices, two support relationships, and two sets of quirks to learn. Rate limits, session duration limits, and rotation behavior all differ between providers, and your routing layer has to know about each one specifically rather than treating them as interchangeable. If you’re running a small, occasional scraping job, this overhead usually isn’t worth it. A single reliable provider with decent support is the right call until you have enough volume or enough uptime pressure that a single point of failure actually costs you something when it goes down.

Where it pays off is when you’re running production infrastructure that other things depend on: a pipeline feeding a live product, monitoring that needs to run continuously, or volume high enough that provider-specific pricing differences add up to real money. At that point, the engineering cost of a routing layer is small compared to the cost of an afternoon outage.

What this setup does and doesn’t solve

Running two providers reduces your exposure to any single provider’s problems: pool exhaustion, an outage, a pricing change, a support delay. It does not make your scraping less visible to a target site’s detection systems, and it’s not a way to get around a block. A site’s bot detection generally looks at the whole picture, request patterns, headers, fingerprint consistency, behavioral timing, not just which proxy pool an IP happens to belong to. Splitting traffic across providers with clean, respectful request patterns and correct session handling is still just table stakes for running reliably, not a way to bypass a target’s terms of service or defeat its detection outright. No proxy setup, single or multi-provider, guarantees you won’t get rate limited or blocked, and treating it that way is how people end up burning through pools they paid for.

If you’re evaluating providers to pair up, the comparisons worth doing are the boring ones: actual pool size in the regions you need, sticky session behavior under load, and how their error rates hold up over a real week of traffic, not marketing claims about being undetectable. That’s the same standard we hold every provider to on this site.

If you want more on choosing and running proxies without the hype, take a look at the rest of what we’ve published on Proxy Scraping.

Get new guides and videos first — join the Telegram channel.

proxies
Need proxies that survive the block wall?

Singapore Mobile Proxy runs real 4G/5G mobile IPs on rotating SIMs — the carrier-grade addresses most of these targets still trust.

see plans →
read on
More scraping guides

The rest of the field manual: target-site playbooks, library walkthroughs, provider reviews, and anti-bot troubleshooting.

browse all guides →