How the data is built
Insurers must publish what they have agreed to pay. They publish it as tens of terabytes of nested files, in different formats, with different units and provider references that lead nowhere on their own. Here is what we do to make those files comparable.
How a published file becomes a number you can use
Find the files
Each insurer publishes an index pointing at its rate files. We re-crawl those indexes every quarter rather than saving the locations, because they move without notice and routinely point at files that no longer exist.
Parse them
The files are compressed, deeply nested and usually larger than memory. We read them as a stream and flatten them into individual rates, batching by size rather than by file count.
Put units on the same footing
One insurer prices a drug per vial, another prices the same drug per milligram. We convert everything to a common unit using the official code description, because comparing a per-vial rate with a per-milligram rate is not a comparison.
Match rates to real providers
Files identify providers by reference numbers, not names. We match those against the national provider registry, so a rate belongs to a real provider in a real place. That is what makes state-level numbers mean anything.
Add something to compare against
We join on the Medicare allowed amount, the average sales price and ASP+6% for drugs, and what the drug costs to buy. A rate with nothing beside it cannot be judged.
Score the quality
Each result gets a 0 to 100 score based on how much data sits behind it, how spread out it is and how internally consistent it is, plus a flag for rates that look wrong. Our own published work uses 70 and above. Both columns ship so you can set your own floor.
Summarize
Individual rates are rolled up into ranges, with percentiles, the high-to-low spread, a rate count and a distinct provider count.
What we join on
Average sales price
Twenty years of quarterly CMS pricing. This is the basis for what Medicare pays for drugs given in a doctor’s office.
Medicare fee schedules
The physician fee schedule and hospital outpatient rates — the federal reference for both settings.
Drug acquisition cost
What pharmacies actually pay for the drug, which is what turns a rate into a margin.
National provider registry
Used to match rates to real providers and place them geographically.
Hospital cost reports and quality data
Background on the facilities behind a rate.
340B status
Whether a provider buys drugs at discounted federal prices, which changes the economics completely.
What this data cannot tell you
- A rate exists only where an insurer published one. A missing code means it was not disclosed, not that we failed to parse it.
- These are contracted rates, not what was actually paid on a claim. They tell you what was agreed, not what happened after deductibles, denials and adjustments.
- Insurers record the place of service inconsistently and some leave it out, which limits how finely settings can be split for those insurers.
- Some codes sit in a contract but are never billed by that provider. Provider counts and quality scores are how you spot them. We flag rather than delete, because whether to drop them is your call.
- Insurer names on multi-state files are still being verified. See coverage.
Read the columns alongside this
This page explains how a number got its value. The schema page tells you what every column is.