If you sell on Amazon, run a Shopify store, or operate a Buy Box repricer, you already know the drill: you need to know what your competitors are charging right now. Not last night's CSV. Not yesterday's API dump. The price three minutes ago, the stock count, the "ships in 2 days" badge, and the flash-sale countdown timer.
TL;DR: real mobile carrier IPs from paired Android phones rotate on demand, cost a fraction of residential proxies, and let a cart-flow scraper stay sticky across multiple steps — all managed from one panel with prepaid credit and no monthly fee.
The problem is that every serious e-commerce site fingerprints you the moment you start polling. Datacenter IPs hit a CAPTCHA wall on request three. Even "residential proxy" pools from the big providers are increasingly recognised and flagged. What still works in 2026: real mobile carrier IPs, rotated on demand, with sticky sessions when you need to walk a cart flow without losing state.
That is the workload Nodetonet was built for.
Why mobile carrier IPs beat residential for e-commerce scraping
The key is carrier-grade NAT (CGNAT). Mobile networks place thousands of real subscribers behind each public IP. A marketplace cannot ban "all of Turkcell" or "all of T-Mobile" without destroying traffic from genuine customers. So mobile IPs remain clean far longer than recycled residential pools, and a fresh one is a single airplane-mode toggle away.
Here is how the four proxy types compare for a price-monitoring workload:
| Proxy type | Block resistance on major marketplaces | Cost model | Sticky session support | Suitable for cart-flow scraping |
|---|---|---|---|---|
| Mobile (Nodetonet) | Highest — CGNAT shared with real users | Prepaid credit, no GB fee | Yes — username modifier or token group TTL | Yes |
| Residential | High, increasingly flagged | Per GB ($8–15) | Varies by provider | Yes, but expensive at scale |
| ISP / static residential | Medium — static IPs are fingerprintable | Per IP / month | Implicit (same IP always) | Partial |
| Datacenter | Low — ASN-blocked by most marketplaces | Per IP (cheapest) | Yes, but IP is distrusted | Only on unprotected targets |
The scale problem: 180,000 fetches a day
A competitor-price monitor for one mid-size catalogue — 5,000 SKUs, checked every 4 hours, against 6 competitors — is 180,000 page fetches a day. From a single static IP that is an instant ban. From a per-GB residential plan that could mean significant spend on bandwidth alone, and you still hit rate-limit walls because those IPs are recycled and burned.
Mobile carrier IPs sidestep this entirely. Pair two phones on unlimited SIM plans, group them into a rotating token group, and every request exits from a live carrier IP with no per-GB surcharge on the Nodetonet side. Read more about how rotation works in our guide to creating device pools with token groups.
How Nodetonet fits into a price-monitoring stack
Pair one or more Android phones to your Nodetonet account (the agent is a lightweight APK). Group them into a token group with rotation enabled. Point your scraper at the SOCKS5 or HTTP endpoint Nodetonet exposes. Every request goes out through one of your paired phones' mobile carrier IPs.
- Rotation modes: round-robin per request, per N requests, or time-based. Trigger a forced rotation via the REST API when a target returns a CAPTCHA. See round-robin device selection for the full mechanics.
- Sticky sessions: keyed by appending
-session-XXXXto the proxy username so a multi-step cart flow stays on the same IP for the full TTL. Full explanation in sticky sessions explained. - Geo and carrier targeting: use username modifiers to steer which carrier or city the exit IP belongs to — geo-targeting covers the full syntax. Useful when a marketplace shows different prices to Turkey vs international shoppers.
- Per-client controls: each scraper job can have its own proxy client with its own username/password, IP allowlist, domain restrict list, bandwidth quota and thread limit — so a test scraper can never flood production traffic.
- Upstream chaining: when you need geo coverage beyond your physical phones, chain an external residential provider. Nodetonet handles the rotation and sticky logic; the upstream supplies the geos. See upstream residential forwarding.
- Audit log: every request is logged with timestamp, target host, exit IP and byte count. When a stakeholder asks "which IP saw the $19.99 price?" you can answer in seconds using the dashboard or the REST API.
Step-by-step setup (5 steps)
- Create an account at /auth/register and top up a small amount of prepaid credit.
- Install the Nodetonet agent on one or more unlocked Android phones, or configure upstream-only mode if you prefer a cloud residential provider.
- Create a token group on the panel with rotation enabled. Set a sticky TTL matching your longest cart flow (e.g. 10 minutes).
- Create a proxy client bound to the token group. Copy the SOCKS5 or HTTP endpoint and the authentication credentials.
- Point your scraper at the endpoint. Monitor the audit log on the dashboard for any 4xx or 5xx spikes; use the proxy checker to confirm the exit IP at any time.
Code example — rotating session per product batch
Below is a minimal Python scraper that walks 500 product URLs, rotating IP every 50 requests but staying sticky within each batch. One consistent IP per batch means any given competitor site sees a believable, consistent client rather than a teleporting request pattern:
import uuid, requests
PROXY = "http://YOUR_TOKEN@gate.nodetonet.com:1080"
PRODUCTS = open("skus.txt").read().splitlines()
session_id = str(uuid.uuid4())
for i, url in enumerate(PRODUCTS):
if i % 50 == 0:
session_id = str(uuid.uuid4()) # force rotation
proxies_cfg = {"http": PROXY, "https": PROXY}
headers = {
"X-Session-Id": session_id,
"User-Agent": "Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36",
}
r = requests.get(url, proxies=proxies_cfg, headers=headers, timeout=20)
exit_ip = r.headers.get("x-nodetonet-exit-ip", "unknown")
print(url, r.status_code, exit_ip)
The x-nodetonet-exit-ip response header tells you which carrier IP fulfilled the request. Log it alongside the scraped price for a complete audit trail — so your data team can reproduce any observation and answer questions like "did the price spike correlate with a specific ISP range?"
For a deeper walk-through of building a scraper on Nodetonet, see setup rotating mobile proxy from scratch and how Nodetonet routes traffic.
Pricing for this workload
Nodetonet bills on prepaid credit with no monthly subscription and no per-GB bandwidth fee on the proxy side. You pay a small daily rate per active proxy, and idle proxies cost nothing. That means a two-proxy setup (one targeting Amazon, one targeting Shopify storefronts) costs very little per month regardless of how many gigabytes flow through it.
Compare that to a per-GB residential plan: for a 180k-request/day workload at roughly 32 KB per page, you are looking at significant monthly bandwidth spend. Pair two or three phones on unlimited cellular data plans and that line moves to near-zero. See pay-as-you-go pricing for a detailed breakdown of how Nodetonet credit works.
When this setup is not the right fit
- You need geo coverage far beyond your phones. Your paired phones are wherever they physically are. For IPs across 50+ countries, chain an upstream residential provider — Nodetonet supplies the rotation and sticky logic, the provider supplies the geos.
- The target has an official data API. If the retailer publishes an affiliate or product API, use it. Paying for carrier IPs to scrape what an API gives you for free makes no sense.
- You need very high request rates from a single pool. A small phone fleet tops out at a certain request rate. Past that, combine with upstream pools or add more devices.
Otherwise: this is one of the cheapest and most resilient ways to run a 24/7 competitor monitor. Start with one phone and one proxy — see how far you get before you need to scale. Questions? Find us on Discord and support.