Proxy-Cheap
Proxies & Business
August 28, 2026
7 min

The cost of poor data quality practices

Alex Sadovskij
Alex Sadovskij
CEO Proxy-Cheap
The cost of poor data quality practices
Summary
Poor data quality costs a quarter of firms over $5M a year: wasted engineer hours, wrong pricing, and lost revenue. See where the money actually goes.

Poor data quality costs organisations real money. Forrester found that more than a quarter lose over $5 million a year, and 7% lose $25 million or more. The bill lands as wasted engineer time, wrong pricing decisions, and lost revenue, and it runs highest when the data was already wrong before any warehouse saw it. Proxy-Cheap sees this from the collection layer, where the record goes wrong first.

  • Forrester found more than a quarter of organisations lose over USD 5 million a year to poor data quality, and 7% lose USD 25 million or more.
  • The USD 12.9 million figure most articles quote traces to a 2021 Gartner post whose original page no longer resolves. Gartner's current public guidance does not repeat it.
  • Four collection failures return HTTP 200 and still write a wrong value: wrong-market responses, truncated responses, edge-cached responses, and challenge pages parsed as content.
  • Cost per usable record is the collection metric that matters. Cost per gigabyte is not.

What poor data quality practices cost, by layer

Poor data quality practices cost money at two layers. The downstream layer is well documented: Forrester found more than a quarter of organisations lose over USD 5 million a year, and 7% lose USD 25 million or more. The upstream layer is not. When your data comes from the public web, the record is already wrong before it reaches a warehouse, and no downstream check will catch it.

That Forrester split is the freshest hard number on the table, and it is not the one the search results lead with.

Ownership has moved up the org chart, too. In IBM's 2025 CDO Study, 43% of chief operations officers named data quality issues as their most significant data priority, so this is an operations problem now, not just an IT one.

For most organisations, reliable data is a crucial input to strategy and strategic decisions, and low quality data quietly raises compliance risk while dragging on growth and performance.

Here is a provenance problem worth knowing before you quote a number. Most coverage of this topic opens with "Gartner: USD 12.9 million a year." That figure comes from a July 2021 Gartner post by senior director analyst Melody Chien.

The catch is that competing articles cite USD 12.9 million, USD 15 million, and USD 9.7 million against the same broad attribution, which is the first sign a number is not load-bearing. Gartner's live public material on the subject, the May 2023 release 12 actions to improve data quality, carries no per-organisation cost figure at all, and the 2021 page no longer resolves.

So the number is not wrong so much as old, unresolvable, and not the one to plan against. For the current hard figure, use Forrester's research on data quality losses instead.

The cost then splits cleanly into two layers. The warehouse layer is measured, tooled, and covered by every article in this space. The collection layer, where web data is gathered, is unmeasured and untooled, and it is the subject of the rest of this piece.

The four collection failures that pass every downstream check

Four collection-layer failures produce data that is technically valid and factually wrong: a response served for the wrong market, a response truncated mid-page, a cached response served from an edge node, and a challenge page parsed as content. Each returns HTTP 200. Each passes schema validation, null checks, and freshness checks. Each writes a plausible value into your dataset.

These four failures are why data collection workflows can report green while the numbers underneath are bad data. None of them errors. All of them lie.

The wrong-market response

The same URL returns different content by IP location: currency, price, availability, ranking, and copy all shift. A request sent from a datacenter in one country returns that country's version of the page. If your dataset is labelled as another market, every downstream number is inaccurate data and nothing flags it, because the response was a clean HTTP 200.

This is a location-accuracy problem, not an access problem. The control is direct: route the request through an IP in the market being measured. Residential proxies route traffic through consumer ISP networks for location-accurate collection, which is also the basis for verifying how a page renders in a given market.

The truncated response

Partial content returns parseable HTML that is missing the bottom of the page. The parser succeeds on the first N items and silently drops the rest, still on an HTTP 200.

Pagination and lazy-loaded sections make this systematic rather than random, so the same categories go missing every run. The symptom is record counts that look stable but are consistently short, with no error anywhere in the pipeline. That is incomplete data reported as a clean pull.

The edge-cached response

CDN edge nodes in different regions serve different cached versions, so your response may reflect the page as it was hours ago, again returned as HTTP 200. For any fast-moving field such as price, stock level, or availability, a cached response is a wrong response wearing a fresh timestamp, because the timestamp records when you fetched it, not when the source changed.

Here is the trap: freshness checks measure ingestion time. They cannot see source-change time, so data decay slips straight through.

The challenge page parsed as content

This is the most expensive of the four. The target returns a verification interstitial with HTTP 200, the parser extracts the interstitial's text, and the pipeline reports success. Downstream, a price field may end up holding text, a coerced zero, or a null that a default quietly fills.

In practice, most "my data looks wrong" reports trace back to one of these four modes, and this one hides the longest because the row looks populated. The control is to validate the response body against expected shape and range, not the status code.

The collection-layer cost ladder

The Collection-Layer Cost Ladder has four rungs: request, record, dataset, decision. A wrong response costs almost nothing at the request rung. Once it is written, it costs a review cycle. Once it is aggregated, it costs a rebuild plus every report already published from it. Once someone prices, buys, or ships against it, it costs whatever that decision was worth.

This ladder is our model, and it explains why the four failures above are so expensive. The cost climbs at each rung:

  1. Request. A wrong response costs only the bandwidth it consumed, a few cents. This is the only rung where the fix is cheap.
  2. Record. The value is written, so the cost becomes a data engineer's review cycle plus a re-collection run.
  3. Dataset. The value is aggregated, so the cost is a rebuild, a backfill, and the credibility of every report already published from that table.
  4. Decision. Someone priced, bought, forecast, or shipped against it, so the cost is whatever that strategic decision was worth. Here poor decision making and its consequences turn into lost revenue, missed sales opportunities, weaker competitive advantage, and a dent in the company's reputation.

The point is that the four collection failures are invisible at rung one, the only rung where they are cheap. They surface at rung three or four, if they surface at all.

That is what "shift left" means when your data comes off the public web: left of the pipeline is the request. Fixing quality there, before a wrong record reaches market research built on collected data, is the whole game.

How to price your own collection-layer data quality

Price your collection layer on cost per usable record, not cost per request. Take your monthly proxy spend, divide by the number of records that survive validation against the source, and compare that against the same figure for a different product type or market. A pool that costs less per gigabyte and more per usable record is the more expensive pool.

A usable record is one that survived a validation pass against the live source page, not one that merely got written.

The trap is that USD per gigabyte is the number providers compete on, us included, and it is the wrong number in isolation. Bandwidth spent on failed and wrong responses is still bandwidth billed. So run the arithmetic in a spreadsheet in five minutes.

InputHow to get itOutput
Monthly collection spendBilling dashboardSpend for the period
Records writtenPipeline row countCost per record written
Records passing source validationSample and re-verify N records against the live pageCost per usable record

The gap between the two output figures is the whole point. Pay-as-you-go is what makes this measurable at all: per-gigabyte metering on rotating products makes spend-per-market directly attributable, while per-IP monthly on static products makes it fixed and predictable.

From there, do not chase a benchmark for a good cost per usable record. Establish your own baseline, watch the trend, and treat any market whose figure drifts up as a signal. If bandwidth is the bottleneck, unlimited bandwidth proxies change the arithmetic for high-volume price monitoring across markets.

How to fix data quality at the collection layer

Fix collection-layer data quality with three controls. Route each request through an IP in the market whose data you want, so the response you parse is the response a local user sees. Validate the response body, not just the status code. Match the product type to the target: rotating residential for high-volume market data, static residential or ISP for session-bound collection.

Here is what each control looks like in practice:

  1. Match the IP to the market. Rotating residential and rotating mobile support country, region, and city targeting, and static residential supports country and ISP targeting. If the dataset is labelled "DE pricing," the request should originate in DE. This is the single highest-leverage control, and it removes the wrong-market response entirely.
  2. Validate the response body. Assert on shape and range, not status. A price field should be numeric, positive, and inside a plausible band for the category, and a page under a given byte threshold is suspect. Text where a number belongs is a failed request that reported success, and catching it is the difference between accurate data and confident garbage.
  3. Match the product type to the target. Use the table below, and frame the choice on fit, not tier. Rotating residential proxies authenticate via username and password, optimised for high-volume rotation; for IP whitelist authentication, use the static residential proxies or datacenter lines. Datacenter IPv4 delivers high throughput for documentation crawls and unprotected public content, so it earns its place too.
Failure modeCollection-layer controlFit
Wrong-market responseCountry, region, or city targeting on the requestRotating residential; rotating mobile
Truncated responseResponse-size assertion plus pagination completeness checkAny; a stable session helps
Edge-cached responseFresh session per fetch; compare against a second exit IPRotating residential
Challenge page as contentResponse-body validation; consistent session identityStatic residential (ISP) for session-bound targets

For session-bound targets that must hold one identity, Proxy-Cheap's ISP proxy line keeps a fixed IP on pay-as-you-go or per-IP monthly billing with no monthly commitment. If you are still deciding, our guide to choosing a proxy for collection work maps each product type to a target class.

What counts as poor data quality

Poor data quality is data that does not meet the requirements of the operation using it. The standard dimensions are accuracy, completeness, timeliness, and consistency. A record can score well on all four and still be wrong, because those dimensions describe the record's shape, not its provenance. Web-collected data adds a fifth question: was this response the right response?

That fit-for-purpose definition is the consensus, and it holds. The four standard dimensions catch duplicate records, a stale row from a legacy system, or a value that contradicts its own table, and data engineers spend real resources on data observability tools to flag those data inaccuracies across datasets.

What they cannot catch, though, is a clean, consistent, well-shaped record that came from the wrong response. That is why provenance is the missing dimension for anyone collecting from the web. For the infrastructure side of that gap, our datacenter proxy provider comparison covers where high-throughput collection fits.

How the standard cost models measure data quality

Standard cost models measure detection and repair time. Monte Carlo's data downtime formula multiplies the number of incidents by mean time to detection plus mean time to resolution. It is a sound model with one assumption baked in: that the incident starts inside your pipeline. For web-collected data, the incident starts at the request, which no pipeline metric observes.

Written out, data downtime equals the number of incidents multiplied by mean time to detection plus mean time to resolution. Monte Carlo pairs it with an estimate that data teams spend 30% to 40% of their time handling data quality issues instead of revenue work.

To be fair, the model is correct for warehouse-origin defects; the limitation is scope, not rigour. What mean time to detection cannot see is a defect that never becomes an incident, because nothing ever errored.

A wrong-market price that parses cleanly is exactly that: one of many data incidents with no detection event, so the average time to detect it never starts counting, and it sits in your analytics as an incorrect value with full confidence attached.

Frequently Asked Questions

Both, but the split matters. At the warehouse it is mostly process: ownership, definitions, and validation discipline. At the collection layer it is mostly configuration: which IP, which market, which validation rule. Fixing one does nothing for the other.

A 200 confirms a response arrived, not that it is the response you asked for. A wrong-market page, a truncated page, an edge-cached page, and a challenge page can all return 200. Correctness is a question about the body, not the status line.

Fetch the same URL through an IP in the target market and diff the two. If currency, price, or availability differ, the label on your dataset is wrong, not the page. This is the fastest check you can run, and it needs one geo-specific request.

Rarely, by design. Data observability monitors what enters the warehouse against what entered it before, so a consistently wrong input looks perfectly stable. The tooling is watching the wrong side of the pipeline for this class of defect.

There is no universal answer. Sample continuously rather than auditing occasionally, because these failures are drift, not events. A small, constant re-verification against live data sources catches slow decay long before a quarterly audit would.

It is a question of fit, not tier. Rotating residential suits broad market data across many geographies, while static residential or ISP suits session-bound targets that must hold one identity. The most accurate type is the one that matches the target, not the one with the highest label.

No, not on its own. More IPs in the wrong market simply produce more wrong records faster. Targeting beats volume every time, so a correctly located pool beats a larger misplaced one for high quality data.

Cost per usable record. It folds spend, yield, and correctness into one number, and it moves the moment collection quality slips. Good data creates insights your customers can trust; without that metric, reliable reporting is close to impossible.

They shorten the ladder. A model or an agent consumes the record and acts on it, so the record rung and the decision rung collapse into a single step. AI systems built on flawed data reach a poor decision faster and with more confidence, which is why AI initiatives raise the stakes on collection quality.

Yes, whenever the cheap gigabyte returns fewer usable records. A pool that looks affordable per gigabyte can cost more per usable record once failed and wrong responses are counted. Price the output, not the input.