Every column we sell
The complete column list for every dataset, taken from the production tables themselves rather than written up separately. Types and descriptions are what you would actually receive. Published up front, because whether this fits your model is a technical question and you should be able to answer it yourself.
Each table lists its key above the columns. Most trouble people hit with rate data comes from combining rows that should have stayed separate. In particular modifier is part of the key — averaging across modifiers gives you a number that looks fine and is wrong.
The tables
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. |
rate_market
Every billing code, summarised by insurer, state and billing class. Full percentile spread, hospital charges alongside, and a quality score on each row.
Key payer × state × billing_code × billing_class
| Column | Type | What it is |
|---|---|---|
payer key |
TEXT | The insurer. |
state key |
TEXT | Two-letter state. |
billing_code key |
TEXT | HCPCS or CPT. 353,270 distinct codes in the current build. |
billing_class key |
TEXT | professional or institutional. |
rate_count |
BIGINT | How many rates are behind the row. |
mean_rate |
DOUBLE | Arithmetic mean. |
median_rate |
DOUBLE | The middle rate. |
stddev_rate |
DOUBLE | Spread around the mean. |
p10 |
DOUBLE | 10 percent of rates fall below this. |
p25 |
DOUBLE | 25 percent fall below. |
p50 |
DOUBLE | The median again, as a percentile. |
p75 |
DOUBLE | 75 percent fall below. |
p90 |
DOUBLE | 90 percent fall below. |
min_rate |
DOUBLE | Lowest observed. |
max_rate |
DOUBLE | Highest observed. |
chargemaster_median |
DOUBLE | What hospitals list for the same code, from their published prices. |
chargemaster_gross |
DOUBLE | Gross charge before any discount. |
chargemaster_hospitals |
BIGINT | How many hospitals are behind that figure. |
medicare_rate |
DOUBLE | Medicare allowed. Currently populated for procedures, not yet for drug codes. |
medicare_ratio |
DOUBLE | The rate over Medicare. |
payers_with_code |
BIGINT | How many insurers publish anything for this code. A 1 here means no comparison exists. |
cross_payer_median |
DOUBLE | The median across every insurer, so you can place one against the market. |
volume_score |
DOUBLE | Component of the quality score — how much data sits behind it. |
payer_agree_score |
DOUBLE | Component — how closely insurers agree. |
chargemaster_score |
DOUBLE | Component — consistency against hospital charges. |
medicare_score |
DOUBLE | Component — plausibility against Medicare. |
confidence_score |
DOUBLE | 0 to 100, combining the four components above. |
outlier_flag |
BOOLEAN | Marks rows that look wrong. Shipped rather than deleted so you can see what we would have excluded. |
normalized_rate |
DOUBLE | The rate after unit correction, where one was applied. |
normalization_divisor |
DOUBLE | What it was divided by. |
normalization_ref_rate |
DOUBLE | The reference used. |
normalization_method |
TEXT | How it was corrected, e.g. asp_unit_correction for a per-vial filing. |
coverage_cell
One row per drug and insurer: whether prior authorization applies, what has to be tried first, which diagnoses are covered, and where the drug may be given.
Key payer_slug × drug × lob
| Column | Type | What it is |
|---|---|---|
payer_slug key |
TEXT | The insurer. Joins to the rate tables. |
drug key |
TEXT | Active ingredient. Coverage rules are written at this level, not at code level. |
lob key |
TEXT | Line of business, taken from the policy and never inferred. Every row in the current build is commercial; Medicare Advantage, Medicaid and exchange are the same column and are not yet populated. |
prior_auth_required |
BOOLEAN | Whether approval is needed before the drug is given. True on 81% of rows. |
preferred_products |
TEXT[] | What the insurer wants tried first. |
products |
JSONB | Product-level detail where the policy distinguishes brands or biosimilars. |
covered_dx |
JSONB | Covered diagnoses with their ICD-10 codes and any dose ceiling, keyed by indication. |
site_of_care |
JSONB | Whether a site-of-care program applies and what it says. |
citations |
JSONB | The quote behind each field, so any value can be traced to a sentence. |
source_url |
TEXT | Direct link to the insurer’s own document. |
effective_date |
DATE | The insurer’s policy date. Present on 85% of rows. |
veracity |
TEXT | How the row was established: verified on 1,625 rows, corroborated on 798. |
confidence |
TEXT | Confidence in the extraction, high or medium. Nothing lower is shipped. |
signals |
JSONB | Supporting evidence found while reading the policy. |
attested_absent |
TEXT[] | Requirements we looked for in the policy and confirmed are not there — a step-therapy rule, a TB screen, a site-of-care program. A verified absence, not a gap. Non-empty on 1,577 of 2,423 rows. |
coverage_rule
The individual rules behind each cell, each carrying the sentence it came from.
Key rule_id — one row per rule
| Column | Type | What it is |
|---|---|---|
rule_id key |
TEXT | Primary key. One row per rule. A single drug-and-insurer pair routinely carries many rules of the same type — one policy states twenty separate clinical prerequisites — so the other columns do not form a key and joining on them fans rows out. |
payer_slug |
TEXT | The insurer. Joins to coverage_cell and to the rate tables. |
drug |
TEXT | Active ingredient. |
rule_type |
TEXT | covered_indication, step_therapy, site_of_care, quantity_limit, reauth, exclusion and so on. |
indication |
TEXT | What the rule is about, e.g. rheumatoid_arthritis. Empty where the rule applies to the drug generally rather than to one diagnosis. |
hcpcs |
TEXT | The billing code the rule attaches to, and the join to the rate tables. Present on 43% of rules: the rest are written about the drug rather than about a code, and we do not attach a code the policy did not name. At the cell level 76% carry at least one coded rule. |
value |
JSONB | The parsed rule — ICD-10 list, dose ceilings, required prior drugs, notes. |
citation_quote |
TEXT | The exact sentence from the policy. Never reworded. |
source_url |
TEXT | Link to the document the quote came from. |
effective_date |
DATE | When the policy version took effect. |
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. |
See these columns with real values in them
The sample uses the production schema and real rows, so you can load it straight into your own model. It downloads directly, with no form in front of it.