Dual Login
Guides

How to Scrape Ecommerce Sites at Scale Legally (2026 Guide)

Dual Login Team·2026-08-09·22 min read

How to Scrape Ecommerce Sites at Scale Legally (2026 Guide)

What actually makes ecommerce scraping legal, the rules that keep it that way, and how to build a block-resistant collection setup that scales.

How to Scrape Ecommerce Sites at Scale Legally (2026 Guide)

Every serious ecommerce operation scrapes. Price intelligence teams pull competitor prices four times a day. Brands monitor marketplaces for MAP violations and counterfeit listings. Aggregators track stock levels across two hundred stores. Agencies benchmark shipping costs and delivery promises for their clients. The demand side of this is completely mainstream — and yet ask three people whether it's legal and you'll get a shrug, a horror story, and a confident answer that's wrong.

The honest answer is that you can scrape ecommerce sites at scale legally, but 'legally' is not a switch you flip. It's a set of decisions: what you collect, where you collect it from, whether you were logged in, how hard you hit the servers, and what you do with the data afterwards. Get those decisions right and price monitoring is about as legally exciting as reading a newspaper. Get them wrong and you can wander into contract disputes, data-protection complaints, or — in the genuinely bad cases — computer-misuse territory.

This guide walks through the legal landscape as it stands in 2026, then gets into the part most legal explainers skip entirely: the engineering. Because the second problem with scraping ecommerce at scale isn't the law — it's that modern bot-detection stacks will shut down even a perfectly lawful crawler within minutes if it looks like one. We'll cover both halves.

One thing before we start: this is practitioner experience, not legal advice. If your project involves personal data at volume, logged-in collection, or a jurisdiction with aggressive computer-misuse statutes, spend an hour with an actual lawyer. It's the cheapest insurance you'll ever buy.

Dashboard of isolated browser profiles used to scrape ecommerce sites at scale legally with per-profile proxies

First, what 'legally' actually means here

When people ask whether scraping is legal, they're usually imagining one law with one answer. In reality, a scraping project touches at least four separate legal layers, and each one fails independently of the others.

Computer-misuse statutes. In the US that's the Computer Fraud and Abuse Act; the UK has the Computer Misuse Act, and most jurisdictions have an equivalent. These are the scary ones — they carry criminal penalties — but they're aimed at unauthorized access: breaking into systems, bypassing authentication, exceeding access you were granted. Reading a public product page is not that, and courts have increasingly said so.

Contract law. Every ecommerce site has terms of service, and most of them prohibit automated collection. Whether those terms bind you depends heavily on whether you actually agreed to them — which is why the logged-in/logged-out distinction matters so much (more on that below).

Data-protection law. The GDPR in Europe, CCPA/CPRA in California, and a growing family of lookalikes elsewhere. These don't care how you collected the data — they care that it's personal data. A price is not personal data. A review signed 'Sarah M., verified buyer, Manchester' arguably is.

Copyright and database rights. Product photos, long-form descriptions, and editorial content are copyrighted. The EU additionally has a sui generis database right that can protect substantial extractions from a curated database even when individual facts aren't protectable. Facts themselves — a price, a stock status, a star rating average — generally aren't copyrightable anywhere.

A project can be clean on three layers and fail on the fourth. That's the framing to hold onto: not 'is scraping legal' but 'which layer does my project touch, and what does that layer require.'

hiQ v. LinkedIn: what it settled, and what it really didn't

No scraping article is complete without hiQ Labs v. LinkedIn, but most of them get the lesson wrong. The Ninth Circuit held — twice, including after a trip to the Supreme Court — that scraping publicly accessible data likely does not violate the CFAA. Accessing a page anyone can view without logging in isn't 'unauthorized access' just because the site owner sent you a cease-and-desist. That was a genuinely important ruling, and it's the reason public-data scraping in the US sits on much firmer ground than it did a decade ago.

Here's the part that gets left out: hiQ still lost. The case ended in 2022 with a settlement after the district court found hiQ had breached LinkedIn's user agreement — because hiQ had also used fake accounts and logged-in access. The CFAA shield applied to the public data; the contract claim landed anyway.

The practical takeaway is a two-line rule that will serve you better than any blog post's confident verdict:

  • Public, logged-out data: the strongest legal position available. No authentication was bypassed, and it's very hard to argue you accepted terms you never clicked through.
  • Logged-in data: you clicked 'I agree' to create that account. The terms bind you, they almost certainly prohibit automated collection, and creating accounts specifically to scrape adds misrepresentation on top. This is where scraping projects actually get hurt.

Most ecommerce intelligence — prices, availability, rankings, shipping estimates, category structures — is fully visible logged out. That's not a coincidence; stores want that data indexed and compared. Structure your project around the logged-out surface and you've avoided the majority of the risk in one architectural decision.

A risk map by data type

Not all ecommerce data carries the same weight. Before writing a line of code, map what you're actually collecting against this table. It's the ten-minute exercise that determines whether your project is boring (good) or interesting (bad).

What you're collecting Legal exposure What to watch
Prices, stock status, shipping costs Low — public facts Rate limits and server load are your main obligation
Category structure, search rankings, best-seller lists Low EU database right if you extract a curated dataset wholesale
Product titles and spec tables Low–moderate Facts are fine; verbatim republication of long descriptions is copyright territory
Product images Moderate Copyrighted; analyzing internally differs from republishing
Reviews with usernames, photos, profiles Moderate–high Personal data under GDPR/CCPA — you need a lawful basis and a retention policy
Anything behind a login (wholesale prices, seller dashboards, member deals) High Contract breach at minimum; fake accounts make it worse
Data gated by paywalls or technical access controls you bypassed Highest This is where computer-misuse statutes actually apply. Don't.

Notice the gradient: it's not about how much you scrape, it's about what and from where. A billion price points collected politely from public pages is a lower-risk dataset than a thousand seller records pulled from behind a login.

The ground rules that keep you on the right side

These five rules are the operational core of scraping ecommerce sites at scale legally. They're not theoretical — each one maps to a way real projects have gotten into real trouble.

Read robots.txt like an engineer, not a lawyer

robots.txt is now formally specified in RFC 9309, and in most jurisdictions it is not, by itself, law. Ignoring it doesn't automatically make scraping illegal, and obeying it doesn't automatically make scraping legal. So why care?

Two reasons. First, it's evidence. If a dispute ever happens, 'we honored the site's published crawling preferences, respected Crawl-delay, and stayed out of disallowed paths' is the difference between looking like a professional operation and looking like a pest. Courts and regulators weigh conduct, and robots.txt compliance is the cheapest good conduct available. Second, it's intelligence: robots.txt tells you which paths the site considers sensitive and often reveals the crawl rate they can tolerate. Sites frequently disallow /cart, /checkout, and /account — paths you have no business crawling anyway — while leaving product and category pages open precisely because they want them crawled.

Parse it, honor it, log that you honored it. It costs you almost nothing.

The oldest scraping cases — eBay v. Bidder's Edge back in 2000 — weren't about data at all. They were trespass-to-chattels claims: the argument that a crawler consumed enough server resources to impair the service. That theory still breathes, and it's the one claim where your engineering is your defense.

Concretely: honor HTTP 429 responses and their Retry-After headers instead of retrying through them. Cap concurrent connections per domain — one to three is plenty for most monitoring jobs. Add jitter so your requests don't arrive in metronomic bursts. Crawl big catalogs during the site's off-peak hours. And scale politeness to the target: an enterprise marketplace won't notice your crawler, but a Shopify store run by two people absolutely will, and hammering it is both rude and the closest thing to a genuinely actionable harm a price scraper can commit.

A good internal benchmark: if your crawler's traffic would be invisible in the target's analytics next to their organic traffic, you're fine. If you'd be a visible spike, slow down.

Strip personal data, or justify keeping it

Prices aren't personal data. But ecommerce pages are littered with things that are: reviewer names, avatars, Q&A usernames, third-party seller names (which for sole traders are personal data), review photos with faces in them.

The clean solution is data minimisation, which is conveniently both a GDPR principle and good engineering: extract the fields you need — price, SKU, rating count, stock flag — and discard the rest at parse time. Don't warehouse raw HTML forever 'just in case.' If your use case genuinely requires review text or seller identities, then you're a data controller under GDPR: you need a lawful basis (usually legitimate interest, documented), a retention limit, and a way to handle deletion requests. That's all manageable — plenty of legitimate businesses do it — but it's a compliance workstream, not a footnote.

Know when you've actually agreed to the terms

Courts distinguish between clickwrap (you clicked 'I agree' — enforceable almost everywhere) and browsewrap (a terms link in the footer you never touched — enforceability is shaky and fact-dependent). Log in and you've clickwrapped. Browse a public page and you probably haven't.

This is the legal skeleton under the architectural advice above: keep collection on the logged-out surface and the contract layer mostly falls away. If your project truly requires logged-in access — say you're monitoring your own seller listings across accounts you legitimately operate — that's a different situation with different rules, closer to the multi-account management world covered in our Amazon seller account-ban playbook than to scraping proper.

Don't confuse 'looking like a normal user' with 'breaking in'

There's a line here worth drawing precisely, because it's the line between everything in this article and the stuff that gets prosecuted. Presenting a consistent, ordinary browser identity — real Chrome, coherent fingerprint, residential IP — so that anti-bot systems don't misclassify you while you read public pages is identity management. Bypassing authentication, exploiting an API to pull data the site never exposes publicly, sharing credentials you weren't issued, or circumventing a paywall is unauthorized access, and no amount of 'but the data was right there' fixes it.

An antidetect browser sits firmly on the first side of that line. It changes what your browser looks like; it doesn't grant access to anything. Keep your collection on pages any anonymous visitor can load, and the tool is doing exactly what a normal browser does — just consistently, and at scale.

Here's the uncomfortable symmetry at the heart of this topic: a site can block traffic it has no legal claim against, and being blocked doesn't mean you did anything wrong. Blocking is a business decision made by an algorithm; legality is a property of your conduct. The two are almost unrelated. Which means that after you've done everything above correctly, you still face the engineering problem — because ecommerce sites deploy some of the most aggressive bot detection on the web, protecting exactly the pricing data you're after.

Modern detection stacks (Akamai Bot Manager, DataDome, Kasada, and friends) score every visitor across several layers at once:

  • Network: IP reputation and ASN type. Datacenter ranges start every session in a hole; residential and mobile ranges start neutral.
  • TLS and HTTP: the handshake itself fingerprints your client. A Python requests script announces itself before the first byte of HTML arrives.
  • Browser fingerprint: canvas rendering, WebGL renderer strings, installed fonts, screen geometry, timezone, languages — combined into an identity that's checked for internal consistency. If you're new to this layer, our beginner's guide to browser fingerprinting covers it properly.
  • Automation tells: navigator.webdriver, CDP artifacts from attached DevTools sessions, missing plugin surfaces, input events that don't carry the 'trusted' flag real keyboards and mice produce.
  • Behavior: request cadence, mouse movement, scroll physics, the ratio of product pages to everything else.

The naive-headless death spiral

Every team that scales scraping without understanding the layer model runs the same script. Headless Chrome from a cloud box works for a week. Then challenges appear. They add a user-agent override — but the TLS fingerprint, missing fonts, and headless canvas output still scream automation, so now the inconsistency itself is the signal. They rotate datacenter IPs faster; the detection vendor has those ranges memorized, and each fresh IP now carries a session with no cookie history, which is its own red flag. Within a month the whole subnet is burned, block rates hit 80%, and the team concludes scraping is impossible.

Nothing in that spiral was a legal problem. All of it was an identity-coherence problem: fifty sessions that were each internally contradictory and collectively identical. The fix isn't more IPs — it's fewer, better identities. That inversion is the key insight for scale, and it's exactly what antidetect tooling exists for. If the concept is new to you, start with what an antidetect browser is and how it works.

An architecture that scales without melting

Here's the shape of a collection system that stays stable for months instead of weeks — the pattern that works whether you're monitoring two hundred SKUs or two hundred thousand.

Profiles, not threads

The unit of scale should be the browser profile: a real browser process with its own fingerprint, its own cookie jar and local storage, its own data directory, and its own proxy. Each profile is a coherent, persistent visitor — a device that plausibly exists, browsing the way a returning customer does.

This matters because detection systems reward history. A 'visitor' who appeared once, hit 400 product pages, and vanished is suspicious. A visitor whose cookies show they were here Tuesday, who renders the same canvas hash as last time, and who browses a modest number of pages per session looks like the site's actual traffic. Persistence is camouflage. In Dual Login, each profile keeps its fingerprint applied natively inside the browser engine — not injected as JavaScript that detection scripts can probe for — and its session data survives across runs, so profile #14 on Tuesday is verifiably the same visitor it was on Monday.

Run a fleet of these — ten, fifty, a few hundred depending on your catalog size — and partition your target list across them. Each profile stays under polite per-identity volumes while the fleet covers the whole job.

Proxies: match the identity, not just the geography

Each profile needs its own IP, and for protected ecommerce targets that generally means residential proxies with sticky sessions — the same exit IP for the same profile across a session, ideally across days. Rotating a profile's IP every request breaks exactly the continuity you built the profile to create. Geo-matters too, and not just country: a profile whose fingerprint says America/Chicago timezone should exit through a US IP, and prices themselves vary by region, so your proxy placement is also your data-accuracy strategy. The full pairing logic — pool types, stickiness, cost math — is in our antidetect browser with residential proxies playbook.

One clarification that trips people up constantly: proxies affect deliverability, not legality. A VPN or proxy doesn't make lawful scraping unlawful or vice versa — it changes whether you get blocked, nothing more. (The antidetect-vs-VPN distinction is worth understanding if your team conflates the two.)

Automation without the automation tells

How you drive the browser matters as much as what the browser looks like. Standard automation frameworks leave detectable residue — the classic one being CDP Runtime instrumentation, which many detection scripts explicitly probe for. The stealthier pattern is driving via raw CDP domains that touch DOM and input without enabling the runtime instrumentation detectors look for, so clicks and keystrokes register as trusted events and navigator.webdriver stays false. Dual Login exposes its automation API this way by design: profiles launch clean with no automation banner and no webdriver flag, and you drive them over HTTP — navigate, click, type, screenshot, capture network — while the browser remains indistinguishable from a hand-operated one.

Operational discipline: the boring 20% that delivers 80% of uptime

  • Per-domain politeness budgets, enforced centrally, so no code path can accidentally hammer one target.
  • Jitter everywhere. Fixed intervals are a fingerprint. Humans don't check a price at :00 and :15.
  • Checkpoint and resume. A crawl of 100k SKUs will be interrupted. Restarting from zero doubles your traffic for no new data — an efficiency problem and a politeness problem at once.
  • Monitor block rate as an SLO. A climb from 2% to 10% challenges is your early warning that a fingerprint or pool has staled — respond by resting and refreshing the affected profiles (here's how fingerprint changes actually work), not by adding retries. Retrying into bl ocks is how a pool dies.
  • Cache and diff aggressively. If a product page's price hasn't moved in nine days, you don't need it hourly. Adaptive scheduling by observed volatility cuts request volume by more than half on most catalogs — cheaper, faster, and dramatically less conspicuous.

Check for an API before you build any of this

Genuinely: check first. Amazon has a Product Advertising API. Walmart, eBay, Shopify, BigCommerce and most major platforms have partner or affiliate APIs. Some retailers publish structured feeds for comparison engines. An API gives you a contract, structured data, no fingerprinting arms race, and zero legal ambiguity. The tradeoffs are real — coverage gaps, rate caps, approval hoops, and sometimes an API that conspicuously omits the field you care about — but the hybrid approach is often optimal: API for what it covers, browser collection for the gaps.

A worked example: multi-region price monitoring

Abstract advice is easy to nod at, so here's a concrete build. Say you're monitoring 5,000 SKUs across twelve retailers in four countries, refreshing daily, feeding a repricing engine.

Legal scoping. Every target page is public and logged-out. You collect SKU, title, price, currency, availability, shipping cost, and a timestamp. You explicitly discard reviews, seller names, and images at parse time — so there's no personal data in the pipeline and no copyright question. robots.txt is fetched and cached per domain, disallowed paths are excluded from the frontier, and both facts are logged with each run for auditability.

Profile fleet. Forty-eight profiles: twelve per country, each with a fingerprint coherent with its region — Windows and macOS in realistic proportions, locale and timezone matching the country, screen resolutions from actual popularity distributions. Each profile gets a sticky residential IP in its country. Fingerprints and cookie jars persist, so these are forty-eight returning visitors rather than forty-eight strangers.

Scheduling. 5,000 SKUs across 48 profiles is about 104 pages per profile per day — comfortably human. Spread over an 18-hour window with jitter, that's roughly one page every ten minutes per identity. No polite-traffic threshold anywhere on earth objects to that. Each profile works its own retailer/region slice consistently, so its browsing pattern makes sense: a US shopper looking at US stores, not one visitor hopping across four continents in an hour.

Volatility tiering. After two weeks of history, split the catalog: fast movers (electronics, promo-heavy categories) stay daily; stable items drop to every three days; long-tail items go weekly with an event-based bump if a competitor's page structure changes. Request volume falls ~55% with no loss of decision-relevant signal.

Health monitoring. Track per-profile block rate, challenge rate, and median response time. Any profile crossing 5% challenges is rested for 48 hours; crossing 15% gets a fresh fingerprint and a new IP. A retailer-wide climb means their vendor changed something — pause that retailer and investigate rather than burning the whole fleet against it.

Cost reality. Forty-eight profiles on a per-profile antidetect tool plus residential bandwidth for text-only pages (block images and media — it's faster, cheaper, and reduces load on the target) lands in the low hundreds per month. A managed scraping API for the same volume typically runs multiples of that. If budget is the deciding factor, our cheap antidetect browser guide for small teams and the Multilogin alternatives comparison both break down where the money actually goes.

Mistakes I keep seeing

Scaling before stabilising. Teams jump from three profiles to three hundred the week the pilot works. Every latent flaw — a shared fingerprint template, an unjittered scheduler, a missing 429 handler — multiplies simultaneously and the pool burns in days. Get 5 profiles to 99% success over two weeks. Then multiply.

Retrying into blocks. A 403 means the site made a judgment about you. Retrying immediately confirms it. Back off, rest the identity, and diagnose. Aggressive retry logic is the single fastest way to convert a soft challenge into a hard subnet ban.

One fingerprint, many profiles. If fifty profiles render an identical canvas hash from fifty different residential IPs, you haven't built fifty identities — you've built one identity with a proxy list, and correlating them is trivial. Every profile needs a genuinely distinct, internally consistent fingerprint. Distinctness without consistency is just as bad: a macOS user-agent shipping a Windows font list is a louder signal than no spoofing at all.

Warehousing raw HTML forever. It feels prudent and it's a compliance liability. Every page contains personal data you didn't need, under a retention period you never defined. Parse, extract, discard.

Ignoring the smallest targets. Enterprise marketplaces absorb your traffic invisibly. The independent store on shared hosting does not. Scale politeness to the target's size — it's both the decent thing and the only scenario where a price scraper plausibly causes measurable harm.

Assuming a block is a legal warning. It isn't. It's an algorithm's classification. Conversely, not being blocked doesn't mean you're compliant — you can breach GDPR beautifully at 100% success rate. Keep the two ledgers separate and audit both.

Building the compliance layer into the pipeline

If you take one structural idea from this article, make it this: encode your legal decisions as code, not as a policy document nobody reads.

Maintain a per-domain configuration record — the robots.txt snapshot and its fetch time, the allowed path patterns, the crawl-delay you're honoring, the field whitelist you extract, the retention period, and whether the target is public-only (it should be). Your crawler reads that record before every run. A field not on the whitelist doesn't get stored, so 'we accidentally warehoused reviewer names for nine months' becomes structurally impossible rather than a thing you hope nobody did.

Then log the evidence: run ID, target domain, request count, respected delay, robots.txt hash, non-200 responses, and the extraction schema version. If a complaint ever arrives, you can answer it in an afternoon with records instead of reconstructing intent from memory. In practice this is maybe two days of engineering, and it converts your legal position from an assertion into a demonstrable fact. Teams that do it sleep better; teams that don't eventually discover which one they were.

Worth noting too that the same isolation architecture serves multiple jobs. A profile fleet built for price collection is the same infrastructure that keeps marketing accounts separated or manages multiple seller identities — the mechanics of isolation don't change with the use case, only the volumes and the schedule do. That's the argument for a general-purpose profile manager over a single-purpose scraping service: one system, several problems. If you're comparing options, the best antidetect browser for multiple accounts roundup and our GoLogin vs AdsPower comparison both cover the field, and what to test during a free trial is the fastest way to evaluate any of them honestly.

FAQ

In most jurisdictions, collecting publicly visible prices from pages you can load without logging in sits on solid ground. Prices are facts, not copyrightable expression, and no authentication was bypassed. The complications come from elsewhere: a site's terms of service may prohibit it (enforceable mainly if you agreed to them by creating an account), and excessive request volume can support a claim that you impaired their service. Stay logged out, stay polite, and price monitoring is one of the lowest-risk data activities there is.

Does ignoring robots.txt make my scraping illegal?

Generally no — robots.txt is a voluntary standard (formalised in RFC 9309), not legislation, and ignoring it isn't a crime by itself. But it's the wrong question. robots.txt compliance is the cheapest evidence of good faith you can produce, and in any dispute the difference between 'we honored their published preferences' and 'we ignored them' is significant for how your conduct is judged. Honor it, log that you honored it, and treat the disallowed paths as a map of where not to go.

Can I scrape product reviews and customer names?

Technically yes; legally it's a different category of project. Reviewer names, avatars, profile links and review photos are personal data under GDPR and CCPA, which means you need a documented lawful basis, a retention limit, and a process for handling deletion requests. Review text may also carry copyright. If you only need sentiment or rating trends, aggregate at extraction time — store the average and the count, discard the identities — and you skip the entire compliance burden.

Why do I get blocked even when I'm scraping legally?

Because blocking is a technical classification, not a legal verdict. Detection systems score your IP reputation, TLS fingerprint, browser fingerprint, automation artifacts and behavioral patterns — none of which know or care whether your project is lawful. A headless browser on a datacenter IP fails that scoring instantly. Fixing it means presenting a coherent, persistent, ordinary browser identity per collection stream: a real engine, a consistent fingerprint, a residential IP, and human-scale pacing.

How many browser profiles do I need to scrape at scale?

Work backwards from politeness rather than forwards from ambition. Decide your maximum pages per identity per day (100–200 is comfortable for most targets), then divide your daily page requirement by that number. 5,000 pages a day at 100 per profile is 50 profiles. Then split by region, since each profile should exit through an IP matching its fingerprint's locale. Start with five, prove 99% success over two weeks, and only then scale — flaws multiply much faster than throughput does.

Using one is legal — it's a browser that manages its own identity, and it grants access to nothing you couldn't already load. What matters is what you do with it. Reading public pages while presenting a consistent browser identity so anti-bot systems don't misclassify you is identity management. Using it to operate fake accounts, bypass authentication, or defeat paywalls is a different act with different consequences, and the tool doesn't change that analysis either way. Keep collection on the public, logged-out surface and you're using it the way it's meant to be used.

Wrapping up

Scraping ecommerce sites at scale legally comes down to a handful of decisions that are mostly made before you write any code. Collect public, logged-out data. Strip personal data at extraction rather than warehousing it. Honor robots.txt and rate limits, and log that you did. Check whether an official API covers part of the job. Then solve the separate, purely technical problem of not being mistaken for the abusive traffic these defenses were built to stop — which means coherent, persistent, well-proxied browser identities rather than a bigger pile of headless workers.

The two problems are genuinely independent, and confusing them is why so many teams either over-worry about legality while burning IP pools, or engineer beautifully while quietly accumulating a data-protection problem. Handle them separately and both become tractable.

If the identity half is what's currently limiting you, that's the part Dual Login was built for: isolated profiles with native, internally consistent fingerprints, their own persistent data directories, per-profile proxies, and an automation API that drives real browsers without leaving automation fingerprints behind. Spin up a handful of profiles, point them at your actual targets, and watch your block rate for a week — that test will tell you more than any comparison chart. Try Dual Login and see what your success rate looks like when every collection stream has an identity that holds up.

Run every account like a separate device

Dual Login gives each profile a real fingerprint, its own proxy and sealed storage — free plan, no card required.