Content scrapers: how to spot and slow them down safely
Scrapers fetch your pages in bulk to reuse what is on them: catalogue data, prices, listings, articles, anything that took effort to produce. The requests are ordinary and the traffic often modest, so the cost appears somewhere other than an availability graph. What separates a scraper from a crawler you want is not the fetching but everything around it.
Quick facts
- What it takes
- Content, catalogue data, prices, structure
- Typical volume
- Modest per source; breadth matters more than rate
- In your logs
- Systematic path coverage, no assets, no session behaviour
- Cost of blocking wrongly
- High: aggregators, partners, and preview fetchers look identical
How it differs from a crawler you want
Four behavioural differences, none of which depends on what the client calls itself.
It fetches only what it wants to keep. A browser loads a page and its assets. A crawler that renders behaves similarly. A scraper takes the document and nothing else, because images and stylesheets are cost without value to it.
Its coverage is systematic where a crawler's is interest-driven. Walking identifiers in order, exhausting a category, or requesting pages in the sequence a database would produce rather than the sequence links suggest.
It ignores what you published as limits. Instructions for cooperative crawlers are followed by cooperative crawlers, which is precisely the population that was never the problem, as covered on blocking.
It cannot be verified. Legitimate crawlers offer a way to confirm they are who they claim, and that verification is a property of the operator rather than a header. Automation with no verifiable identity is not automatically hostile, but it also has no claim on the access you grant to identified crawlers.
The catalogue of automation that identifies itself and can be verified, including the crawlers that read sites for search and answer engines, is maintained on the main site of this network.
Where the cost lands
Your capacity, in proportion to how expensive your pages are. A catalogue that assembles from a database is far more costly to serve at scale than a static article.
Your position in search results. A copy of your content competes with you wherever it is published. Whether a copy ever outranks an original depends on many things outside this page, and the honest claim is narrower than the usual scare: the copy exists, it is indexed, and it did not cost its publisher anything to produce.
Your commercial position. Where the data is prices or inventory, the value is in its freshness, and continuous copying transfers exactly that.
Recognising it
Three patterns, and the third is the most reliable.
Coverage without depth. Many distinct pages, each fetched once, with no returning visits and no interest in anything interactive.
Requests for what nobody links to. Pages reachable only by constructing a path, or by reading a machine-readable index of your site, and never reached by a person browsing.
Cost concentrated in one client. The measurement that does not require guessing intent: a single source consuming a share of your rendering budget unlike any plausible visitor.
Blocking without breaking things
Responses in order of severity, following the ladder on blocking.
Limit by cost, not by request count. Expensive pages deserve tighter allowances, which throttles bulk copying while leaving ordinary browsing untouched.
Degrade rather than refuse. Serving a cached version, a smaller page, or results without the expensive parts removes most of the value to a copier and remains usable for a misclassified visitor.
Challenge on the paths that matter. Catalogue and listing pages rather than the whole site, so the cost falls where the value is.
Require identity for bulk access, and offer it. Where the data has legitimate demand, an interface with a key is cheaper for both sides than an arms race, and it converts an adversary into something you can rate limit by account.
Legal avenues exist and are outside what this page can advise on: what protection applies to your material, and what your terms permit, depends on your jurisdiction and on the nature of the content. That is a question for a lawyer, best asked before an incident rather than during one.
False positives: who else looks exactly like this
The obligatory section, and on this page it is the longest one for a reason: the lookalikes are numerous and several of them are commercially important to you.
Aggregators and comparison services fetch catalogues systematically because that is their function, and many of them send you customers.
Partners under contract. Integrations you agreed to, often built years ago by someone who has left, calling you from infrastructure with no identifying credential.
Preview fetchers. When someone shares your link in a chat application or a social platform, something fetches the page to build the preview. Blocking those makes your links look broken wherever they are shared, and nothing in your logs connects the two.
Archives and research. Preservation projects and academic crawlers, which are systematic by design.
Feed readers and accessibility tools, which fetch documents without assets for entirely legitimate reasons.
The practical protection is the one from the mother page: know which automation you expect, give it identity where you can, and prefer measures that slow rather than refuse. A blocked aggregator does not complain; it simply stops sending you customers, and you will attribute the decline to something else.
Handling this as part of the stack
Bridge WAF applies rate limiting per domain, which bounds what a domain as a whole will serve: bulk copying that pushes past the limit is refused at the edge rather than served by your application, and monitor mode records what a limit would have refused before it refuses anything. What no product decides is which copying you mind: a comparison service and a competitor scraping prices produce identical traffic and opposite business outcomes. See what the platform offers at Bridge CDN.
Questions
What is a content scraper?
Automation that fetches pages in bulk in order to reuse what is on them, rather than to index them or to present them to a reader. The mechanism is identical to a search crawler's; the purpose is what differs, and purpose is not visible in a request.
How do I tell a scraper from a search crawler?
By two things that a claim alone cannot supply: whether the client can be confirmed as who it says it is by a method the sender does not control, and whether its behaviour matches a crawler's rather than systematic bulk copying of everything in order.
Does robots.txt stop scrapers?
No, on the same grounds as everywhere else: it is honoured only by automation that chooses to honour it. Something built specifically to copy your content has no reason to be in that category, and nothing enforces the file's contents.
Will scraped copies hurt my search position?
A copy competes with you wherever it is published, which is a real effect you can observe. Anything beyond that about how search engines treat duplicates is a claim requiring a citation to their own documentation, and this page does not make one.
What is the safest response?
Limits weighted by what each request costs you, together with reduced responses rather than outright refusals. Blocking risks catching link preview fetchers, aggregators, and archive services, all of which resemble scrapers closely and are frequently the traffic you actually wanted to receive.
Should I offer the data through an interface instead?
Where the demand is legitimate, this is often the strongest answer available. It converts anonymous copying into identified access that can be limited per account, revoked individually, and measured, which is a better position than any detection arrangement is able to reach.
Cost-weighted limits at the edge, with exemptions for automation you identify. Which copying you mind is not a product decision.
off
Nothing is limited and nothing is recorded.
monitor
Which clients a cost-weighted limit would have caught, before an aggregator finds out the hard way.
block
Bulk copying is slowed at the edge rather than served by your application.
The firewall layer is included with Bridge CDN. Start in monitor: nothing is refused until you decide it should be.
Get started