MIX-Basic
8,000 IPs · 500–900 threads
from $50 a month
One store, one run a day. Take it when you track thousands of pages and need the report by morning.
MIX pools up to 25,000 IPs and unlimited traffic: pull prices from marketplaces and competitor stores every hour if you like, product pages never run into a volume cap. A country code on every address gives you regional prices. A test hour costs $1.

Pick a package, then move the period and thread sliders. A thread is one product page your monitor is downloading at this moment: 500 threads means 500 pages at once.
MIX-Basic covers one store or one category: a few thousand product pages once a day on Amazon, eBay, Walmart or a couple of competitors. 8,000 addresses split the requests so each IP fetches a handful of pages a day and the storefront's anti-bot stays quiet. The package holds 500 threads, and on periods from a week you can buy more in batches of 50.
MIX-Business is built for a service or an analytics team: tens of thousands of pages, several marketplaces, two or three runs a day. 16,000 addresses carry the load on sale days, when prices change every hour and you need to pull more often. A thousand threads in the base, 1,400 at the top with add-ons.
MIX-Elite is made for repricing and scheduled runs every 15 minutes: hundreds of thousands of pages, full competitor catalogues, prices by country. This is the largest pool, 25,000 addresses, and the only package where threads go up to 9,900.
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. dailyThe whitelist opens access to the server itself: there is no login or password for the monitor to enter. Up to ten addresses fit on the list.
The response is plain text: address and port, one proxy per line. The same URL ending in .csv returns the list with a country code on every address, which you need when prices depend on the region.
A-Parser, ZennoPoster and most price scrapers accept a list by URL and re-read it on their own. A monitor of your own in Python starts from the example below.
Basic gives you 500 ports, Business 1,000, Elite 1,500. Every port is a separate proxy, and one product page downloads through one port.
Most storefronts keep the price in schema.org data inside the HTML, so one product page is one request with no images or scripts. The script below reads it from there.
This is how prices are pulled from Python. The script reads product URLs from products.txt, fetches each page through a random proxy from the list, extracts the price from the schema.org markup and appends a line to prices.csv. Swap PROXY_LIST_URL_FROM_DASHBOARD for the URL from your dashboard and leave the rest alone.
# pip install requests[socks]
import json, random, re, time, requests
PROXY_LIST_URL = "PROXY_LIST_URL_FROM_DASHBOARD"
REFRESH_SEC = 600
HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9"}
_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 fetch(url, tries=3):
for _ in range(tries):
proxy = random.choice(pool())
try:
r = requests.get(url, headers=HEADERS, timeout=15,
proxies={"http": f"socks5h://{proxy}", "https": f"socks5h://{proxy}"})
if r.status_code == 200:
return r.text
except requests.RequestException:
pass
time.sleep(2)
return ""
def offers(node, currency=""):
if isinstance(node, dict):
currency = node.get("priceCurrency", currency)
if "price" in node:
yield node["price"], currency
for value in node.values():
yield from offers(value, currency)
elif isinstance(node, list):
for item in node:
yield from offers(item, currency)
def price(html):
for block in re.findall(r'<script[^>]*type="application/ld\+json"[^>]*>(.*?)</script>', html, re.S):
try:
data = json.loads(block)
except ValueError:
continue
for value, currency in offers(data):
return str(value), currency
return "", ""
with open("prices.csv", "a") as out:
for url in open("products.txt"):
url = url.strip()
if url:
value, currency = price(fetch(url))
out.write(f"{int(time.time())};{url};{value};{currency}\n")
print(url, value, currency)
8,000 IPs · 500–900 threads
from $50 a month
One store, one run a day. Take it when you track thousands of pages and need the report by morning.
16,000 IPs · 1,000–1,400 threads
from $100 a month
A package for analysts and services: several marketplaces, tens of thousands of pages, several runs a day.
25,000 IPs · 1,500–9,900 threads
from $150 a month
A package for repricing: whole catalogues, a run every 15 minutes, threads up to 9,900.
import csv, io, requests
CSV_URL = "PROXY_LIST_URL_FROM_DASHBOARD.csv"
COUNTRIES = {"us", "gb"}
OUT_FILE = "proxies_us_gb.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}")
General questions about the service are answered in the general FAQ, the full plan grid is on the home page.
One hour shows how many pages a day your monitor pulls without captchas. Choose the period after that; on packages from 3 days the unused remainder comes back.
Test proxies for $1