Save 5% every month: use code 5OFFSTORM at checkout
Home / Guides / Rank tracking

Which proxies do you need for rank tracking, and how many?

For rank tracking, use rotating datacenter proxies on the Main gateway, so every search leaves from a new IP, and keep Google traffic to a quarter of your plan’s threads. A 40-thread plan gives you 10 search threads, enough for a few thousand keyword checks a day with sensible pauses. Location comes from the gateway region plus the search’s own country settings.

Updated October 2026Proxies by use case

Rank trackers send the same kind of request over and over: one keyword, one search engine, one results page. From a single IP, Google notices fast. You get the “unusual traffic” page, a CAPTCHA, or results that stop loading halfway through the run. The usual advice (“just buy residential”) skips what actually decides success: how many searches you push through at once.

A proxy for rank tracking has two jobs. It spreads your searches across many IPs so no single address carries the whole keyword list. And it makes the search come from the country whose rankings you want to see. A third job, city-level local rankings, is where IP-based proxies get expensive and where Storm is honestly not the right fit.

This guide covers which gateway to use, how to set up a desktop rank tracker and a custom script, the thread budget for Google, worked sizing for small and agency keyword lists, and what to do when the numbers you see don’t match a manual search.

Which Storm plan fits

Most rank trackers fit rotating proxies on the Main gateway: a new IP per search, flat monthly price, and unlimited bandwidth, so result pages with images cost nothing extra. Size the plan from your Google budget (a quarter of the threads): 40 threads for up to about 3,000 checks a day, 80 or 150 threads for agency-sized lists. Residential ports are the second choice for a smaller list that keeps hitting CAPTCHAs; they aren’t a fix for city-level local rankings, because Storm has no city targeting.

Rotating proxies (from $14/mo): 700,000+ IPs behind fixed gateway IP:PORTs. New IP on every request, or every 3 or 15 minutes. USA, EU, USA+EU or Worldwide. Unlimited bandwidth on every plan.

Get 40 threads for $39/mo See all rotating proxies plans

Before you start

  1. Log in to the member area and copy your gateway IP:PORTs. They never change; the rotation happens on our side.
  2. Add the public IP of the computer or server that will run your tool under Authorized IPs, click Save, and allow up to 15 minutes before testing. Rotating and residential proxies use IP authentication, so there is no username or password.
  3. Count your threads: the tool’s total open connections must stay within your plan (for example 40 threads on the 40-thread plan).

Set up a rank tracker with rotating proxies

  1. Count your daily searches before you buy

    Multiply keywords by search engines, by locations, by result pages checked. 500 keywords, Google only, USA only, first page only is 500 searches a day. The same list checked to position 50 at 10 results a page is 2,500. This number, not the keyword count, decides the plan.

  2. Authorize the computer that runs the tracker

    Desktop trackers run from your own PC or a VPS. Add that machine’s public IP under Authorized IPs in the member area and wait up to 15 minutes. Cloud-hosted rank tracking services run on their own servers with their own IPs, so you can’t plug IP-authorized gateways into them; those services usually handle proxies themselves.

  3. Pick the Main gateway in the right region

    Use the Main gateway (new IP per connection). The 3-minute gateway is meant for sign-ups and browsing, not for search engines. Choose a USA or EU gateway for the market you track; avoid USA+EU for rank tracking, because half your searches would leave from the other region.

  4. Add the gateway to your tracker

    In SEO PowerSuite Rank Tracker, open Preferences › Search Safety Settings › Proxy Rotation, enable it, and use Add or Import to enter each gateway IP:PORT with no username or password. Leave “Look for new proxies” off: the gateway already rotates. In ScrapeBox, see the ScrapeBox proxy guide.

  5. Set concurrency to your Google budget

    Trackers usually suggest tasks based on how many proxies you list. A gateway is one line but many IPs, so ignore that rule and set concurrency to a quarter of your plan’s threads. In Rank Tracker that’s Number of Tasks under Preferences › Misc. Global Settings: 10 on a 40-thread plan.

  6. Keep pauses and long timeouts on

    Random pauses of a few seconds between queries and a generous request timeout cost little and cut CAPTCHAs. Link-Assistant’s own help suggests a 90-second request timeout when working through proxies.

  7. Run 20 keywords and compare by hand

    Before a full run, check 20 keywords and compare three of them with a manual search in a private window set to the same country and language. If positions match within a place or two, start the full list.

A small rank checker in Python

This script keeps Google traffic inside a 10-thread budget, opens a fresh connection per search so each one leaves from a new IP, sets country and language explicitly, and backs off on 429s. The position parser is deliberately simple; Google’s markup changes, so check it against a saved results page before you trust it.

rank_check.py: 10 search threads through the Main gateway
import random, re, time, requests
from concurrent.futures import ThreadPoolExecutor
from urllib.parse import quote_plus

GATEWAY = "http://GATEWAY_IP:PORT"        # Main gateway, USA region
PROXIES = {"http": GATEWAY, "https": GATEWAY}
SEARCH_THREADS = 10                       # 40-thread plan -> a quarter for Google
MY_DOMAIN = "example.com"
HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                  "(KHTML, like Gecko) Chrome/130.0 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9",
    "Connection": "close",                # new tunnel = new exit IP
}

def position(html, domain):
    links = re.findall(r'<a href="(https?://[^"]+)"', html)
    links = [l for l in links if "google." not in l]
    for i, url in enumerate(links, 1):
        if domain in url:
            return i
    return None

def check(keyword, tries=3):
    url = f"https://www.google.com/search?q={quote_plus(keyword)}&hl=en&gl=us"
    for attempt in range(tries):
        time.sleep(random.uniform(3, 8))  # pause like a person would
        try:
            r = requests.get(url, headers=HEADERS, proxies=PROXIES, timeout=(10, 40))
        except requests.RequestException:
            continue
        if r.status_code == 429 or "unusual traffic" in r.text:
            time.sleep(30 * (attempt + 1)) # back off, retry on a new IP
            continue
        return keyword, position(r.text, MY_DOMAIN)
    return keyword, "failed"

keywords = [k.strip() for k in open("keywords.txt") if k.strip()]
with ThreadPoolExecutor(max_workers=SEARCH_THREADS) as pool:
    for kw, pos in pool.map(check, keywords):
        print(f"{kw}\t{pos}")

Datacenter or residential for rank tracking?

Most comparison pages say residential, full stop. The real answer depends on volume and on how you pace requests. Google treats any IP that sends many automated searches with suspicion; a home IP buys you more patience, not immunity.

Rotating datacenter (Main gateway) gives every search a different address from a pool of 700,000+ IPs. Because no IP repeats often, per-IP limits rarely build up, and the flat price means you can check deep result pages without watching a data meter. This is where most desktop trackers and custom scripts should start.

Residential ports give one home IP per port for 5 minutes, shared by every thread on that port. That’s great for trust, but it means repeat searches from the same address inside each window. Ten threads hammering one port send all their searches from one IP for 5 minutes. If you use residential for rank checks, keep one or two search threads per port and add ports rather than threads.

A practical rule: start on rotating proxies. Move to residential only if CAPTCHAs stay high after you’ve cut concurrency to the quarter budget and added pauses.

Worked sizing: from keyword list to plan

Throughput depends on how fast Google answers and how long you pause, so treat these as planning numbers you check on your own run. Assume each search thread finishes one query every 10 to 15 seconds including a random pause. That’s roughly 240 to 360 searches per thread per hour.

  • Freelancer, 300 keywords, Google USA, page one, daily: 300 searches. The 40-thread rotating plan gives 10 search threads; the run finishes in well under an hour, with 30 threads left for crawling or other tools.
  • Small agency, 2,000 keywords, two markets (USA and EU), top 30: 2,000 × 2 × 3 pages = 12,000 searches a day. With 10 threads that’s 3.5 to 5 hours. With the 80-thread plan (20 search threads) it’s around 2 hours. Pick 80 threads if the report must be ready by morning.
  • Agency, 10,000 keywords, daily, top 20: 20,000 searches. The 150-thread plan gives about 37 search threads, finishing in 2 to 3 hours. The 200-thread plan (50 search threads) gives headroom for retries.
  • Weekly tracking only: divide the daily count by seven and size for the day you run it, not for the week.

Need to test first? The 10-thread package allows 2 or 3 search threads, enough to confirm your tracker works with the gateway, not enough to run a real list. When the list grows, the member area lets you upgrade in one click; the unused part of the current plan is credited.

Getting the right location in your rankings

Two things decide which country’s results you see: the exit IP and the search’s own parameters. Storm gateways give you a USA, EU, USA+EU or Worldwide exit. Within that, you steer the market with the query itself. Google documents gl (the searcher’s country, a two-letter code) and hl (interface language) for its Custom Search API, and rank trackers commonly pass the same names on the regular search URL. Most trackers set them for you when you pick a country.

Match all three signals: an EU gateway, gl=de, hl=de and a German Accept-Language header if you track Germany. Mismatches (a USA IP asking for German results in English) give mixed pages that won’t match what real searchers see.

What Storm can’t do: pick a city or state. Local pack and map rankings change from one city to the next, and trackers that need an exit IP in a particular city need a provider that sells that. If your tracker emulates location through search parameters instead of the IP, a country-level gateway is usually enough.

Why your tracker and your browser disagree

A position that differs from what you see manually isn’t always a proxy problem. Your own browser is signed in, has search history and sits in your city. The tracker is anonymous and country-level. Check by hand in a private window, signed out, with the same country and language settings.

Also check page depth. If the tracker counts organic results only and you count ads, maps and “People also ask” boxes too, numbers drift by two or three places. And if Google answers with a page asking for JavaScript, a plain HTTP client sees no results at all. In that case switch to a headless browser such as Playwright and budget around 10 threads per open tab.

Other SEO jobs on the same plan

The same rotating plan can feed a site crawler like Screaming Frog, backlink checks or competitor scraping, as long as the total open connections stay within the plan and Google work stays inside its quarter. Run the rank check overnight and crawls during the day, and a single 80-thread plan can cover both.

Common errors and fixes

“Our systems have detected unusual traffic” or a CAPTCHA on most keywordsToo many simultaneous searches. Drop concurrency to a quarter of your threads or less, turn on random pauses, and make sure you’re on the Main gateway, not the 3-minute one.
Tracker marks every proxy as dead, but searches workBuilt-in checkers often expect the same IP twice in a row and get confused by a rotating gateway. Disable the tracker’s proxy checking and test with a single real search instead.
Every connection is reset immediatelyThe machine’s IP isn’t authorized yet, or you saved it less than 15 minutes ago. The gateway resets unauthorized connections instead of replying with a 407. Compare your public IP with the member area.
Rankings jump between two countries’ resultsYou’re on a USA+EU gateway, which mixes regions half and half. Switch to a single-region gateway and set gl and hl to match.
Run takes all dayToo few search threads for the list, or pauses set very long. Recount daily searches, then upgrade the plan or reduce how deep you check; don’t raise Google concurrency above the quarter rule.
429 Too Many Requests on retriesRetries fire too fast. Wait longer after each 429 and let the retry open a new connection so it leaves from a different IP.

FAQ

Do I need proxies for rank tracking?

For a handful of keywords checked occasionally, no. Once you check hundreds of keywords daily from one IP, Google starts showing CAPTCHAs or blocking the address for a while, and proxies spread that load.

How many proxies do I need for a rank tracker?

Count searches, not keywords. Roughly 240 to 360 searches per search thread per hour with pauses, and on Storm you use a quarter of your threads for Google. A 40-thread plan handles a few thousand searches a day.

Are residential proxies better for rank tracking?

They get more patience from Google per IP, but a residential port keeps one IP for 5 minutes, so concurrent searches share it. Rotating datacenter gives a new IP per search and is usually the better start for volume.

Can I track local rankings in a specific city with Storm?

No. Storm offers USA, EU, USA+EU and Worldwide, with no city or state targeting. Use your tracker’s location parameters, or a provider that sells IPs by city for map-pack work.

Can I use Storm proxies with a cloud rank tracking service?

Usually not. Rotating and residential plans authorize by IP, and cloud services connect from their own changing servers. Run a desktop tracker or a script on a machine with a fixed IP instead.

Does Storm offer a SERP API for rank tracking?

No. Storm sells proxies, not an API. You run the tracker or script; the gateway provides the IPs, with unlimited bandwidth on every plan.

Still have questions? Contact us here. A real person answers.

Related guides

Tool facts checked against the official documentation (October 2026): Rank Tracker help: Search Safety Settings · Link-Assistant: avoid temp blocks in rank tracking · Google Custom Search JSON API: gl and hl parameters · RFC 6585: 429 Too Many Requests. Storm Proxies facts: our plans page and refund policy.

Unlimited bandwidth. One flat monthly price.

Access is live the moment you pay, and the smallest package of each proxy type has a 24-hour money-back guarantee on your first order.