DEV Community

Eyvind Barthelemy
Eyvind Barthelemy

Posted on • Originally published at samedaydesk.com

I checked the structured data on 61 med-spa sites AI assistants surface. Only 8% have FAQ markup.

I run a small AI-search readiness tool, so I got curious about a concrete question: when someone asks ChatGPT or Perplexity "best med spa near me for Botox," what structured data do the businesses that surface actually have?

So I checked. I took the high-intent queries a real patient would run — "best med spa in [city]", "Botox [city]", "laser hair removal [city]" — across 8 US metros (Austin, Scottsdale, Miami, Dallas, Nashville, Los Angeles, Chicago, Denver), collected the individual-clinic pages that surfaced, fetched each one, and parsed its JSON-LD. 62 clinic URLs, 61 reachable.

The result surprised me.

The basics are common. The quotable fields are not.

Of the 61 reachable clinic pages:

  • 77% have some JSON-LD structured data
  • 59% have a LocalBusiness / MedicalBusiness block
  • 59% have a telephone, 57% a postal address
  • …but only 31% have AggregateRating
  • only 25% have priceRange
  • only 11% mark up their services (Service / OfferCatalog)
  • only 8% have FAQPage markup
  • only 2% have Review markup

So clinics nail the identity basics (name, address, phone) and skip the answer-rich markup — the exact fields an assistant uses to quote a business rather than just list it.

Why the distinction matters

When an LLM answers a local "best X near me" question, it's assembling facts: which businesses exist, what they offer, what it costs, how they're rated, and what people ask. A page with a bare LocalBusiness block can be named. A page that also carries Service + priceRange, FAQPage, and real Review/AggregateRating markup gives the model the actual sentences and numbers to cite.

The data says the second kind of page barely exists in this category. That's not a doom stat — it's the cheapest competitive edge in the space right now, and it's a one-time paste into your <head>.

What "good" looks like

A complete bundle for a local business is a @graph with the business entity, its services as an OfferCatalog, an FAQPage, and real ratings:

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": ["MedicalBusiness", "HealthAndBeautyBusiness"],
      "name": "Example Aesthetics",
      "telephone": "+1-512-555-0100",
      "priceRange": "$$",
      "address": { "@type": "PostalAddress", "addressLocality": "Austin", "addressRegion": "TX", "addressCountry": "US" },
      "hasOfferCatalog": {
        "@type": "OfferCatalog",
        "itemListElement": [
          { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Botox" } },
          { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Dermal Fillers" } }
        ]
      },
      "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.9", "reviewCount": "214" }
    },
    {
      "@type": "FAQPage",
      "mainEntity": [
        { "@type": "Question", "name": "How much does Botox cost?",
          "acceptedAnswer": { "@type": "Answer", "text": "Botox is priced per unit; most treatments range from $10–$18 per unit." } }
      ]
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

One honest caveat: put your real ratings and reviews in there. The structure is the easy part; fabricated ratings are both against Google's guidelines and pointless.

Method + caveats

This is a structured-data census of the surfaced set — it measures what makes a page eligible to be cited, not a live count of any single engine's citations (I don't have ChatGPT/Perplexity API access at scale, and I'd rather report what I can verify first-party than guess). I excluded aggregators and listicles (Yelp, etc.) from the clinic tally. Full data, the metro list, and the methodology are in the report below. I refresh it monthly.

Check your own site

Free, open-source:

npx github:epistemedeus/ai-readiness yoursite.com
Enter fullscreen mode Exit fullscreen mode

Full data + a free starter-block generator (and, if you want the complete bundle generated against your live site with a gap diff, a paid option): the med-spa AI-citation schema gap report — linked as the canonical source below.

If you've measured this for another vertical, I'd love to compare notes.

Top comments (0)