Use case · AI visibility
Proxies for AI visibility, market by market.
AI answer engines and search results are localised — by country, by language, sometimes by city, and by whether the request looks like a consumer connection. To measure what someone in Munich, Lyon or Manchester sees, the request has to leave from there: one residential IP per market, held for the whole run. Public, logged-out collection, billed per GB.
Pay per GB · No subscription · Prices in EUR, excl. VAT
USERNAME
Illustration. Prompts and positions are placeholders; the connection string for the Munich column is the real grammar.
- €2.00
- per GB on ARC Fast, excl. VAT
- −44%
- at 1 TB (€1.12 / GB)
- 185+
- countries, city targeting
- Never
- expires — bandwidth outlives the reporting cycle
The problem
Why one vantage point is not a measurement
None of these throw an error. The run completes, the report ships, and the numbers describe a place none of the client's customers are in.
One office IP is one sample
A run from your office or a cloud region measures one place, one language default, one set of local sources. Presenting it as the German view is an extrapolation, and a client who checks from Munich will notice the difference.
Datacenter ranges get a different page
Cloud address ranges are public and easy to classify. Many services answer them with a reduced page, a consent wall, a challenge or a rate limit. The stored answer is then one that no consumer was shown. A residential exit gets the page a person on a home connection gets.
The IP decides the language before your headers do
Locale, currency and the pool of local sources are often inferred from the exit address first. Leave from the wrong country and you collect the wrong language, the wrong sources and a different set of competing brands.
The follow-up lands on another IP
A tracking run is several requests: the load, the follow-up, the next page, the cited sources. If the exit rotates between them the service sees several visitors and the follow-up loses its context. A sticky session holds one IP for the run — 30 minutes or 6 hours, your call.
Cities are not countries
Local services, store availability, regional brands and anything phrased as “near me” differ between Munich and Hamburg. A country-level exit averages that away. On the residential pools the city is one more token in the username.
Monthly quotas punish a weekly job
Tracking is bursty: a run per week or per reporting cycle, then nothing. A quota that resets every month bills the idle days. Bandwidth here is bought once and used whenever, so a quarter of runs can come out of one purchase.
Setup
Recommended setup
Run every market on ARC Fast with its own sticky session for the length of the run, and a handle per prompt when prompts in one market run in parallel. Move the few services that fail there to ARC Ultra; add ARC Mobile when the carrier view is the deliverable.
| Plan | Role | Session | Targeting | Price |
|---|---|---|---|---|
ARC Fast Rotating residential | Default Residential exits in 185+ countries with city targeting, and the steepest volume ladder we sell. Nearly every visibility run lives here. | Sticky, 30 min per market and run | Country + city | €2.00 / GB €1.12 at 1 TB (−44%) |
ARC Ultra Premium residential | Escalation The premium residential pool, for the services where ARC Fast leaves gaps in the grid. It is the priciest of the three rotating pools, so route only those markets or targets through it. | Sticky, per market and run | Country + city | €3.50 / GB €2.17 at 1 TB (−38%) |
ARC Mobile Mobile 4G/5G | The carrier view Real 4G/5G carrier IPs, for the answer a consumer on a phone network gets. Exits in 4 countries, endpoints generated for you in the dashboard or over the API — nothing to compose. | Sticky, up to 60 min | Country (DE, GB, US, JP), no city | €3.50 / GB €3.15 at 1 TB (−10%) |
http://USERNAME _pool-arcfast _country-de _city-munich _session-k3f9a1x2 _sesstime-30:PASSWORD@ proxy.arcproxies.io:8000http://USERNAME _pool-arcultra _country-gb _city-manchester _session-c8r1t5ya _sesstime-30:PASSWORD@ proxy.arcproxies.io:8000Prices are list prices in EUR, excl. VAT. Volume discounts apply automatically at checkout — full ladder on the pricing page.
Grammar
A tracking run is a username
Every decision about a run — pool, market, city, how long one exit is held — is a token after your subuser. Nothing to register per market and no endpoint to request first.
USERNAMEYour subuser
From the dashboard, with its password. The password never changes; only what follows does.
_pool-arcfastThe pool
arcfast for ARC Fast, arcultra for ARC Ultra. Moving a market to the other pool is this one token.
_country-deThe market
Two-letter country code, lower case. One per market in the run.
_city-munichThe city
Name in lower case without spaces. Leave it out for a country-wide view.
_session-k3f9a1x2The run
Any handle you choose. Same handle, same exit IP; a new handle is a new exit.
_sesstime-30How long it holds
Minutes, best effort. Size it to your longest run with a margin.
Joined in this order, the six parts are the username for one market of one run. ARC Mobile has no username grammar — its endpoints are generated for you in the dashboard or with POST /proxies.
Code
One sticky session per market
Each snippet composes the market into the username and keeps the whole run on that exit. Replace USERNAME and PASSWORD with the credentials from your dashboard; everything after USERNAME is targeting.
import { chromium } from "playwright";import { appendFile } from "node:fs/promises";import { randomBytes } from "node:crypto";const SERVER = "http://proxy.arcproxies.io:8000";const PAGE = "https://example.com/"; // the public, logged-out page you trackconst MARKETS = [ { cc: "de", city: "munich" }, { cc: "fr", city: "lyon" }, { cc: "gb", city: "manchester" }, { cc: "us", city: "chicago" },];const browser = await chromium.launch();async function runMarket(m) { // One handle per market and run. Reuse it to come back to the same exit. const session = randomBytes(4).toString("hex"); // One context = one market = one residential exit, held for 30 minutes. const context = await browser.newContext({ proxy: { server: SERVER, username: `USERNAME_pool-arcfast_country-${m.cc}_city-${m.city}_session-${session}_sesstime-30`, password: "PASSWORD", }, }); // The answer is text. Images, fonts and media are only bandwidth. await context.route("**/*", (route) => ["image", "font", "media"].includes(route.request().resourceType()) ? route.abort() : route.continue() ); const page = await context.newPage(); // Record where this session actually exits, before collecting anything. const exit = await (await page.goto("https://ipinfo.io/json")).json(); await page.goto(PAGE); // …the follow-up, the next page: same context, same exit IP. const html = await page.content(); await appendFile("runs.jsonl", JSON.stringify({ market: m, session, exitIp: exit.ip, exitCountry: exit.country, // "DE" exitCity: exit.city, inMarket: exit.country?.toLowerCase() === m.cc, collectedAt: new Date().toISOString(), html, }) + "\n"); await context.close();}await Promise.all(MARKETS.map(runMarket)); // every market at onceawait browser.close();Per-context proxies let one browser hold every market at once: newContext({ proxy: { server, username, password } }); Python is the same object on browser.new_context(proxy=…). Routing turns off Playwright's HTTP cache, so measure a run with and without the image block before you pick one.
Before you ship
- One _session- handle per market per run, or per prompt when prompts run in parallel. Mint new handles each run unless you want the same exits back.
- Store the target market, the exit IP and its country with every answer. A result without its origin is an anecdote, not a measurement.
- Collect logged out. No accounts, no cookies carried across markets, and stay inside each service's terms.
- Block images, fonts and media when you render. The answer is text; the rest is bandwidth.
- Buy for the quarter, not the month. Bandwidth never expires, and the ladder rewards one bigger purchase.
For a one-off check, the dashboard generator builds the same strings without code — country, city, session length. API reference for the rest.
Works with anything that takes a proxy URL
Playwright
- Python requests / httpx
- Node.js
- n8n
- curl
- Puppeteer
Crawlee
Illustration
What tracking 500 prompts in 8 markets every week costs
An illustration with round numbers — your pages, payloads and retry rate will differ. The arithmetic is the real price ladder.
Assumptions
- Prompts tracked
- 500
- Markets per prompt
- 8
- Runs per prompt and market, per week
- 1
- Weeks per month
- 4.33 (52 ÷ 12)
- Page weight per run, images and fonts blocked
- 3 MB
- Bandwidth per month
- ≈ 52 GB
On ARC Fast
€87.36per month, excl. VAT
52 GB bought in one purchase at €1.68 / GB (−16% volume rung, applied automatically).
The same 52 GB on ARC Ultra: €156.52 at €3.01 / GB. Route only the jobs that need it through the pricier pool.
That is about €0.005 per prompt, market and run. Because bandwidth never expires, a quarter can be one purchase: 156 GB at €1.36 / GB is €212.16, against €262.08 for three monthly purchases. Measure the 3 MB on a week of your own runs before you size anything — a plain HTML fetch is a fraction of it, a page with images left on several times it.
Bandwidth never expires, so a bigger single purchase is only ever cheaper per GB. See the ladder.
FAQ
Visibility questions
Something not covered? Write to contact@arcproxies.io.
Get started
Measure AI answers from inside every market you track.
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
SEO & SERP
Collect search results the way a searcher in that city sees them — unpersonalised, per country and language, at a price per GB that survives daily runs.
Read moreAd verification
Confirm your creatives render where you paid for them, in the geo you bought, and that they are not sitting next to something that damages the brand.
Read moreLead generation
Build and refresh company and contact records from public directories, listings and company sites without your one office IP becoming the bottleneck.
Read moreMarket research
Sample what a market actually publishes — catalogues, forums, reviews and news — from inside that market, on a schedule you can repeat and defend.
Read more