MIX-Basic
8,000 IPs · 500–900 threads
from $50 a month
One site, one check a day. Take it when you track hundreds of keywords and need the report by morning, not every hour.
MIX pools up to 25,000 IPs: each address carries a handful of queries a day, so the search engine never shows a captcha. Every proxy in the list has a country code, so you pull local SERPs from addresses in the target country. A test hour costs $1.

Pick a package, then move the period and thread sliders. A thread is one concurrent query to the search engine: a tracker with 200 threads pulls 200 result pages at once.
MIX-Basic covers one site: a few hundred keywords once a day in Google and Bing, down to the hundredth result. 8,000 addresses split the load so each IP sees a couple of queries a day. 500 threads to start; on periods from a week you can add them in fifties.
MIX-Business is built for an agency: a dozen projects, thousands of keywords, daily checks in two engines and several regions. 16,000 addresses leave headroom for the days when every client wants the report by morning. A thousand threads, expandable to 1,400.
MIX-Elite is made for SERP monitoring services: hourly checks, tens of thousands of keywords, the full top 100. 25,000 addresses and up to 9,900 threads: neither Basic nor Business comes close.
A thread is one simultaneous connection. More threads — more done in the same time.
$50 for a monthno extra charge for threads
save $250 vs. dailyA thread is one simultaneous connection. More threads — more done in the same time.
$100 for a monthno extra charge for threads
save $350 vs. dailyA thread is one simultaneous connection. More threads — more done in the same time.
$150 for a monthno extra charge for threads
save $450 vs. dailyYour server goes on a whitelist, and from then on the proxies answer it without any login or password. The list holds up to ten addresses.
The link returns plain text, each line holding the address and port of one proxy. The same URL ending in .csv returns the list with a country code on every address, which you need for local SERPs.
Key Collector and A-Parser re-read the list on their own, paste the URL in their proxy settings. If your tracker is home-grown, start from the Python example below.
That is 500 ports on Basic, 1,000 on Business, 1,500 on Elite. Every port is a separate proxy, and one query goes through one port.
In Google these are the gl and hl parameters, in Bing cc and setLang. Pick proxies from the target country via the CSV, and the SERP matches what a user there sees.
Google serves results only to a browser, so the example uses Playwright: the script takes a proxy from the list, opens the SERP for a region and looks for the domain among the results. Put the list URL from your dashboard in place of PROXY_LIST_URL_FROM_DASHBOARD.
# pip install requests playwright
# playwright install chromium
import random, time, requests
from urllib.parse import quote_plus, urlparse
from playwright.sync_api import sync_playwright
PROXY_LIST_URL = "PROXY_LIST_URL_FROM_DASHBOARD"
REFRESH_SEC = 600
DEPTH = 30
_pool, _loaded = [], 0
def pool():
global _pool, _loaded
if time.time() - _loaded > REFRESH_SEC:
text = requests.get(PROXY_LIST_URL, timeout=15).text
_pool = [line.strip() for line in text.splitlines() if ":" in line]
_loaded = time.time()
return _pool
def serp_links(browser, url, hl, tries=3):
for _ in range(tries):
proxy = random.choice(pool())
ctx = browser.new_context(proxy={"server": f"socks5://{proxy}"}, locale=hl)
try:
page = ctx.new_page()
page.goto(url, timeout=20000, wait_until="domcontentloaded")
if "/sorry/" in page.url:
continue
page.wait_for_selector("#search", timeout=10000)
return page.eval_on_selector_all("#search a[href^='http'] h3",
"els => els.map(e => e.closest('a').href)")
except Exception:
continue
finally:
ctx.close()
return []
def position(domain, query, gl="us", hl="en"):
hosts = []
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
for start in range(0, DEPTH, 10):
url = f"https://www.google.com/search?q={quote_plus(query)}&gl={gl}&hl={hl}&start={start}"
for link in serp_links(browser, url, hl):
host = urlparse(link).netloc.replace("www.", "")
if host and host not in hosts:
hosts.append(host)
if domain in hosts:
break
browser.close()
return hosts.index(domain) + 1 if domain in hosts else None
print(position("example.com", "buy proxies", gl="us", hl="en"))
8,000 IPs · 500–900 threads
from $50 a month
One site, one check a day. Take it when you track hundreds of keywords and need the report by morning, not every hour.
16,000 IPs · 1,000–1,400 threads
from $100 a month
A package for agencies: client projects, two search engines and several regions on one pool.
25,000 IPs · 1,500–9,900 threads
from $150 a month
A package for monitoring services: hourly checks, the full top 100 and threads up to 9,900.
import csv, io, requests
CSV_URL = "PROXY_LIST_URL_FROM_DASHBOARD.csv"
COUNTRIES = {"de", "fr"}
OUT_FILE = "proxies_de_fr.txt"
text = requests.get(CSV_URL, timeout=15).text
rows = csv.DictReader(io.StringIO(text), delimiter=";")
picked = [f"{r['ip']}:{r['port']}" for r in rows if r["country"].lower() in COUNTRIES]
with open(OUT_FILE, "w") as f:
f.write("\n".join(picked) + "\n")
print(f"{len(picked)} proxies saved to {OUT_FILE}")
Payment, protocols and limits are covered in the general FAQ, every package is on the home page.
An hour on the pool shows the captcha rate for your tracker, then choose a period. Packages from 3 days refund the unused time to your balance.
Test proxies for $1