Use case · Price monitoring
Monitor prices from inside each market.
Storefronts price by the visitor's country, sometimes by city. A monitor on one server reports one region's prices, then trips a per-IP limit halfway through the sweep. Put the market in the username, take a fresh ISP exit for every check, and pay by the gigabyte. A check is one compressed HTML response, so our lowest-priced pool carries most of the schedule.
Pay per GB · No subscription · Prices in EUR, excl. VAT
- ├─_country-de49.90 EURfree shipping−10% this week
- ├─_country-fr52.00 EUR+ 4.99 shipping
- ├─_country-it51.50 EUR+ 3.90 shipping
- ├─_country-es47.90 EURfree from 50.00bundle offer
- ├─_country-nl49.90 EURfree shipping
- ├─_country-gb42.00 GBP+ 3.95 shipping
- └─_country-us54.00 USD+ 6.00 shippingships in 5 days
- €0.75
- per GB on ARC Basic, excl. VAT
- €0.082
- per 1,000 checks at 120 KB — worked example below
- 185+
- countries, city targeting
- Never
- expires — buy for the peak season
The problem
Why the number from your server is the wrong number
A price check is a small request, and small requests fail quietly. These failures produce a wrong price rather than an error, which is worse: nothing alerts.
The storefront prices by the IP's country
Many storefronts resolve the visitor's country from the IP before they render a price: currency, whether tax is included, the local promotion, the shipping tier. A server in Frankfurt sees the German storefront and nothing else. The number you want is the one a shopper in the target market gets, so the request has to leave from that market.
Hosting ranges get a different page
Well-known datacenter ranges are often served a reduced page, a consent wall or a challenge instead of the product page. The parser finds no price, or finds a placeholder, and the run logs a 200. ISP and residential addresses are the ranges shoppers browse from.
A sweep from one IP trips a per-IP limit
Twenty thousand product pages from one address in an hour is exactly the pattern a rate limiter is built to notice. After the limit, every check returns an error page or an empty template until it resets. One new connection per check on a rotating username spreads the same sweep across many addresses, each making a handful of requests.
Shipping is computed for a location
Delivery cost and promised dates depend on where the visitor is, and often on a postcode entered one request earlier. That state lives in a session tied to one visitor, so rotating mid-flow resets it. Hold one exit for the flow with a sticky session, then let it go.
Paginated listings lose their place
Category walks, sort orders and filters are often bound to a session. When the exit changes between page 3 and page 4, some sites jump back to page 1 or reshuffle the order, and you double-count or skip products. Same fix: one IP per listing walk, a new one for the next.
Every check billed at residential rates
A compressed product page is tens to a few hundred kilobytes. Paying residential per-GB prices for all of them is the largest avoidable line in a monitoring budget. Run the schedule on the ISP pool and move only the domains that need residential exits.
Setup
Recommended setup
Run the whole schedule on ARC Basic, rotating, with the market in the username. Move a domain to ARC Fast only when ARC Basic's results for that domain stop being usable — and move that domain alone, not the schedule.
| Plan | Role | Session | Targeting | Price |
|---|---|---|---|---|
ARC Basic Rotating ISP | Default for the schedule HTML checks are small and frequent, which is what the ISP pool is priced for. One connection per check spreads a catalogue sweep across the pool. | Rotating, one connection per check | Country; city where prices differ inside a country | €0.75 / GB €0.59 at 1 TB (−21%) |
ARC Fast Rotating residential | Per-domain fallback For large marketplaces with strict rate limits. Move a domain when, over several days, its checks on ARC Basic keep ending in 403 or 429 responses, challenge pages, or a 200 with no price in it — not after one bad run. | Rotating; sticky for multi-page flows | Country, optionally city | €2.00 / GB €1.12 at 1 TB (−44%) |
ARC Ultra Premium residential | Only where it pays For the rare domain where ARC Fast still fails and the success rate is worth more than the price difference. Measure it per domain; most catalogue monitors never need it. | Rotating or sticky | Country, optionally city | €3.50 / GB €2.17 at 1 TB (−38%) |
http://USERNAME _pool-arc _country-de:PASSWORD@ proxy.arcproxies.io:8000http://USERNAME _pool-arcfast _country-de:PASSWORD@ proxy.arcproxies.io:8000Prices are list prices in EUR, excl. VAT. Volume discounts apply automatically at checkout — full ladder on the pricing page.
Sessions
Rotate by default. Hold an IP only for a flow.
Three usernames on the same plan and the same credentials cover a whole monitoring schedule. They differ only in whether a _session- handle is present and how many minutes it asks for.
Single product page
Rotating — no handle
Any check that stands on its own: a product page, a search result, a stock flag. No session token, so nothing is held. Each new connection can get a different exit and a reused one keeps its exit, so turn keep-alive off in your client and let every check open its own connection.
http://USERNAME _pool-arc _country-de:PASSWORD@ proxy.arcproxies.io:8000Paginated category listing
Sticky — one exit for the whole walk
Sort order, filters and the page counter are often bound to a session. Hold one IP from page 1 to the last page, then use a new handle for the next category. Any string works as a handle; _sesstime- is in minutes, and ten covers most walks.
http://USERNAME _pool-arc _country-de _session-k3f9a1x2 _sesstime-10:PASSWORD@ proxy.arcproxies.io:8000Shipping estimate by postcode
Sticky, short, city-targeted
The postcode form and the page that shows the estimate have to come from one visitor. Some storefronts also pre-select a delivery region from the IP, so a city token keeps the exit consistent with the postcode you enter. Five minutes is plenty for two or three requests.
http://USERNAME _pool-arc _country-gb _city-manchester _session-k3f9a1x2 _sesstime-5:PASSWORD@ proxy.arcproxies.io:8000Code
One snippet per tool
Each one uses the tool's documented proxy option, with the market in the username and keep-alive turned off where a sweep would otherwise reuse one exit. Replace USERNAME and PASSWORD with the credentials from your dashboard.
import httpx# {cc} is the market. No _session- token, so each new connection can get a# different exit in that country.BASIC = "http://USERNAME_pool-arc_country-{cc}:PASSWORD@proxy.arcproxies.io:8000"FAST = "http://USERNAME_pool-arcfast_country-{cc}:PASSWORD@proxy.arcproxies.io:8000"# Domains whose results on ARC Basic stopped being usable. Only these pay# the residential rate; everything else stays on the ISP pool.ON_FAST = {"marketplace.example"}# Keep-alive off: each check opens its own connection, so it can get its own exit.NO_REUSE = httpx.Limits(max_keepalive_connections=0)clients: dict[str, httpx.Client] = {}def fetch(url: str, cc: str) -> str: proxy = (FAST if httpx.URL(url).host in ON_FAST else BASIC).format(cc=cc) if proxy not in clients: clients[proxy] = httpx.Client(proxy=proxy, limits=NO_REUSE, timeout=20.0) r = clients[proxy].get(url) r.raise_for_status() return r.text # the document only — no images, scripts or fontsfor sku in ["4471", "4472", "4473"]: for cc in ["de", "fr", "it"]: html = fetch(f"https://shop.example/p/{sku}", cc) save(sku, cc, parse_price(html)) # your parserhttpx takes proxy= (the older proxies= argument is gone since 0.28). With requests, call requests.get(url, proxies={"http": proxy, "https": proxy}) without a Session: each call opens its own connection, and a proxy passed on the call is not overridden by HTTP_PROXY on the host.
Before you schedule
- Request the document only. The price is in the HTML; images, scripts and fonts are most of a page's weight.
- Ask for compression. The gateway meters the bytes that pass through it, and a gzipped page is a fraction of the raw HTML.
- One connection per check. A client that reuses connections reuses the exit IP with them.
- One _session- handle per listing walk or postcode flow; none for single pages.
- Log failures per domain. Move a domain to ARC Fast from that log, one at a time.
- Space checks out across the day rather than firing the whole catalogue at once.
The API reference covers endpoints, balance and usage per plan, so a scheduler can check what is left before a sweep.
Works with anything that takes a proxy URL
- Python requests / httpx
- Scrapy
- Node.js
- changedetection.io
- n8n
- curl
- Go net/http
Playwright
- Puppeteer
Illustration
What watching 5,000 products in 7 markets costs
An illustration with round numbers — your pages, payloads and retry rate will differ. The arithmetic is the real price ladder.
Assumptions
- Products watched
- 5,000
- Markets per product
- 7
- Checks per product and market, per day
- 4
- Per check, compressed, incl. handshake
- 120 KB
- Retries
- +10%
- Checks per month (30 days)
- 4,200,000
- Bandwidth per month
- ≈ 555 GB
On ARC Basic
€344.10per month, excl. VAT
555 GB bought in one purchase at €0.62 / GB (−17% volume rung, applied automatically).
The same 555 GB on ARC Fast: €654.90 at €1.18 / GB. Route only the jobs that need it through the pricier pool.
That is €0.082 per 1,000 checks on ARC Basic at this volume. The number to measure on your own runs is the bytes per check — it decides everything else. A storefront that serves its price from a public JSON endpoint can come in far under 120 KB; one that needs a rendered page costs many times more.
Bandwidth never expires, so a bigger single purchase is only ever cheaper per GB. See the ladder.
Calculator
Run it with your numbers
Same ladder as checkout, standing prices only. Retries are counted at +10%, a month as 30 days, and a check as one compressed HTML response on its own connection — no images, scripts or fonts.
Your schedule
- Checks per month
- 4,200,000
- Bandwidth per month
- ≈ 555 GB
Per month, excl. VAT
ARC Basic
Rotating ISP
€344.10/ month
- Per GB
- €0.62−17%
- Per 1,000 checks
- €0.082
- Bought as
- 555 GB, one purchase
ARC Fast
Rotating residential
€654.90/ month
- Per GB
- €1.18−41%
- Per 1,000 checks
- €0.156
- Bought as
- 555 GB, one purchase
Run the schedule on ARC Basic and route only the domains that need residential exits through ARC Fast — the real bill sits between the two columns, closer to the left one. Bandwidth never expires, so buying a season at once is only ever cheaper per GB. See the ladder.
FAQ
Price-monitoring questions
Something not covered? Write to contact@arcproxies.io.
Get started
Check prices from the markets you sell in.
Create an account, and code WELCOME15 takes 15% off your first bandwidth purchase, up to 25 GB. No subscription, no sales call, and the gigabytes never expire.
Related
Other things people route through ARC
Brand protection
Find counterfeit listings, unauthorised resellers and minimum-advertised-price violations that are only shown to consumer IPs in a given region.
Read moreTravel fares
Airline, hotel and rail fares change with the point of sale. Query each market from an IP inside it so the fare you store is the fare a traveller is quoted.
Read moreReviews & changes
Watch reviews, terms, stock and landing pages on a schedule, from the country the page is written for — and catch the change on the run it happens.
Read moreWeb scraping
A second provider that just works — Scrapy, requests, Crawlee or Playwright, self-serve, no sales call, bandwidth that never expires.
Read more