Methodology

How we calculate this

A plain-English explanation of where our numbers come from and how much you should trust them.

Where the numbers come from

Most pet owners choose to share their bill anonymously — it's how FairVet can show real, local prices instead of guesses. So sharing is what a free check does by default, and we say so on the upload page rather than burying it in a checkbox. Anyone who would rather not can turn on Keep this bill private before they upload, or change their mind afterwards on their result page. Declining costs nothing and is never a penalty — a private bill still gets you a verdict on your own prices.

A shared bill feeds two different things, and it's worth being precise about which, because they carry different amounts of detail.

The regional price pool. This is the de-identified one. Before a line reaches it we strip everything that could identify you, your pet, or your clinic — and the clinic is genuinely absent here: the pool has no clinic column at all, by design. What's left is a rough region (the first three digits of a ZIP, not your ZIP), a standardized procedure name, a dollar amount, and a few coarse buckets like species and a banded weight tier. Insurance carrier is recorded only when it's one we already know by name; anything typed into the "other" box stays on your own record and never reaches the pool. No name, no address, no phone, no pet name, no clinic, and no link back to your account or your bill ever enters it.

Your clinic's public figures. This is the part that does name the clinic. Where a bill matches a clinic's listing, it counts toward that clinic's published per-procedure medians, its Fair Price Score, its rank in our directory, and its award eligibility. Those are aggregates: a procedure's median is only published once at least five separate shared bills stand behind it, and no individual bill, amount, or uploader is shown or reachable from them. A five-bill minimum is a floor on how thin a published figure may be — we describe it that way rather than calling it anonymity, because at exactly five bills a median is a narrower window than that word suggests.

Both of those rest on the same set of bills: the ones whose owners shared them. If you keep a bill private it stays out of the regional pool, out of your clinic's published medians, and out of its Fair Price Score and awards alike. That was not always true — the score used to count every matched bill regardless of the sharing choice, which we got wrong and have since fixed.

If you later correct a line item on your own estimate — the amount, the procedure it maps to, or which pet it belongs to — that correction updates what you see on FairVet and what feeds your own spend tracking, but it can't reach back and correct the de-identified price point already contributed to the regional pool at the moment you uploaded, since that contribution is deliberately stored with no link back to your estimate or line item.

That regional data is reviewed periodically — not in real time — by an automated process that recalculates each region and procedure's typical range as new estimates come in.

The clinic match itself is made wherever the clinic name and region line up, on any bill we decode. What that match is allowed to feed is a narrower question: a shared bill counts toward the clinic's public Fair Price Score and estimate-match rate (both described below), while a bill kept private is matched for your own records and counts toward none of them. Either way the use is aggregate only, and no individual bill, dollar amount, or uploader is ever shown publicly or traceable from these clinic-level numbers. One exception worth naming: verifying that a review came from someone who genuinely holds a bill from that clinic uses the match alone, since that check is about you and never becomes a published figure.

Clinic listings themselves come from a few places: many were seeded from public business listings when we launched a region, some are created automatically when an uploaded bill matches a clinic we didn't have listed yet, and pet owners can suggest a clinic directly from the directory. A team member reviews every user-submitted clinic before it goes live.

Separately, anyone can add a price by typing in what they paid, with no bill to upload and no way for us to verify it against an actual invoice. These quick contributions feed into the same regional typical ranges as parsed bills, but at half the weight of a verified bill in the underlying calculation — so a handful of typed-in prices can help fill out a thin region without ever outweighing the verified bills behind it. A quick contribution is never counted or labeled as a verified bill anywhere on FairVet. Whenever a "Based on N data points" figure includes any quick contributions, we say so directly next to it — for example "Based on 12 data points (8 verified)" — rather than letting a partly-typed-in number look identical to one built entirely from verified bills.

Bills with a coupon or discount on them

Sometimes a bill states a discount outright — a loyalty discount, a new-client coupon, a seasonal promotion. When it does, we say so on your results page and compare your bill exactly as it stands: the comparison you see is against what you actually paid, not against some reconstructed pre-discount figure. We only report a discount the document itself prints. We never infer one from a total that looks low, and we never characterize a discount as a good or a bad thing — it is a fact about your bill, not a verdict on it.

That same bill is then left out of the de-identified regional pool described above, and out of the per-procedure medians we publish on that clinic's profile. A promotional price is by definition not what a clinic typically charges, so counting it would pull a "typical price" toward a figure most people can't actually be quoted, and would misstate the clinic's standard rates to everyone reading its page. The exclusion is one-directional and affects nothing you see about your own bill.

For the same reason, a discounted bill doesn't count toward the clinic's Fair Price Score, or toward the number of verified bills that score is built from. A discount makes a bill cheaper than the clinic's standard rates, so scoring it would flatter the clinic for a price it doesn't normally charge — and since a clinic can publish a special that produces exactly such a bill, counting them would give a clinic an indirect way to move its own score. It has none, by design.

What "typical range" means

For a given procedure in a given region, we sort every de-identified price we have from lowest to highest. The "typical range" we show is the middle 80% of that sorted list — we trim off the bottom 10% and top 10% as outliers, so one unusually cheap or unusually expensive estimate doesn't skew what we show you. The single number we call the "typical price" is the middle value of that same sorted list (the median), not an average — medians are less distorted by a handful of extreme outliers than averages are.

Medication prices

Our medication prices come from the same shared, decoded bills as everything else here — nothing is bought from a pharmacy database or typed in. When a bill is decoded, each take-home medication line is matched to a fixed list of products at a specific strength (or, for flea, tick and heartworm preventives, a specific weight band), and the quantity printed on the bill is read alongside it.

A medication price is always a price per tablet, capsule or chew: what the bill charged for that product, divided by the quantity it printed. We never compare medication line totals, because a two-week fill and a two-month fill of the same drug are very different totals at the same price. A line that names a drug but no strength, or prints no quantity, can't be priced that way — it's left out of the figures and counted on the page, so you can see how many there were.

The bars are the same as our cost guides: a product needs at least 5 priced bills before any figure appears, a chart only when those prices genuinely vary, and a state, metro area or clinic needs 5 priced bills of its own before it gets a figure. "Above" or "below" the national median means by more than 5% — within that, it's in line. Only bills from clinics in our directory, whose owners chose to share them and which print no discount, are counted.

Species, and size for a few procedures

A typical range is always for a procedure in a region, and — where we know it — for your pet's species, since a dog and a cat are not the same customer for the same service. For a short, specific list of procedures we go one step further and compare your pet's weight tier against similar-sized pets in your region: anesthesia, dental cleanings and extractions, spays and neuters, and medication dosing. Those are the cases where the clinic's own cost really does scale with the animal — more anesthetic, more drug, more surgical time — so a single blended price is a worse answer for a chihuahua and a mastiff alike. The tiers are deliberately coarse: small (under 25 lb), medium (25–60 lb), and large (over 60 lb).

Everything else is left alone. We don't band by breed — breed is free text, it splits the same submissions across hundreds of tiny buckets, and it's only ever a stand-in for the number on the scale, which we can simply ask for. And we don't apply weight tiers to procedures where cost doesn't scale with size: a rabies vaccine is one vial for any dog, and an x-ray is the same exposure and the same read. Size-matched figures have to clear the same minimum sample size as every other number here. When a size band hasn't reached it, we fall back to the figure for that species in your region and say so, rather than showing you a median built from a handful of bills.

Why we show "Based on N data points"

On our public reports and tools — Insights, the Pricing Index, the quick price check, and our cost guides — we tell you plainly how many real submissions a number is based on, instead of inventing a qualitative label like "high confidence." A number is just a number; how much weight to give it is something you can judge for yourself once you know the sample size behind it. If a region/procedure combination doesn't have enough submissions yet, we say "Not enough data yet" and hide the figure entirely, rather than show a number built from a tiny handful of estimates.

The bar for "enough data" isn't one-size-fits-all — it depends on how specific the cut is. Our quick price check needs at least 10 submissions for a region/procedure pair. Breed-specific breakdowns need at least 15, since splitting data by breed spreads the same submissions across more, smaller buckets. Trend and flagged-pricing summaries need at least 5, since those are about the direction of a change rather than a precise dollar figure.

A different label when you check one specific estimate

When you upload your own estimate and we compare a specific line item against your region, we show a confidence rating instead — High, Moderate, or Limited — rather than the raw count. That rating considers two things: how many submissions we have for that exact region and procedure (a high rating generally needs at least 100; moderate generally needs at least 30), and how consistent those prices are with each other. A region where prices cluster tightly scores higher confidence than one with the same number of submissions but wildly different prices, since a wide spread means any single typical figure is a less reliable stand-in for what you might actually be quoted.

We use a quick rating here, rather than the raw count, because in that moment you're trying to make a fast read on one specific line item on your bill — not study a dataset. On our aggregate reports, where you're looking at numbers more analytically, we show the raw count instead.

The FairVet Price Index

The FairVet Price Index is a monthly release. On the first of each month we take the regional benchmark data described above — the same numbers behind every other tool on the site, not a separate dataset — and compute one snapshot for the twenty procedures with the most data behind them. That snapshot is then stored and never recalculated. If you cite the September release, the September release will still say the same thing next year.

For each procedure we publish a national median and a breakdown by state. The national figure is a sample-weighted rollup across every region where we have data, so a region with 200 submissions counts for more than one with 20. It is a computed aggregate of the areas we actually cover, not an independently drawn national sample, and it will lean toward the parts of the country where FairVet users are concentrated.

Which states appear, and why one might not. A state is listed under a procedure only when the data we hold for it clears the same minimum sample size — 5 data points — that every other trend figure on this site uses. Below that, the state is simply absent: we show no number rather than one built on a handful of submissions, and a state that vanishes between one release and the next means its data thinned out, not that its prices did anything in particular. We also cover some areas as three-digit ZIP-prefix regions that can straddle a state line. Those count toward the national figure but are never assigned to a state — each procedure says how many were left out for this reason.

Month-over-month and year-over-year changes compare one stored release to another. Until two releases exist, a change reads "Not enough history yet" rather than being estimated from some other source. As with the rest of our reports, the index describes what moved, not why.

The Fair Price Score

A clinic's Fair Price Score is built from the verified bills we've matched to it. For each line item on those bills, we compare what the clinic charged to the typical median for its region. The score starts at 100 and subtracts a weighted average of how far items sit above the regional median — so a clinic that consistently prices above typical scores lower. Items priced at or below the median never lower the score; charging less than typical is never penalized.

Bills that state a discount on their face are left out of the score and out of that bill count, for the reason given under bills with a coupon or discount above: a promotional price isn't what the clinic normally charges.

We only show a score once a clinic has at least 5 verified bills behind it — below that, we show no score rather than a number built on too little. Scores are recomputed nightly as new matched bills come in. A Fair Price Score is an informational aggregate of bills that users chose to share, not a determination that a clinic overcharges.

The embeddable Fair Price badge

The badge a verified clinic can add to its own site is just its Fair Price Score, read live from the same number shown on its FairVet profile — it recomputes on every page load, the same way the score itself recomputes nightly from real matched bills. There is no separate test to pass and no way to buy your way onto it: a clinic earns the badge the same way it earns its score, algorithmically, from verified bills, with the same 5-verified-bill minimum described above.

A clinic can pay to customize how that badge looks on its own site — a color, a size, and the option to remove the "Verified by FairVet" backlink — but that's the only thing for sale. It changes nothing about the number the badge shows, whether a clinic qualifies for it, its Fair Price Score, or its ranking anywhere on FairVet. On the free tier, every badge shows the same default styling with the FairVet backlink intact and not removable.

Fair Price Certification — not the same thing as the Fair Price Award

Separately, once a year we recognize a small number of verified clinics per metro area with Fair Price Certification. This is a distinct, smaller program from the Fair Price Award described above — deliberately named without the word "award" so the two are never confused:

  • Fair Price Award — nationwide, recomputed automatically every month, no human review.
  • Fair Price Certification — grouped by metro area, decided once a year, and for this first cycle confirmed by hand rather than by an automated job — the same conservative posture we take anywhere we'd rather under-promise than publish something we haven't actually checked.

To be considered for Certification a clinic must already hold the verified badge, have at least 5 verified bills, and carry a Fair Price Score of 85 or higher. Meeting that bar makes a clinic a candidate for review, not an automatic winner — same as the badge and the Fair Price Award, Certification can never be purchased.

Veterinarian profiles and credentials

A veterinarian gets a page on FairVet only when the clinic has confirmed them. Names we read off bills are not enough on their own: a name on a bill is evidence that one person saw one animal on one day, and we never turn that into a staff list. When a clinic undoes a confirmation, the page stops being published immediately.

Photos and biographies come from the clinic, and from nowhere else. We do not take a photograph or a biography from a clinic's website, a social media profile, a specialty-board directory or any other outside source, under any circumstance. If a profile has no photo, you see a plain placeholder rather than a picture we found somewhere.

“Verified” means we checked it. We mark a credential verified only when we queried a real public source and it agreed, and the badge links to that source so you can see the same record. In practice that is narrower than it sounds, and we would rather say so than imply otherwise:

  • State licences: we can check Colorado, Illinois, Washington and Delaware, which are the only states publishing a current, queryable public roster of veterinary licences. We look the licence up by its number, never by name — a common name returns several people, and attaching a stranger's licence to a profile would be a fabricated credential rather than a verified one.
  • Veterinary school: we check the claim against the AVMA Council on Education's list of accredited colleges.
  • Board certification: we cannot verify this anywhere. The specialty colleges' directories are opt-in — a diplomate may simply not be listed — and their terms do not permit us to compile them. Every board certification on FairVet is shown as clinic-reported.
  • Everything else, including licences in the other 46 states and graduation years, is clinic-reported too.

Clinic-reported is not a weaker verification. It means the clinic told us and we could not confirm it. We show it in plain words rather than a badge, and we never let a claim sit in a “pending” state that looks like verification is on its way when no source exists to check it against.

A “we're hiring” note is the clinic telling you it has a vacancy. It is a small badge, it never affects a clinic's Fair Price Score or where it appears in our directory, and we are not paid for it.

Clinic specials and coupons

Clinics can publish their own offers on FairVet — a discount on a dental cleaning, a new-client rate — which appear on that clinic's profile and on our specials page. These are written by the clinic. They are advertising, not evidence, and we treat them accordingly.

A special has no effect on any number or any order on this site. Running one — or running a hundred — cannot change a clinic's Fair Price Score, its verified badge, its eligibility for Fair Price Certification or the Fair Price Award, or its position in the clinic directory, in search results, or in the procedure finder. This is the same rule that already governs everything else a clinic can pay for, and it is enforced in the code rather than promised in prose: the scoring and ranking queries cannot read the specials table at all.

We hold that rule against the indirect route as well. A special produces discounted bills, and a discounted bill is cheaper than the clinic's standard rates — so if those bills counted toward the Fair Price Score, a clinic could raise its own score by running a promotion, without a single line of the scoring code ever touching a special. They don't count. Bills with a stated discount are excluded from the score and from the verified-bill count behind it, exactly as they're excluded from the regional benchmarks — see bills with a coupon or discount on them above.

A clinic on our Pro tier can pay to mark a special as Featured, which moves it higher within the specials list itself — and nowhere else. Featured specials are always labelled, so you can tell the paid position from the rest. Nothing about featuring changes a clinic's score, its badge, or where it ranks anywhere on FairVet.

Every special has to state a concrete offer and a real expiry date, both of which we show you. We don't allow countdown timers, "X people are viewing this" counters or similar urgency devices, or claims comparing a clinic's prices to other clinics' — comparisons on this site come from benchmark data, not from marketing copy. We don't independently verify that an offer will be honored, so confirm the details with the clinic before you book.

How the procedure finder ranks clinics

The procedure finder answers a narrower question than the clinic directory does. The directory lists who is near you; the finder ranks them for one specific procedure. It considers every clinic we list in the same 3-digit ZIP area as you — the same rough notion of "near you" used everywhere else on the site — and orders them on four factors, each scored from 0 to 1 and multiplied by a fixed weight:

  • Fair Price Score — 40%. The clinic's existing score out of 100, used exactly as it appears elsewhere on the site.
  • Distance — 25%. Straight-line distance, worth full marks at the door and nothing at 25 miles out. This is a gradient, not a search radius: a clinic is never dropped from the results for being far.
  • Verified bills for that procedure at that clinic — 20%. How much evidence we actually hold about this procedure here, credited up to 20 bills and no further. Below 5 bills the figure isn't published or counted, the same floor the per-procedure medians on a clinic profile use.
  • Review rating — 15%. The mean star rating, counted only once a clinic has at least 3 reviews. Every review already comes from an owner with a real bill matched to that clinic.

A factor we have no data for contributes nothing, and the remaining weights are not re-scaled to compensate. That is deliberate. Re-scaling would let a clinic we know almost nothing about reach the top of a list precisely because there was nothing to measure it on. A clinic keeps every point it has earned, no more, and each result says which factors it was actually ranked on — so a listing with little behind it reads as thin rather than as bad.

Unclaimed listings appear in the same ranked list, labelled as unclaimed, and are never omitted for being unclaimed. They are ranked on Fair Price Score and distance only: reviews and quote replies both require a clinic that has claimed its listing and can respond, so scoring an unclaimed listing on them would measure our reach rather than the clinic. Claiming a listing makes those two factors available to a clinic; it adds no points by itself.

We have no ZIP-centroid table or geocoder, so your ZIP is placed using the average position of the clinics we list in that exact ZIP code. When no listed clinic shares your ZIP, we say which clinics are in your ZIP area instead of printing a mileage we can't compute; the same applies to an individual clinic whose coordinates we don't hold. Distances are straight-line and approximate — never driving distance.

Your pet's species decides which procedures you can search for — a cat is not offered a DHPP vaccine — but it is not a ranking factor. Nothing in our data records which species a clinic treats, and inferring it from the bills we happen to hold would be a guess presented as a finding.

Nothing a clinic pays for affects this order. Subscription tier, payment status, advertising, sponsorship and every other commercial relationship with FairVet are not inputs to the ranking, and there is no promoted or paid placement on that page. This is the same rule that governs the Fair Price Score and the verified badge: neither can be bought, and neither can this.

Minimums behind our clinic and insurance numbers

The same "show nothing rather than a shaky number" rule applies to every other public figure. A clinic's estimate-match rate — the share of its tracked visits where the final bill came within 10% of the estimate — is shown only once the clinic has at least 10 tracked visits. In our insurance insights, we show nothing for a provider with fewer than 20 member-shared bills, each sub-metric such as a typical reimbursement share needs at least 10 of its own, and we report medians rather than averages and never rank one provider against another. Reviews come only from pet owners who have a parsed bill matched to that clinic, at most one review per bill, so every review reflects a real, verified visit. And the metro progress meters simply track how close each region is to the 300 verified bills at which its regional benchmarks unlock.

What this isn't

Our regions are broad — roughly the first three digits of a ZIP code, not precise city or neighborhood boundaries — so "your area" is an approximation. Our data reflects estimates that FairVet users chose to share, not a scientifically designed survey of every clinic or pet type, and it may not represent every breed, clinic type, or part of the country evenly. This is informational benchmark data, not a statistically audited research product, and not a determination that any individual price is fair, unfair, or correct. It's a reference point to bring into a conversation with your vet — see our Privacy page for how we handle the data behind it.

The same caution applies to our clinic-level numbers. A Fair Price Score, estimate-match rate, or review summary reflects only the bills users chose to share for that clinic — often a small slice of everything it does — so it may not represent the clinic's full pricing. These are a starting point for a conversation, not an accusation.