Contracted Rates by Provider
What one named practice is contracted for, with which insurers, at what rates — down to the plan.
The whole contract stack for a named practice: identity, the insurers it works with, the plans underneath them, and the rate on every code — with Medicare volume alongside so you can see which lines are real.
Buy the slice you need
You do not have to take the whole grid. Every slice is the same columns, the same quality gates and the same quarterly refresh over less of it — and slices stack, so nothing is ever bought twice.
One specialty, nationally
All providers in a specialty — infusion centres, retina, oncology.
What is in it
- Provider identity resolved end to end — 18.6 million tax-ID-to-provider links across 890,761 practices, with 1.47 million alternate names collapsed so one practice is one row
- A flag for aggregator tax IDs, so a billing company is never mistaken for a practice
- Every insurer and plan that practice holds a published contract with
- The negotiated rate on every code under each of those contracts, with the rate type and arrangement carried alongside
- Medicare volume for the same provider and code, so a contract line with no activity behind it is visible
- 340B status, specialty, metro and health system affiliation
Questions it answers
- We are buying this infusion group. What are its contracted rates, and how do they compare with the market?
- Which practices in this metro have the strongest commercial contracts for our drug?
- Our own contracts — where are we below what comparable practices in the same market get?
What it does not do
It shows what a practice is contracted for, not what it billed or was paid. Medicare volume is there as a reality check on the contract, not as revenue.
We can tell you what a practice bills Medicare. We cannot tell you its commercial volume, because no public file discloses it. Treat it as a floor and a sanity check, not a market share.
Rates summarised by insurer, state and code are in Specialty Drug Rates at a fifth of the price.
Who buys this
- Investors and corporate development teams valuing a practice or a platform
- Practice and health system leaders benchmarking their own contracts against comparable groups
- Manufacturers mapping which practices in a market have the contracts to support their drug
Why it is worth the money
It answers the diligence question directly
When someone is buying a practice, the question is always what its contracts are worth. This is that question as a table rather than a four-week consulting engagement.
Plan level, not just insurer level
A practice can hold very different rates across one insurer’s PPO, HMO and exchange products. Rolling them into a single insurer rate hides the thing you are trying to see.
Ghost contract lines are marked, not hidden
Published research found the median insurer file is 95.7% provider and code pairs nobody would ever bill. Matching each line against observed Medicare volume is what separates a real contract from filing noise.
One name per practice
Group practices file under many spellings and several tax IDs. Normalizing that is most of the work in making provider data joinable to anything you already have.
What a row looks like
Real rows from the current build, in the shape this dataset ships.
| Insurer | State | Rates | p10 | Median | p90 | Quality | Flagged |
|---|---|---|---|---|---|---|---|
| uhc | NY | 6,221 | $23.36 | $33.23 | $54.72 | 72.5 | no |
| uhc | CA | 6,092 | $25.52 | $34.83 | $64.87 | 72.5 | no |
| uhc | FL | 5,923 | $24.03 | $32.99 | $58.86 | 72.5 | no |
| aetna | FL | 5,611 | $30.03 | $1,591.69 | $4,227.98 | 65.0 | yes |
| uhc | TX | 5,472 | $24.41 | $33.22 | $57.82 | 72.5 | no |
| aetna | CA | 5,329 | $31.64 | $1,654.20 | $4,295.29 | 65.0 | yes |
The columns
Published in full, before you talk to anyone. Whether this fits your model is a technical question and you should be able to answer it yourself.
rate_intel
Specialty and infusion rates at tax-ID level, with the ghost count, the confidence interval and the federal benchmark already on every row. This is the production table, column for column.
Key vintage × payer × state × billing_code × billing_code_modifier × billing_class × tin
| Column | Type | What it is |
|---|---|---|
vintage key |
TEXT | Which quarterly build the row belongs to. Current is 2026-Q2-06. |
payer key |
TEXT | The insurer the rate is attributed to. |
src_payer |
TEXT | The file it came out of. Kept because one insurer’s file can carry rates for several. |
state key |
TEXT | Two-letter state. |
billing_code key |
TEXT | HCPCS or CPT. |
billing_code_modifier key |
TEXT | Part of the key. Averaging across modifiers gives a wrong number that looks right. |
service_code |
TEXT | Place-of-service grouping as the insurer filed it. |
billing_class key |
TEXT | professional or institutional. |
negotiated_type |
TEXT | negotiated, fee schedule, derived, or blank. |
tin key |
TEXT | Tax ID. This is what makes the table entity-level rather than market-level. |
n_obs |
BIGINT | Observations behind the row after filtering. |
n_raw |
BIGINT | Observations before filtering. |
n_ghost |
BIGINT | How many were ghost rates — codes that provider would never bill. Counted, not silently dropped. |
n_unit_uncertain |
BIGINT | Rows whose billing unit could not be resolved. Per-vial against per-milligram lives here. |
rate_raw |
DOUBLE | Before unit normalization. |
rate_final |
DOUBLE | After. This is the number to use. |
sd_used |
DOUBLE | Standard deviation behind the interval. |
ci_low |
DOUBLE | Lower bound of the confidence interval. |
ci_high |
DOUBLE | Upper bound. A wide interval is telling you something. |
veracity |
TEXT | measured where the rate is observed, otherwise how it was derived. |
proxy_source |
TEXT | What stood in when the rate was not directly observed. |
confidence |
DOUBLE | 0 to 1. Set your own floor; ours is high. |
medicare_bench |
DOUBLE | Medicare allowed for the same code and locality. |
asp_per_unit |
DOUBLE | CMS average sales price. Drugs only, null for procedures. |
asp_plus6 |
DOUBLE | ASP plus 6 percent, the federal drug benchmark. |
ratio_vs_medicare |
DOUBLE | The rate over the Medicare allowed amount. |
ratio_vs_asp6 |
DOUBLE | The rate over ASP+6%. Under 1 means commercial pays less than the federal benchmark. |
anchor_source |
TEXT | What the row was anchored against, usually medicare. |
triangulation |
TEXT | Whether independent sources agreed. |
practice
One row per tax ID, resolved to a single practice name. 890,761 practices.
Key tin
| Column | Type | What it is |
|---|---|---|
tin key |
TEXT | Tax ID. Joins to the rate tables. |
practice_name |
TEXT | One canonical name, chosen across every spelling that appears. |
city |
TEXT | Primary location. |
state |
TEXT | Primary state. |
n_states |
BIGINT | How many states the practice operates in. |
n_clinicians |
BIGINT | How many providers bill under this tax ID. |
max_payers |
BIGINT | The most insurers any one of its providers is contracted with. |
evidence |
BIGINT | How much evidence sits behind the resolution. |
is_aggregator |
BOOLEAN | True for billing companies and management groups. Without this a biller looks like a practice. |
name_consensus |
DOUBLE | How strongly the sources agreed on the name. |
name_source |
TEXT | Where the chosen name came from. |
practice_member
Which providers bill under which tax ID, and which insurers each one is contracted with. 18.6 million links.
Key tin × npi
| Column | Type | What it is |
|---|---|---|
tin key |
TEXT | Tax ID. |
npi key |
TEXT | National Provider Identifier. |
n_payers |
BIGINT | How many insurers this provider is contracted with under this tax ID. |
payers |
TEXT | The insurers themselves, as a list. This is the answer to which insurers a practice accepts. |
Traps in this data, and how we handle them
These catch people out whoever they buy from. They are worth knowing before you model anything with rate or coverage data, including ours.
Provider references in the files are not names
Why it bitesInsurers identify providers by reference numbers that mean nothing outside their own file, and the same practice appears under several tax IDs and spellings.
How we handle itWe match references to the national provider registry and normalize to one practice name, and we ship the raw name beside it so you can audit the match rather than trust it.
A contract line is not evidence of activity
Why it bitesMost provider and code pairs in these files are lines nobody would ever bill. At the provider level that matters more than at the market level, because a single ghost line can misprice a whole practice.
How we handle itEvery row carries observed Medicare volume for that provider and code, plus a flag where there is none, so dead lines are visible before they reach a model.
Bundled and capitated arrangements are not unit rates
Why it bitesA practice paid under a bundle or a capitated arrangement has no meaningful per-code rate, and treating one as though it does produces a number that looks fine and is wrong.
How we handle itThe arrangement type travels with every row, and bundled and capitated rows are excluded from unit-rate comparisons rather than averaged in.
340B changes the economics completely
Why it bitesTwo practices with identical contracts can have entirely different drug margins if one buys at 340B prices.
How we handle it340B status is on every row, sourced from the federal covered entity file, so you are never comparing a 340B practice with a non-340B one by accident.
Provider data is a moving target
Why it bitesPractices are acquired, tax IDs change, clinicians move. A profile is accurate as of the build it came from.
How we handle itEvery row carries its build quarter, and the changelog records what moved between builds.
What to know before you buy
- This is the entity-level build and it is in development. The market-level rate datasets are available today; this one is not yet.
- Coverage follows the same insurer set as the rate datasets, so the same six groups are missing.
- Commercial volume is not available at any price, from anyone, because it is not disclosed. Only Medicare volume is observable.
This dataset is still in preview
Tell us what you need from it and we will tell you honestly where it is and when it lands.