Publishing Prices for AI Citations: How Pricing Transparency Gets ChatGPT to Mention You — A Guide for SMBs in Eindhoven
AI chats get pricing questions constantly. Publish no reference point at all, and ChatGPT mentions a competitor who does. How to publish pricing logic — with copy-paste Schema.org — without giving away your margin.
Someone asks ChatGPT “roughly what does that cost?” — and you don’t exist
A potential customer in Eindhoven opens ChatGPT and types: “Roughly what does it cost to have the gutters of a terraced house cleaned in Eindhoven?”. ChatGPT doesn’t return ten blue links, but a concrete answer: “Expect €90 to €150 for a standard terraced house. Company A charges from €99, Company B works with a fixed rate of €120.”
You’re not in it. Not because you’re too expensive or have bad reviews — but because you’ve published no price anywhere. The AI had no reference point, so it reached for the two businesses that did.
This is the most underestimated GEO mistake of 2026. In the GEO guide we covered six tactics for getting cited. Pricing transparency is the seventh — and for service providers, often the most direct. Pricing questions are among the most common questions asked to AI chats, and the business that answers wins the mention.
This guide shows how to publish pricing logic — with copy-paste Schema.org — without giving away your exact rates or your margin.
What pricing transparency for GEO actually is
Pricing transparency for GEO is publishing a pricing logic — a starting price, a price range, and the factors that determine the price — in a form AI chats can cite, so your business appears on every pricing question in your niche and region.
Note the word logic, not list. You don’t have to paste a rate sheet on your site. You have to give AI enough to mention you on “roughly what does this cost?” — and that’s exactly one starting amount plus context.
There are roughly three positions an SMB site can take:
| Position | What the customer sees | What AI can do with it |
|---|---|---|
| No price (“on request”) | Nothing — has to call | Nothing — no mention on pricing questions |
| Full price list | Exact rates per service | Cites you, but exposes your margin and custom work |
| Pricing logic (recommended) | Starting price + range + factors | Cites you with context, without wrecking your margin |
The middle column works for webshops with fixed products. For most Eindhoven service providers, the third column is the answer: enough to get cited, not so much that you box yourself in.
Why this is the highest-leverage move right now
Three reasons to sort this out this month, not next quarter:
1. Pricing questions are buying questions. Someone asking ChatGPT what something costs is further in the decision process than someone looking for general info. A mention on a pricing question is therefore more valuable than a mention on “what is a gutter?”. You catch the customer at the moment they’re close to buying.
2. Almost no one in the SMB market does it. In our audits, a missing pricing signal is the rule, not the exception. “Price on request” is still the default. That means: whoever publishes a pricing logic now is nearly alone in the AI answer — a first-mover advantage that evaporates in a year.
3. It reinforces your other GEO work. A price is a concrete, quotable fact — exactly what AI chats love (see tactic 1 in the GEO guide: write quotably). A price with a number gets quoted verbatim more often than a vague promise about quality.
The pricing logic: three building blocks
A good pricing logic has three parts. Put them visibly on your service page, in plain text — this is what both a human and an AI read.
1. The starting price. One concrete opening amount. Not “from a competitive rate,” but “from €99.”
2. The range. Where does it go in the most expensive realistic case? “up to €600 for a large detached property with two stories and lots of surrounding trees.”
3. The factors. What pushes the price up, down, or keeps it flat? This is the part that protects you against “but you said €99?” and helps AI match the customer correctly.
Do: “Gutter cleaning: from €99 for a terraced house up to about €600 for a detached property with two stories. The price depends on: height of the property, length of the gutter, amount of surrounding trees, and access by ladder or lift. Extra work such as cleaning downpipes is charged separately.”
Don’t: “Our rates are competitive and depend on your situation. Contact us for a no-obligation quote.”
The first version gives ChatGPT a complete, quotable answer. The second gives AI nothing — and the customer a reason to click through to someone else.
Make your price machine-readable with Schema.org
The visible text above already works. But as with Schema.org markup: what you state explicitly in JSON-LD, the crawler doesn’t have to interpret. So underneath your visible pricing text, add one of these three blocks.
Starting price — Offer with PriceSpecification
For a service with one opening amount. minPrice explicitly communicates “from.”
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"serviceType": "Gutter cleaning",
"name": "Gutter cleaning Eindhoven",
"provider": { "@type": "LocalBusiness", "@id": "https://yourbusiness.nl/#org" },
"areaServed": ["Eindhoven", "Geldrop", "Veldhoven"],
"offers": {
"@type": "Offer",
"priceSpecification": {
"@type": "PriceSpecification",
"minPrice": "99",
"priceCurrency": "EUR",
"valueAddedTaxIncluded": true
}
}
}
</script>
Price range — AggregateOffer
For a service with a clear lower and upper bound.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"serviceType": "Gutter cleaning",
"provider": { "@type": "LocalBusiness", "@id": "https://yourbusiness.nl/#org" },
"areaServed": "Eindhoven",
"offers": {
"@type": "AggregateOffer",
"lowPrice": "99",
"highPrice": "600",
"priceCurrency": "EUR"
}
}
</script>
The pricing question itself — FAQPage
This block gets quoted verbatim most often, because question-answer is AI chats’ native language. Place it on your service page, alongside your visible FAQ section.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "What does gutter cleaning cost in Eindhoven?",
"acceptedAnswer": {
"@type": "Answer",
"text": "For a terraced house we charge from €99. For a detached property with two stories that rises to about €600. The price depends on height, gutter length, surrounding trees, and access."
}
}]
}
</script>
Note the @id reference to your LocalBusiness block in the first two examples. As in the Schema.org guide, that links the price to your business and location, so the crawler knows this business in Eindhoven charges this price.
The 5 most common mistakes
In the 30+ audits we did last quarter for SMB clients in and around Eindhoven, these pricing mistakes kept coming back:
- “Price on request” as the only signal. For an AI chat this literally means: no data, no mention. It’s the most expensive “free” choice you make.
- A range without factors. “Between €99 and €600” without explanation feels arbitrary and gets cited with hesitation by AI. The factors make the range credible.
- Price only in a PDF or image. A rate in a downloaded price list or in a picture is invisible to crawlers. Prices belong in readable HTML text plus JSON-LD.
- Schema.org price that doesn’t match the visible price. If your markup says €99 but the page says €149, Google penalizes that as misleading. Keep markup and text identical.
- Leaving out the VAT status. For consumers you quote VAT-inclusive, for B2B often exclusive. Without
valueAddedTaxIncluded, the AI guesses — and a wrongly cited price costs you trust with the customer.
Step-by-step plan for your site
Practical, 1 to 2 hours per service page:
Step 1 (20 min) — Choose your pricing model per service. Fixed price, starting price, or range? For most services, starting price + range is the right answer. Write down one opening amount per service.
Step 2 (20 min) — Write the factors. List 3 to 5 factors per service that drive the price. You probably already have these in your head when making quotes — now put them on paper.
Step 3 (15 min) — Place the visible pricing logic. Add a block to each service page: starting price, range, factors, extra work. In plain text, visible to visitors.
Step 4 (20 min) — Add the Schema.org. Pick the fitting block above per service (Offer, AggregateOffer, or FAQPage) and place it in the <head> or at the bottom of the <body>. Link via @id to your LocalBusiness.
Step 5 (10 min) — Validate. Run each page through Google’s Rich Results Test (https://search.google.com/test/rich-results). Check that the price the tool detects matches your visible text.
How to test it
Two measurement points, both immediately usable:
1. Direct pricing question to the AI. After 2 to 3 weeks, ask in ChatGPT (with search on), Claude, and Gemini: “Roughly what does [your service] cost in Eindhoven?” and “Which businesses in Eindhoven do [service] and what do they charge?”. Do you get mentioned, with a price near your starting rate? Then the AI is picking up your markup.
2. Rich Results Test + Search Console. Google’s Rich Results Test shows whether your Offer or FAQPage markup is recognized without errors. In Search Console under Enhancements, you’ll see whether the number of indexed FAQ and merchant pages grows after you place the markup.
In closing
Pricing transparency feels counterintuitive — for years “on request” was the safe choice. But in a world where half of searches end inside an AI chat, staying silent about your price is the same as being invisible at the moment the customer is close to buying.
You don’t give away your margin with a starting price and a few factors. You give AI exactly enough to mention you. For SMBs in Eindhoven who want to show up on pricing questions in 2026: do this this month — before your competitor does.
Don’t feel like writing pricing logic and JSON-LD yourself? SiteOptima maps which service pages are missing a pricing signal, helps write the pricing logic, and delivers ready-to-use Offer and FAQPage markup — placed in 2 to 5 business days. Request a free intake →
Frequently asked questions
Do I really have to put my exact prices online?
No. You publish pricing logic, not a price list. A starting price, a range, and the factors that drive the price are enough to get cited by AI. 'Gutter cleaning from €99, rising to €600 for a two-story home surrounded by trees' gives AI a reference point without giving away your margin or your custom work.
My competitor will look at my prices — isn't that a risk?
Your competitor already knows the market price; staying silent doesn't change that. What silence does cost you is the mention on every pricing question to ChatGPT, Claude, and Gemini. A range with factors gives the competitor no usable edge, but gives the AI exactly enough to mention you. The risk of transparency is small; the risk of invisibility is large.
Which Schema.org types do I use for prices?
Three: Offer with PriceSpecification for a single starting price (minPrice), AggregateOffer with lowPrice and highPrice for a range, and FAQPage for an explicit pricing question with an answer. Link the first two to your LocalBusiness block via @id; the third is the most cited because question-answer is AI chats' native language.
Does this also work for custom work with no fixed price?
Especially then. For custom work you publish a starting price plus the factors that push the price up, down, or keep it flat. 'From €1,500, depending on number of pages, languages, and integrations' is more usable for an AI chat than 'price on request' — which to AI simply means: no reference point, so no mention.
Can SiteOptima set this up for me?
Yes. SiteOptima analyzes which service pages are missing a pricing signal, helps write the pricing logic, and delivers ready-to-use Offer and FAQPage markup — or places it for you directly. Turnaround 2 to 5 business days. Request a free intake at siteoptima.nl.
Ready to be found by AI?
SiteOptima helps SMBs in and around Eindhoven become visible in Google and in ChatGPT, Gemini, and Claude. Start with a free audit.
Start free audit →