Let's put the conclusion up front: for overseas search engine results page (SERP) rank monitoring, your exit should be dynamic residential proxies, rotating per request or per short session, not static dedicated IPs, and certainly not datacenter IPs. As for whether to buy a traffic-based or bandwidth-based plan, the dividing line is whether your scraping is "scheduled rotation" or a "resident pipeline."
Below we clarify why this is the answer, which situations are exceptions, and how to fill in the parameters and verify them once you have them.
Why rotation, not fixed exits
The fundamental difference between SERP scraping and tasks like shop backends or social media accounts is: it is stateless. There is no login state, no shopping cart, no session context between keyword queries; the server does not need to recognize "you as the same person." Conversely, precisely because it does not need to be recognized, hitting a large number of structurally similar queries from the same IP in a short time is the pattern most likely to be flagged by anti-fraud systems—typically manifesting as 429 Too Many Requests, a CAPTCHA page, or a noticeably degraded generic results page.
By spreading queries across a sufficiently large pool of real home broadband IPs, the request frequency per exit is naturally diluted. This is the underlying logic for ensuring success rate. So what you need here is dynamic residential proxies, and by default, per-request rotation; do not enable long sticky sessions for "convenience" and cram hundreds of keywords onto the same exit.
The second point is equally important: the exit must be a residential IP with real ISP attribution, not a datacenter IP. Search engines have low trust scores for datacenter ASNs and flag them quickly. Scraping SERP with datacenter IPs will either be blocked directly or return a page that is not what local users actually see—for rank monitoring, the latter is worse than being blocked, because the data looks normal but the conclusions are wrong.
Static residential IPs are not suitable in this scenario, not because they are "dirty," but because their dedicated fixed nature is the exact opposite of the task requirements: a fixed exit carrying high-frequency homogeneous queries will only hit rate limits faster. Static IPs are useful for scenarios requiring a stable identity, such as shop backend binding or social media account operations. If you have both types of work, do not let them share the same exit solution (for the static side, see How to Choose Between Static Short-Lived and Static Long-Lived Residential IPs).
An exception worth keeping
If, in addition to bulk scraping, you also need to manually verify a small number of high-value keywords periodically—for example, opening a browser to check local business results for a certain city and taking screenshots for clients—then this chain can be configured with a fixed exit. The advantage is that the geographic context seen each time is completely consistent, free from location drift caused by rotation. But this is a small-traffic manual verification channel, separate from the main scraping pipeline; do not mix them.
Traffic plan or bandwidth plan?
The two billing methods correspond to two scraping rhythms. First, see which one you belong to.
Traffic-based dynamic plans are suitable for: small to medium keyword volumes, scheduled rotation daily or weekly, and tasks with obvious peak and idle periods. SERP scraping itself is light on data—as long as you block images, CSS, fonts, and videos in the scraper and only fetch HTML or directly parse structured interfaces, a single query is typically only tens to hundreds of KB. Buying by traffic is most cost-effective for this usage, and idle periods incur no cost.
Bandwidth-based, unlimited-traffic dynamic plans are suitable for: large keyword libraries, 24/7 uninterrupted operation, and enterprise-level pipelines running multiple regions and languages in parallel. At this scale, traffic-based costs will rise linearly with the number of keywords and are hard to predict, while bandwidth-based buys a concurrency limit with a fixed cost; excess only manifests as speed, not as a bill.
You can first run a rough estimate formula to determine the threshold:
月流量 ≈ 关键词数 × 每日频次 × 每次抓取页数 × 单页字节 × 重试系数 × 30Set the retry coefficient based on measured CAPTCHA and failure rates, not as 1. After estimating, do not immediately order a large package; first use a small amount for a real sampling round, because the page size can vary several times depending on the search engine, region, and whether map packs are included. For estimation methods and sampling standards, see How to Estimate Usage for Dynamic Residential Traffic Plans.
A practical switching line: when you find that the monthly traffic cost is already close to the price of a bandwidth plan with equivalent concurrency, or you start actively cutting monitoring frequency and keywords to control costs, it's time to switch to bandwidth-based billing.

Geolocation: This is where SERP monitoring most easily fails
Rank monitoring results are strongly correlated with IP physical location. For the same keyword, natural rankings, local business listings, and map pack content can differ across countries, or even across cities within the same country. Therefore, the proxy must support specifying a country, and ideally a state/province and city.
But selecting the right exit location is not enough; the scraper-side parameters must align with the exit, otherwise you will get conflicting results:
- The search engine's region and language parameters (Google's
gl,hl, anduulewhen precise location is involved) must match the proxy exit country; - The HTTP request header
Accept-Languagemust match the common language of the target region; do not pair a US exit with a Chinese language header; - Browser timezone, locale, and User-Agent must also be changed together; avoid combinations like "German IP + US Eastern timezone + Japanese interface";
- If you are monitoring local service keywords, city-level targeting is not a bonus but a necessity.
For how to fill in targeting parameters like city and ASN when ordering and how to verify them, see City Targeting and ASN Targeting: How to Fill Parameters When Ordering, How to Verify Upon Receipt; for determining whether the obtained IP location truly falls in the target city, the method is in How to Judge the Geolocation Accuracy of Overseas Residential IPs.
How to configure protocol, authentication, and access method
Protocol: HTTP/HTTPS is sufficient; if your scraper needs to reuse connections or runs in non-HTTP components, SOCKS5 is more convenient.
Authentication: SERP scraping is usually multi-machine, multi-container, and concurrent, and exit IPs may not be fixed, so username/password authentication is more hassle-free than whitelisting—no need to re-whitelist when changing machines. Only when your scraping nodes run on servers with fixed public IPs and are not frequently added or removed does whitelisting have an advantage (one less handshake, cleaner configuration). For the trade-offs, see How to Choose Between Proxy IP Username/Password Authentication and Whitelist Authentication.
Access method depends on your architecture:
- Direct username/password connection: most common; configure a single proxy line in Requests, HTTPX, AIOHTTP, or Playwright. For specific syntax, see How to Integrate Residential Proxies into Python Scraping Scripts;
- API extraction: suitable when you manage your own IP list, want to control rotation rhythm, or remove failed IPs;
- Port forwarding: suitable for legacy systems where modifying code is inconvenient and traffic is routed out via local port mapping. For the difference between API extraction and port forwarding, see this comparison;
- Process proxy: use when you only want one scraping program to go through the proxy and other traffic to stay local. The method is in How to Make Only One Software Use a Proxy via Process Proxy.
Also note: the SERP scenario does not require sticky sessions. If your tool enables session persistence by default, remember to turn it off or minimize it, otherwise rotation is as good as not enabled.
Changing IPs is not enough: client fingerprints must also match
This is the real reason many teams still get blocked after buying residential proxies. Modern search engine anti-fraud systems look at three layers simultaneously: IP reputation, TLS handshake characteristics (JA3/JA4), and browser behavior fingerprints. Using native curl or Python requests directly, no matter how clean the IP, the TLS fingerprint will expose it as "not a browser."
Corresponding practices:
- For a lightweight approach, use clients like
curl-impersonatethat can mimic real browser TLS fingerprints; - For scenarios requiring rendering or interaction, use Playwright / Puppeteer to run headless browsers and align UA, timezone, language, and screen parameters;
- Establish monitoring metrics for CAPTCHA and failure rates. Do not just count "how many items were scraped," but also "how many times were blocked"—this number is your only basis for tuning concurrency and backoff intervals.
One additional premise: major search engines never publicly disclose per-IP rate thresholds. The "N times per IP per minute" circulating online are others' measured values and cannot be copied directly. Concurrency and retry backoff must be measured under your own keyword combinations, regions, and time periods.
The browser environment layer falls under fingerprint isolation. NexIP is only responsible for the network exit; the browser fingerprint side can be handled by NexBrowser. Do not mix their roles.
Five-step verification upon receipt
After ordering and connecting, run this set before scaling up:
- Exit verification: randomly take several requests, check the exit IP's country, state/province, city, and ASN type, confirm it is residential ISP attribution rather than a hosting provider, and located in the target region;
- Rotation verification: send several consecutive requests, record exit IPs, confirm rotation occurs as expected and is not stuck by sessions;
- Localization verification: scrape the same keyword from two different country exits; the results should differ significantly—if they are almost identical, geolocation is not actually taking effect. Go back and check
gl/hland location parameters; - Success rate sampling: run a batch of real keywords, count the proportions of 200 normal returns, 429s, and CAPTCHA pages. Record this baseline; use it for comparison against any future fluctuations;
- Traffic sampling: record the actual bytes consumed by this batch, plug it back into the estimation formula above, and then decide whether to buy a traffic package or bandwidth package.
The order of step 5 cannot be reversed—sample with a small amount first, then decide the plan specifications. This saves the cost of buying the wrong tier once.
Which tier to order
Let's converge the above judgments:
- Small to medium keyword volume, scheduled rotation daily or weekly, with obvious idle periods → choose the Dynamic Residential Traffic Plan, rotate per request, no sticky sessions;
- Large keyword library, resident high concurrency, multi-region parallel, and desire predictable costs → choose the Dynamic Residential Bandwidth Plan, unlimited traffic, plan specifications by concurrency;
- If you need to confirm whether the target country or city is covered, first check coverage by country, then come back to decide specifications.
Finally, a note on the applicable boundary: the above is an exit selection for compliant rank monitoring and data scraping of your own business. You must control the scraping rhythm, frequency, and target site terms of service yourself. Proxies solve the issues of exit attribution and dispersion; they cannot replace your own compliance judgment regarding scraping behavior.
NexIP官方博客
Comments(0)