Overview Datasets Pricing Get access Coverage Schema Methodology Trust FAQ
HomeDataMethodology
Methodology

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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

Read the columns alongside this

This page explains how a number got its value. The schema page tells you what every column is.

See every column