Methodology

What each figure in Soro Data means, where it comes from and how we process it along the way. Every definition here describes a rule our software enforces, not a marketing claim.

Hospital side: the machine-readable files hospitals publish

Every hospital must publish a machine-readable file (MRF) of its standard charges under 45 CFR 180. We fetch the file from the hospital's own site, record its URL, size, checksum and retrieval time, and read every row that carries a billing code and a payer-specific negotiated amount.

Gates

Before any of its rows enter our data, a file must pass a set of checks we call gates. We refuse a file when it has no hospital name; no rows we could scan; no payer names; a reported date that is missing, in the future or older than the rule allows; an unrecognized schema version; no NPI; an implausible maximum rate; or a share of retained rows showing that the parser misread it. We record each refused file with the gate it failed, so a hospital is never silently left out.

Normalization

Min, median and max

For each hospital and code we hold the number of payer-specific dollar rows and their lowest, median and highest values. The population is every payer-and-plan row that carries a negotiated dollar amount for that code at that hospital. We count rows, not distinct dollar values, so two plans with the same figure count twice. The $1 floor applies first: a posted figure under one dollar is a placeholder, not a price, and is left out of the count, the minimum, the median and the maximum. Dropped placeholders are counted in the dataset (placeholderRatesDropped), and the raw export still contains them. With an even count, the median is the mean of the two middle rows in our state-level rate index; in our hospital-level datasets it is the upper of the two middle rows. We state both conventions because both are in use, and they differ only when the two middle rows differ. Across hospitals, a code's percentiles are computed over the per-hospital medians, so a hospital that lists forty plans for one code counts once.

Payer side: the Transparency in Coverage (TiC) files insurers publish

Insurers publish their in-network negotiated rates under the Transparency in Coverage rule (85 FR 72158). These files are enormous and highly repetitive, and reading them well is where most of our work has gone.

What a figure is: max observed

For one insurer file, one hospital and one billing code, the figure we hold is the maximum qualifying negotiated dollar amount on file for that code at that facility. Facility (institutional) prices and professional (clinician) fees are held separately. Every dollar statistic on a payer profile uses the facility figures only: the per-code median, 25th and 75th percentiles, minimum and maximum, the distribution by code system, and the Medicare and all-payer ratios. Each is a statistic of these per-hospital maximums, one per hospital and code, not of every plan-level quote, and the data we serve says so (basis: "maxObserved" on each row and a note on the profile). The figure is not a single contracted price. One hospital can carry several plan-specific figures for one code inside one payer file, and we keep the maximum so that every figure means the same thing across payers. Every column that shows it is labeled max observed, never rate.

Quotes, not cells

A cell is one (payer file, hospital, code) triple. A quote is one distinct (hospital, code, dollar). Our coverage figures count quotes. Counting cells instead would overstate our data about seventeen times over, because the same negotiation appears in file after file (see the next section).

BlueCard restatement: the visible difference

When a Blue Cross plan covers a member treated outside its own state, it pays the local Blue's negotiated rate and republishes that figure in its own file. Horizon's price for DRG 470 at a New Jersey hospital appears, to the dollar, in Anthem's file, Highmark Pennsylvania's and HMSA Hawaii's. That is one negotiation, not four. A tool that counts each file separately would count it four times; we count it once.

Three mechanisms cause the repetition, and we handle each one differently:

  1. Some whole files are copies. Regence's Idaho, Washington and Oregon files are identical in every cell. We detect an exact copy with a content hash over every (hospital, code, cents) triple; it contributes nothing to any count, and the payer entity it duplicates lists it. A near-copy (within 0.1% on cells and hospitals, such as Aetna ALICFI against Aetna CVS Health) is kept and flagged sameShapeAs, because its handful of genuine differences are real prices.
  2. BlueCard. For every quote we record which plan negotiated it and on what basis. A plan outside the Blue Cross Blue Shield system is always its own negotiator. Among the Blues, the plan whose home state is the hospital's state is the negotiator, and every other Blue that restates the figure is republishing it. The bases are negotiated (the plan's own figure), shared-blues (the local Blue's figure, restated by other Blues), out-of-area (a single Blue publishing outside its home states, with no local plan on that figure) and unattributed (the hospital's state could not be resolved, so no local plan can be named). Republications are left out of the default view and can be shown with one toggle; they are counted either way.
  3. Genuine differences are kept. Only about a third of hospital × code pairs have every payer on the same figure. Republication is decided cell by cell, never payer by payer: BCBS Michigan can match Horizon on one code at a hospital and differ on the next.

On a payer profile this is the first panel: how much of the file the entity negotiated itself, how much it republishes, and how often other files restate its own negotiations. A Blue whose file is 99% republication is a thin source for that Blue's own contracting, and its score says so.

Known limitation. When two files from the same local Blue family publish one figure at a home-state hospital (for example a carrier's HMO and PPO files), the negotiation is credited to the first file in index order, and the other file shows it as a republication. Head-to-head comparisons between Blues exist only in their home states, because a distinct figure from a Blue outside its home state cannot be attributed to a negotiator.

Medicare relativity

The commercial-to-Medicare ratio for a figure is that figure divided by the CMS Medicare rate for the same code. The anchor is CMS's own national amount for the code, from the 2026 physician fee schedule (July release): the non-facility amount where CMS prices one, and the facility amount where it does not. A lab code the physician fee schedule does not pay takes its national limit from the 2026 clinical lab fee schedule (third quarter). Drugs, anesthesia and carrier-priced codes have no national amount in those files, and MS-DRG and revenue codes have no anchor here; a profile says so rather than substituting one. A hospital facility figure divided by a professional fee schedule anchor is a relative measure, not a claim that the two are the same service; we state it that way so payers can be compared on one scale.

On a payer profile, the ratio by code system is the median over every hospital × code cell that has an anchor. The ratio by code family (surgery, radiology, pathology and so on) is the same median within the CPT grouping, and the ratio on a code row is that code's median max-observed figure over its anchor.

Outliers

Some filings are wrong: a percentage typed as dollars, a per-day figure in a per-service column, a placeholder such as 999,999.99. A figure that fails the test below is left out of what we serve rather than shown with a flag. We never edit a figure, and the source files still hold every one we leave out.

A hospital whose median for a code fails is left out of that code, and a failing low or high leaves that end of its range blank. A payer or provider quote that fails is left out on its own. Searches, rate tables, the percentiles on a code benchmark, the code lists on hospital profiles, export files, the API and the MCP server all work from what remains. A provider's fee schedule has no single market to test against, so there we leave out only figures that are absurd on their face: zero or less, at or over the $5 million cap ($20 million for a DRG), or an all-nines placeholder of $99,999 or more.

Where the test does not apply. Payer profiles and the hospital and payer scores are computed when they are built, and this test is not part of that build. A payer profile's own check is the Plausibility part of its data-quality score, described under Scores.

Percentiles

One method everywhere. Every percentile in Soro Data is linear interpolation between order statistics, the definition statisticians call R-7 and spreadsheets call PERCENTILE.INC. That covers the market benchmarks and their tiles, the geographic markets page, contract analysis, the hospital profile distributions and price position, the payer per-code 25th and 75th percentiles, the reimbursement index in rate history and the simulator curves. Sort the population in ascending order as x0 … xn−1, take the rank r = p/100 × (n−1), and the percentile is x⌊r⌋ + (r − ⌊r⌋) × (x⌈r⌉ − x⌊r⌋). For n = 1 every percentile is that one value. By this rule the 50th percentile is the median, and for an even count it is the mean of the two middle values. The same population gives the same 25th percentile everywhere: a code's 25th percentile in the contract workspace is the figure the markets page shows.

For a code benchmark, the population is one value per reporting hospital (its median). For a payer's per-code figures, the population is the payer's max-observed figure per hospital. The one figure not computed this way is a payer's system-level rate distribution (the histogram of every max-observed figure in a code system), which is read from a log-spaced histogram with 400 bins and is accurate to about ±3%; it is labeled as such.

Position against the market uses cells where at least two insurers negotiated a distinct figure at the same hospital and code. For each such cell, the payer's ratio is its figure over the median of every distinct figure at that hospital for that code. "Lowest" and "highest" are the shares of those cells where the payer's figure is the minimum or the maximum.

Geography

A hospital's state is the state of the facility record it matches in our directory (CMS provider data, matched by NPI and then by name). A hospital that matches no record is "unknown" and is never attributed to a local plan. A payer's market is a state: the state-level median of the payer's ratio to the hospital median over the cells described above, shown only where at least 30 cells exist. A median more than 5× or under 0.2× is flagged as a unit warning rather than hidden, because it almost always means one file in that market published a percent-of-charge or per-diem figure in the dollar field. County, metropolitan-area and ZIP definitions belong to the geographic benchmarks and are documented with them where that module is available.

Scores

Payer data-quality score (0 to 100)

Letter grades: A at 85 or more, B at 70, C at 55, D at 40 and E below 40. The profile shows the reason behind each part, so the grade can be checked. The attribution reason also shows how many of the rows credited to the entity could not be attributed to a negotiating plan (out-of-area or unattributed basis), and what share of the credited rows they are.

Hospital scores (0 to 100, letters A to E)

A hospital profile carries six scores: five components and their weighted blend. The hospital page shows three of them (the overall score, price position and rate stability), each with the sentence that explains it.

Letter grades for every hospital score: A at 85 or more, B at 70, C at 55, D at 40 and E below 40.

Contract analysis

Each contract rate is compared with the chosen percentile (R-7, as above) of the market for its code. Gap = target − rate. We publish two gap percentages, each named for its denominator: gapPctOfTarget = gap ÷ target (the shortfall as a share of the market target) and gapPctOfRate = gap ÷ contract rate (the increase the contract would need). Opportunity = gap × annual volume, where a volume is on file.

The market depends on the document. A professional fee schedule (one that names a provider) is compared with the provider-group rates the payers' own price files list for each code, nationally, with outliers left out; a code is used when the files hold at least five such rates and at least 90% of them are professional. A facility contract is compared with the distribution of hospital medians for each code, nationally. Neither is split by state or specialty, because the payers' files do not say where a group practises or what its specialty is.

Provider rates and profiles

Every provider rate comes from the payers' own Transparency in Coverage (TiC) in-network files. A payer's file lists a rate against a provider group, named by its tax ID and the NPIs billing under it, with a billing class (professional or facility) and an arrangement (negotiated or fee schedule). We show the highest negotiated dollar each payer's files list for a group, code and class, as max observed. A payer whose files do not name the group is shown as not listed, which is not the same as out of network.

A provider profile has the same sections for every NPI, each from one public or payer source: NPPES for who the NPI belongs to and its NUCC taxonomy; CMS's clinician directory for Medicare enrollment and hospital affiliations; the payers' price files for in-network rates and their allowed-amount files for out-of-network payments; and CMS Medicare Part B for patients, services and allowed amounts. When no payer lists a clinician, the profile may show the practice the clinician bills through, saying how we know: reported to Medicare, a colleague in the same Medicare group, or an address match, which is labeled as inferred. No third-party fee-schedule sample feeds a provider rate or profile.

What each plan sees

Every limit is enforced on the server; the page only decides how a held-back figure looks. A page above your plan shows a card naming the plan that includes it. For a visitor who is not signed in, the server returns coverage, counts, ranks, restatement structure and figures rounded to two significant figures, but no exact dollar amount. A free account adds Free search: the low, median and high rate for one code at one hospital, up to 25 lookups a day. Rate Exports adds hospital, payer and provider rates as CSV files with every dollar filled in, and removes the daily limit on Free search; the analytics pages stay closed. Market Analytics and higher plans see every figure exactly, including Medicare rates (public CMS data) and the percent of Medicare. Taxpayer identification numbers (TINs) appear only on Market Analytics and higher plans, and bulk exports never include them.

Glossary

Every term used in Soro Data, in one place.

All-payer median
For one code, the median of every distinct quote across every payer file at every hospital; the reference a payer's per-code median is compared against ("vs all payers").
Artifact
The single JSON file our pipeline builds from an insurer's source files (for example tic-cigna.json), holding the payer name, the list of source URLs, the build time and one entry per hospital.
Attribution
Which plan negotiated a quote. A plan outside the Blue Cross Blue Shield system is credited with its own quotes; a Blue quote is credited to the plan whose home state is the hospital's state.
Band
A ratio rounded to two significant figures (1.374 becomes 1.4), shown with a tilde on plans below Market Analytics.
Basis
Why a quote is attributed the way it is: negotiated, negotiated and restated by other Blues, out of area, or unattributed. See BlueCard.
BlueCard
The Blue Cross Blue Shield program under which a member treated outside the home plan's state is paid at the local Blue's negotiated rate. It is the reason one negotiation appears in many insurer files.
Blue family
Every entity that is a Blue Cross Blue Shield licensee, across parents. A filter on the payer-rates page.
CCN
CMS certification number, the six-character ID of a Medicare-certified facility.
Cell
One (payer file, hospital, code) triple. Cells are what a file contains; quotes are what we count.
Code family
The CPT section a code belongs to (Surgery, Radiology Procedures, Pathology and Laboratory, and so on), used to group Medicare relativity.
Code system
CPT (procedures), HCPCS (supplies, drugs, services), MS-DRG (inpatient stays), REV (revenue codes, the UB-04 line categories).
Content hash
SHA-256 over every (hospital, code, cents) triple in an artifact. Two artifacts with one hash are exact duplicates.
Contract type
On the facility directory, how a payer's group of rates is expressed: dollar, percentage of charges, per diem, case rate or fee-for-service.
Coverage
How many hospitals, states and codes a figure or a file spans. Always counted in quotes, never cells.
Cross-check (verified)
A row where the hospital's posted file and the payer's posted file independently report figures within 10%. Marked with a badge; there is no "not verified" state.
Discounted cash price
The hospital's posted price for a patient paying without insurance, read from the hospital's MRF.
Drift
A change in a tracked source file since the last check: a new ETag, length or last-updated date.
Duplicate (exact)
A payer file whose content hash equals an earlier file's. It contributes nothing to any count and is listed on the profile of the entity it duplicates.
Entity
One payer file, with any exact duplicates of it merged in.
Family (parent)
The corporate parent behind a set of entities: HCSC, Highmark, Elevance, UnitedHealth Group, Regence and so on. A filter on the payer-rates page.
Fee schedule
A provider group's negotiated rates for one payer, from that payer's Transparency in Coverage files: every code the files list against the group's tax ID.
Freshness
How old the source files are, read from the publication date in their names; the first part of the data-quality score.
Gate
A check a hospital file must pass before its rows enter our data. A refused file is recorded with the gate it failed.
Gross charge
The hospital's undiscounted list price for a service, the base that percent-of-charge contracts multiply.
Head to head
Between two payers: the cells where both negotiated a distinct figure at the same hospital and code, the share where each is higher, and the median of their ratio.
Home state
The state(s) a Blue plan is the licensee for. Decides BlueCard attribution.
Hospital MRF
The machine-readable standard-charges file a hospital publishes under 45 CFR 180.
Max observed
The maximum qualifying negotiated dollar on file for one code at one facility in one payer file. Facility (institutional) and professional figures are held separately, and the statistics on a payer profile use the facility figures only. The payer-side figure; never called a rate.
Medicare rate
CMS's national amount for a CPT or HCPCS code: the physician fee schedule amount, or the clinical lab fee schedule limit for a lab code. Public CMS data, shown with Market Analytics.
Medicare relativity
A figure divided by the Medicare rate for the same code; "2.6×" means 260% of Medicare.
Median
The middle value of a population; with an even count, the mean of the two middle values (the 50th percentile under R-7). The one exception is the per-hospital, per-code median in our hospital-level datasets, which takes the upper of the two middle rows. See Percentiles.
Min / median / max
On the hospital side, the lowest, middle and highest payer-specific dollar rate for one code at one hospital.
Near-copy
A payer file within 0.1% of another on hospitals and cells. Kept and flagged, because its differences are real.
Network / product
The plan, network or product a source file belongs to, read from the file name (HMO, PPO, individual and small group, ASO and so on). "Not disclosed" when the name carries only a plan ID.
NPI
National Provider Identifier, the ten-digit ID of a provider or facility. Public NPPES data.
Originality
The share of an entity's own negotiations that no other file restates; the fourth part of the data-quality score.
Out of area
A basis: a single Blue publishing a figure outside its home states with no local plan on that figure.
Outlier
A figure that fails the test in the Outliers section: far outside the market or the Medicare rate for its code, $5 million or more for a single service ($20 million for a DRG), or zero or less. It is left out rather than flagged, and never edited; the source file keeps it. See Outliers for where the test applies.
Payer average
Retired on October 27, 2026. Code benchmarks used to show a national average per payer family from a third-party data set. Each payer's rates for a code, from its own price files, are on Payer rates.
Percent of charge
A contract expressed as a percentage of gross charges rather than a dollar. Shown as a percentage; any dollar derived from it is labeled an estimate.
Percentile
R-7 linear interpolation between order statistics (PERCENTILE.INC): rank = p/100 × (n−1), interpolated between the two nearest sorted values. The one method used for every percentile in Soro Data. See the Percentiles section.
Arrangement (provider rate)
How a payer's file states a provider rate: negotiated (a contracted dollar) or fee schedule (a schedule amount). Shown next to the billing class, professional or facility.
Gap % (contract)
Gap as a percent of the market target, and gap as a percent of the contract rate. Both are published; the column says which.
Rate floor ($1)
A posted negotiated figure under one dollar is a placeholder, not a price; it is left out of every hospital-side count, minimum, median and maximum, and counted in the dataset as dropped.
Plausibility
The share of quotes that are not implausible (under $1, over $5M, or 10× off the hospital median); the fifth part of the data-quality score.
Position
Where a payer's figure sits among the distinct figures at the same hospital and code: lowest, below median, above median, highest, and the ratio to the hospital median.
Preview window
The fixed rows of a table on which a plan below Market Analytics would see exact dollars: always the first rows of the unfiltered set, so no filter, search or sort can move them. The window is currently zero rows, so exact dollars come with Market Analytics.
Provenance
For a source file: URL, host, size, SHA-256, fetch time, HTTP ETag and last-modified, parser, and gate result.
Quote
One distinct (hospital, code, dollar). The unit every coverage count uses.
Rate group
On the facility directory, one payer's set of rates at one hospital in one setting and code type, with its min, max and average.
Republished
A cell in a payer's file whose figure another plan negotiated. The republished share is the entity's cells minus its own quotes, over its cells.
Restatement
The same quote appearing in more than one payer file. "Also published by" counts the other files; "restated by others" is the share of an entity's own quotes that other files carry.
Retrieval timestamp
When our pipeline fetched a source file (fetchedAt), distinct from the date the publisher put in the file name (published on).
Service line
A named working set of high-volume codes (orthopedics, cardiology, imaging and so on) used by the simulator and the exports.
Setting
Inpatient or outpatient, as the file states it.
Shared blues
A basis: the local Blue's negotiated figure, restated by one or more other Blues.
Source receipt
The re-read of a published figure from its source file, kept beside it so a spot check can be reproduced.
Taxonomy (specialty)
The NUCC provider taxonomy code and label from NPPES (for example 207R00000X, Internal Medicine).
Transparency in Coverage (TiC)
The federal rule (85 FR 72158) under which insurers publish in-network negotiated rates and out-of-network allowed amounts.
TIN
Taxpayer Identification Number of a provider organization. Shown only on Market Analytics and higher plans.
Tier
The level of access applied to a request: a visitor who is not signed in, a signed-in account below Market Analytics, or Market Analytics and higher. The server decides it for every request.
Unattributed
A basis: the hospital's state could not be resolved, so no local plan can be named as negotiator.
Unit warning
A market whose median ratio is over 5× or under 0.2×, which almost always means one file published a percent or per-diem figure in the dollar field.
Value score (hospital)
The overall hospital score: a weighted blend of price position (35%), disclosure completeness (20%), file quality (20%), payer coverage (15%) and rate stability (10%), with letters A to E. Each component is explained in the Scores section.
vs all payers
A payer's per-code median over the all-payer median for that code.