Three ways to start.
Search by what you need, your insurance, or the hospital you're going to. Every price is straight from that hospital's own published file.
Every price comes straight from the hospital's federally-mandated machine-readable file. The "cash price" is the self-pay discount they're required to publish. Your actual bill depends on your plan, deductible, and copay.
Three steps. No fees, no signup.
Search
Type a procedure name ("MRI knee"), a CPT code (73721), an insurer, or a hospital. We match it against every U.S. hospital's published price file.
Compare
See the gross price, the cash discount, and the rate every insurance plan negotiated — side by side across hundreds of hospitals.
Decide
Pick the hospital that costs less for the procedure you need. Bring the price to your appointment if there's a dispute. (Always confirm directly — we publish what they published.)
The law's been on the books since 2021. The database wasn't.
- ▸Under 45 CFR § 180, every U.S. hospital must publish a machine-readable price file — gross charges, cash prices, negotiated rates, and min/max — free, public, no signup.
- ▸Most hospitals technically comply by uploading a giant unreadable file. We verified live MRFs for 3,986 of 4,625 CMS-required hospitals and standardized price rows for 3,692 of them.
- ▸The 294-hospital gap between "live MRF" and "standardized prices" is the parser's coverage hole — files we can download but haven't fully extracted usable rows from yet (108 parsed to zero rows, 186 still in the parse queue). Closing it is in progress; see /about-the-numbers for the live breakdown.
- ▸Mark Cuban built Cost Plus Drugs for the same reason — pricing transparency in healthcare. We're doing it for hospitals.
Three days. Two AI agents. ~3 person-years of human work.
Hospital Ledger was built between May 12–15, 2026 by two AI coding agents — Claude Code and OpenAI Codex — working in parallel under one operator. The headline number isn't a vibe — it's a sum of real per-step rates a competent analyst with Excel, Power Query, and Python would actually hit. Every hospital labels "gross charge", "cash price", "negotiated rate", and "CPT code" differently; the CMS rule mandates the data points, not the column names. So every file is a new schema-mapping problem.
| Step | Volume | Per-unit rate (human) | Hours |
|---|---|---|---|
| Parse each MRF (download · open · map columns · normalize · QA) | 3,800 parsed outputs; 3,692 with rows | ~77 min avg (90% × 66 min clean + 10% × 180 min hard) | 4,747 |
| Find candidate MRF URLs from CMS + transparency pages | 4,625 hospitals | ~5 min / hospital | 385 |
| Probe URLs for liveness (curl / browser open) | 7,191 URLs | ~1 min / URL | 120 |
| Rediscover dead links by hunting each hospital's site | ~1,000 dead/missing | ~15 min each | 250 |
| Canonicalize payer names (Aetna vs AETNA vs Aetna Health Inc.) | 76,645 raw rows | ~250 wpm reading + ~500 unique merges | 50 |
| Validate CPT / HCPCS codes against AMA reference | 5,000 codes | ~3 codes / min spot-check + cleanup | 30 |
| Ingest + link CMS enforcement actions to CCNs | 8,642 records | structured CSV, mostly automated | 10 |
| Build the cross-hospital price index (joins, dedup, pivots) | 14,650,784 CPT / HCPCS rows | Excel/Power Query at solo-analyst pace | 40 |
| Design + build the SSR site, API, search, charts | 11 pages, 8 endpoints | solo full-stack dev | 300 |
| Total | ≈ 2,080 hr / person-year (full-time) | ~5,930 |
≈ 2.85 person-years at 40 hr/week fully-utilized, or roughly 5–6 calendar years for one analyst working a sustainable 20 hr/week on the side. The 99 GB of raw MRF data is too large to retype — nobody types it; they normalize. The cost is mapping, not keystrokes. Reading speed (~250 wpm) and typing speed (~40 wpm) only show up inside the per-MRF column-mapping pass and the payer-name canonicalization row.
The hospitals were already legally required to publish this data under 45 CFR § 180. Aggregating it into one queryable place doesn't make it ours to sell — it just makes it actually usable.
- Seed the CMS hospital universe (5,426 facilities)
- Load TPAFS MRF URL seeds, probe each for liveness
- Rediscover dead URLs from each hospital's transparency page
- Exa web search fallback for the still-missing
- Claude / Codex agent loop on the hardest holdouts
- CMS-HPT marker files + email-domain expansion
- Wayback Machine fallback for vanished URLs
- Fetch + parse CSV / JSON / XLSX / ZIP into one unified schema
- Ingest CMS enforcement (warning / CAP / CMP / closure)
- Build cross-hospital CPT / HCPCS price index
- SSR site + Cloudflare Pages + JSON API
- ▸Commercial aggregators (Turquoise, PayerPrice, Serif) lock the data behind NDAs.
- ▸CMS publishes the rule but doesn't aggregate or verify anything.
- ▸Every hospital uses a different format, vendor, and URL convention.
- ▸13.8% of files sit behind bot defenses; "compliance" ≠ "reachable".
- ▸Until LLM agents got good at parsing arbitrary CSV / JSON shapes, this scale of normalization wasn't cost-effective for one person.
Built in the open at github.com/barkleesanders/hospital-ledger — 34 pipeline scripts, ~10,700 lines of Python, ~3,400 lines of TypeScript. AGPLv3 code, CC0 data. No tracking. No signup. Free forever.
Search every hospital
Real-time filter across all 5,426 facilities. 4,625 are CMS-required; 3,692 currently have standardized price rows.
Top 25 worst offenders
CMS-required hospitals with the most enforcement actions and no findable MRF.
| CCN | Hospital | City, State | CMS actions |
|---|
Worst states
By share of CMS-required hospitals with a live MRF.
| State | Total | Live | % live |
|---|
By facility type
Rural Emergency Hospitals (the newest category) lag furthest.
Sources / methodology
The inputs, checks, and limits are listed here on the site, not just in the repo.
- CMS Hospital General Information supplies the hospital universe and CCNs.
- TPAFS/transparency-data supplies the initial MRF seed URLs.
- CMS Enforcement Activities supplies warning, CAP, CMP, and closure records.
- 45 CFR § 180 defines what hospitals are required to publish.
- Start with all CMS-required hospitals.
- Join known MRF links from the seed datasets.
- Probe URLs live and follow redirects to verify which files actually respond.
- Rediscover missing files from hospital transparency pages when the seed is dead.
- Parse live CSV, JSON, XLSX, ZIP, and wrapper-page formats into one schema.
- Generate the on-site standardized price previews from those parsed files.
Current on-site preview coverage: 3,692 hospitals with standardized price rows, out of 3,986 CMS-required hospitals with a verified live MRF.
- Compliant means a live machine-readable file was found and verified.
- Missing means no live public MRF was found after automated discovery and probing.
- Under CMS enforcement means the hospital appears in CMS's public enforcement record.
- Standardized price preview appears when parsed rows were actually generated for that hospital. Hospitals with zero generated rows are not counted in the headline.
Current limits: some hospitals are behind bot-defense or publish malformed files. Missing rows can mean non-compliance, anti-bot blocking, or broken vendor output.
🩺 Live prices — standardized, on-site
Parsed directly from each hospital's MRF into a unified schema. No external links — search prices by CPT or HCPCS code below.
Use it
Everything here is CC0 / public domain. No attribution required. Build whatever you want on top.