55% of Med Spas Don't Show Procedure Prices — a 10-City Scan of 187 Clinics
By Tatiana Pechenikina, founder of iQyra · We help med spas get found in Google and AI search.
We scanned 187 med spas across 10 US metros for three decision-useful facts we repeatedly see matter when clinics get compared — a price, a credentialed provider, and who the treatment is for. 55% showed no procedure price as plain text on any page we checked, and only 8.6% surfaced all three facts — about one clinic in twelve. That leaves 91% missing at least one of the three. In other words, when a patient asks ChatGPT for “the best place near me for Botox,” most clinics haven't made the full set of decision-useful facts plainly available for an assistant to read. This is our own data, and below is the full method, the corrections we made, and the limits — because a number is only worth citing if you can see how it was made.
Why a missing price is now an AI-search problem
For years a price left off the page was a conversion choice — make them call. What's changed is who else is reading the page. When an assistant compares clinics, it can only use the facts from your page that it can actually retrieve — and it tends to reach for the ones stated plainly as text. If the price lives inside a booking widget, an image, or “call for pricing,” there's often nothing for it to pull. The page can look complete to a human and still be nearly blank to a machine.
That's the lens for this scan. We weren't grading design or marketing. We checked one thing: are the three facts we measured — a price, a credentialed provider, and candidacy — present as extractable text on the page?
The three facts we measured — and how often they're there
When an assistant weighs a few clinics for a recommendation, the reasons it can give come from what the page states. In the recommendation reasons we observe, three facts show up repeatedly, so we scanned for each. Across the 187 clinics, measured in visible page text:
These overlap with what tends to matter when an assistant recommends you over the clinic next door. Only 8.6% (16 of 187) surfaced all three across the pages we checked — meaning 91% were missing at least one. Most clinics had one or two and left a machine to guess the rest.
The machine-readable layer is even thinner
You might expect the structured data — the JSON-LD that exists specifically for machines to parse — to fill the gap. It mostly doesn't. 90% of the clinics shipped some JSON-LD, but only 40% used a medical schema type, only 45% named the provider in it, and only 33% put a price in it. So the part of the page built to be machine-readable usually omits the very fact a patient is asking for. Price is missing both as visible text (55%) and, nearly as often, as structured data (67% carry no price in schema).
How the 10 metros compared
Sorted by the share of clinics with no price on any page we checked (higher = worse). “Best” and “worst” refer to this price column — not to the much harder “all three facts” column, where every city clusters near the floor. Counts shown as X of N because per-city samples are small.
| Metro | No price | Candidacy | All 3 facts | Price in schema |
|---|---|---|---|---|
| Atlanta | 64% (9/14)worst | 29% (4/14) | 7% (1/14) | 29% (4/14) |
| Miami | 62% (8/13) | 46% (6/13) | 15% (2/13) | 54% (7/13) |
| Dallas | 62% (8/13) | 15% (2/13) | 8% (1/13) | 46% (6/13) |
| Las Vegas | 59% (10/17) | 29% (5/17) | 12% (2/17) | 41% (7/17) |
| Los Angeles | 56% (9/16) | 38% (6/16) | 6% (1/16) | 25% (4/16) |
| Scottsdale | 55% (35/64) | 30% (19/64) | 9% (6/64) | 25% (16/64) |
| Denver | 54% (7/13) | 38% (5/13) | 8% (1/13) | 31% (4/13) |
| Nashville | 50% (6/12) | 25% (3/12) | 0% (0/12) | 50% (6/12) |
| Houston | 42% (5/12) | 33% (4/12) | 8% (1/12) | 25% (3/12) |
| Austin | 38% (5/13)best | 23% (3/13) | 8% (1/13) | 31% (4/13) |
| All metros | 55% (102) | 30% (57) | 9% (16) | 33% (61) |
Percentages are rounded to the nearest whole number; exact counts (X of N) are shown in each cell.
A few things stand out. Atlanta disclosed prices least often — 64% of its clinics showed no price on any page checked. Austin did best on price, at 38% missing. But “all three facts” is scarce everywhere, and it doesn't track with price at all: Austin leads on price yet, like most metros, got just one of its clinics to all three — the same count as Atlanta, the worst city on price. Only Miami reached 15%, most metros sat below 10%, and Nashville had none of its 12 clinics surface all three. Because per-city samples are small, treat the city numbers as directional — the pattern across all 187 clinics is the more reliable read.
How we did it (and what this can't tell you)
We want the method on the table, because its limits — and the corrections we made — are part of the finding.
What we did. In August 2026 we pulled med-spa listings from Google Maps for each metro (query: “med spa [City] [ST]”), found each clinic's sitemap, and opened up to three procedure or pricing pages per clinic, scored by relevance (a pricing page ranked above a treatment page, which ranked above a generic service page). On those pages we used automated pattern-matching to detect three facts, with deliberately strict definitions:
- Price: a procedure price like
$NN–$NNNNnext to a treatment term — excluding financing, membership, and discount figures. - Provider: a provider stated in visible text as a name plus credential (“Jane Smith, NP”), “Dr. First Last,” “board-certified,” or “physician-led.” Provider information found only in JSON-LD was tracked separately.
- Candidacy: “ideal/good candidate,” “who it's for,” “not a candidate,” and similar.
Unit of analysis: the clinic (domain). Each clinic was counted once, and a fact was marked present if it appeared on any of the pages we checked (an OR across pages). “All three” means all three flags were true for the clinic — they may sit on different pages. The denominator is clinics that were reachable and had at least one procedure or pricing page: 187, kept from 207 parsed. National chains were excluded. An automated scan varies by a clinic or two run to run with network reachability; the figures here are a single run.
The correction worth flagging. Our first provider detector was wrong in an instructive way: it matched “MD” inside base64-encoded data and “Dr” inside street addresses (“Drive”), which inflated apparent provider presence to about 90%. We tightened it to require a real name plus credential and re-ran. The corrected text figure (44%) lands within a point of the independent JSON-LD figure (45%) — two different methods agreeing, which is the cross-check we wanted before publishing. We also hand-validated 30 randomly selected clinics against their pages: the automated classification agreed in 27 of 30 clinics (87 of 90 field-level classifications). The three disagreements were false positives — a brand name containing “RN,” a job posting mentioning a “medical director,” and a promotional discount read as a price.
What this is not. It's a directional automated scan, not a hand-audited census. The sample is a convenience sample from Maps results in 10 cities — not random, not nationally representative, and a single snapshot; pages change. Our scan captures plain-text (and schema) availability — not everything an AI system could potentially recover. A price inside an image, a PDF, or an interactive booking widget may still be reachable by a human or by some search systems, but our scanner didn't count it. We chose that stricter bar on purpose: plain, visible text and structured data are the most portable, directly extractable forms across search engines and AI assistants alike.
The takeaway isn't that most med spas are careless. It's that most pages were built to persuade a person after the click — not to hand a machine the facts before it.
What a clinic can do about it
Our practical recommendation — based on this scan plus the recommendation tests we run — is small and doesn't cost an ad budget: put the three facts — a real price or range, a named provider with credentials, and who the treatment is for — as plain text on each procedure page, and, where your structured-data type supports it, keep the provider and relevant pricing consistent there too — not buried in a booking widget. That's it. It helps the patient who's skimming, and it makes those facts directly available for an assistant to use or quote.
Frequently asked questions
What share of med spas don't show their prices online?
In our August 2026 scan of 187 med spas across 10 US metros, 55% of the clinics didn't show a procedure price as plain text on any of the pages we checked. It ranged from 64% in Atlanta to 38% in Austin.
Why does a missing price matter for ChatGPT or Google AI Overviews?
Both systems can use web content when generating AI answers, and Google explicitly recommends making important content available in textual form for its AI features. Our scan doesn't measure whether showing a price causes inclusion or higher ranking; it measures whether that fact is plainly available to be used at all. A price stated as visible text is directly available on the page; schema provides an additional machine-readable representation.
What are the three facts you measured?
A price (or real range), a named provider with credentials (MD, DO, NP, PA, RN), and candidacy — who the treatment is for. Only 8.6% of the clinics we scanned — about one in twelve — surfaced all three, so 91% were missing at least one.
Do med spas at least publish prices in their structured data (schema)?
Mostly not. 90% shipped some JSON-LD, but only 33% included a price and 45% a provider, and only 40% used a medical schema type. The machine-readable layer is usually even thinner than the visible page.
Is this a representative national study?
No. It's a directional automated scan of a convenience sample from Google Maps in 10 metros, at one point in time, with strict definitions and a hand-validated sample. We're sharing the method and its limits so the numbers can be read for what they are: a strong signal, not a census.
How can I check whether my own page is AI-readable?
Open the procedure page and ask whether the price, provider credentials, and candidacy are present as plain text — not only inside a booking tool or an image — and whether the price and provider also appear in your JSON-LD. If a simple text scan misses them, they're not available in the most portable, directly extractable form.
Google's guidance on making content available for its AI features: developers.google.com.
See what an AI assistant can read on your pages
Our free AI-visibility audit checks whether AI assistants can find your clinic, read its prices and credentials, and tell it apart from local competitors — and shows which facts are missing.
Get a free iQyra AI-visibility audit