Structured data for AI: LocalBusiness, Service and FAQ, with examples
What Google says about markup for AI Overviews, the three blocks a business needs, ready-to-adapt JSON-LD examples and the mistakes to avoid.
By Sébastien Monnier · · 6 min read · Lire en français
Structured data is information that readers never see, written in a format machines understand (JSON-LD). It states without ambiguity: “this page is about this business, which offers this service, in this city, at this price”. Here are the three blocks a business needs, with examples ready to adapt.
What Google says about it
For its AI Overviews, Google states that no special markup is required: the usual best practices are enough (Google documentation). Structured data is therefore not a shortcut. It is still useful for search engines to identify your business correctly, and one rule always applies: it must match what is visible on the page.
The three useful blocks
| Block | What it describes | Where to put it | Priority |
|---|---|---|---|
| LocalBusiness | The business: name, address, phone, area, opening hours | Home page and contact page | High |
| Service | A service: name, area served, indicative price | Each service page | High |
| FAQPage | The questions and answers visible on the page | Pages with an FAQ | Medium |
Table compiled on 26 September 2026. For more specific types (Plumber, Dentist, Restaurant…), see schema.org.
Example 1: the business
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Plomberie Durand",
"url": "https://plomberie-durand.fr",
"telephone": "+33 3 20 12 34 56",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 rue Nationale",
"postalCode": "59000",
"addressLocality": "Lille",
"addressCountry": "FR"
},
"areaServed": ["Lille", "Roubaix", "Tourcoing"],
"openingHours": "Mo-Sa 08:00-19:00"
}
Example 2: a service
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Drain unblocking",
"provider": { "@type": "Plumber", "name": "Plomberie Durand" },
"areaServed": "Lille",
"offers": { "@type": "Offer", "price": "89", "priceCurrency": "EUR" }
}
Example 3: the FAQ
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does drain unblocking cost in Lille?",
"acceptedAnswer": { "@type": "Answer", "text": "From €89 incl. VAT, free quote." }
}
]
}
Write the structured data in the same language as the visible page: if your page is in French, so is its markup.
Common mistakes
| Mistake | Consequence |
|---|---|
| A phone number different from the one displayed | Conflicting information, less trust |
| An FAQ marked up but missing from the page | Against Google’s rules |
| The same Service block copied onto every page | No page stands out |
| Prices that are never updated | Wrong answers repeated by the assistants |
Recoia generates the Service block and the FAQ for each page to create, in the page brief of each opportunity, and compares your page with the ones AI assistants recommend (structured data included).
Updated 26 September 2026.