Schema.org for AI Citations: The 4 Markup Types SMBs in Eindhoven Need

Pages with correct Schema.org markup get cited 3 to 5 times more often in AI answers. Which four types you really need, with copy-paste JSON-LD for SMBs in Eindhoven.

Schema.org for AI Citations: The 4 Markup Types SMBs in Eindhoven Need

A crawler reads your homepage. What does it actually see?

GPTBot arrives on your homepage. It sees a paragraph saying “The customer comes first with us”, a phone number, three customer reviews, a form and a block about opening hours.

The crawler does not know which of this is a business, which is a review, which is an address. It is all text. It guesses.

With Schema.org it doesn’t guess. One invisible JSON block in the header of your page tells the bot: “This is a LocalBusiness, name X, located at address Y, phone number Z, open at these hours, with this rating.”

The difference is concretely measurable: in our audits we see that pages with correct Schema.org markup are cited up to 3 to 5 times more often by ChatGPT and Claude than identical pages without. For SMB owners in Eindhoven who want to be found via “best optician Eindhoven” or “plumber Strijp”, this is the highest lever per hour of work you can pull today.

This guide covers the four markup types you really need, with copyable JSON-LD you can place today.

What Schema.org actually is

Schema.org is an open standard, developed by Google, Microsoft, Yahoo and Yandex, for describing entities on a web page in a form that search engines and AI crawlers can interpret unambiguously. You add it via a <script type="application/ld+json"> block in the header of your page.

The standard dates from 2011, but its relevance has only grown in 2026. The reason: AI chats are bad at interpreting sloppy HTML and good at adopting machine-readable data. Schema.org is exactly that.

A minimal example for a service page:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "SEO audit",
  "provider": {
    "@type": "LocalBusiness",
    "name": "SiteOptima"
  },
  "areaServed": "Eindhoven",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "EUR"
  }
}
</script>

This block says: there is a service called SEO audit, offered by SiteOptima, in the service area Eindhoven, for €0. An AI chat that gets the question “who offers free SEO audits in Eindhoven?” has enough here to cite you explicitly, including name and place.

The four markup types for SMBs in Eindhoven

In 95% of the SMB sites we audit, we need exactly four types. Apply them and you cover most AI citation opportunities.

1. LocalBusiness on your homepage: mandatory for local mentions

This is the most important block. Without LocalBusiness markup, an AI chat has no formal signal that your business is based in a specific location. With this block you come into view for every local query.

For an SMB owner in Eindhoven, a complete LocalBusiness looks like this:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://yourbusiness.nl/#org",
  "name": "Your Business Name",
  "description": "Short one-sentence description of what you do and for whom.",
  "url": "https://yourbusiness.nl",
  "telephone": "+31401234567",
  "email": "info@yourbusiness.nl",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Voorbeeldstraat 12",
    "addressLocality": "Eindhoven",
    "postalCode": "5611 AA",
    "addressCountry": "NL"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 51.4416,
    "longitude": 5.4697
  },
  "areaServed": ["Eindhoven", "Geldrop", "Veldhoven", "Best"],
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "09:00",
    "closes": "17:00"
  }],
  "priceRange": "€€"
}
</script>

You can be more specific than LocalBusiness: Restaurant, MedicalBusiness, LegalService, Plumber, Optician are all sub-types. The more specific, the better the match for AI questions in your industry.

2. Article on every blog post: for quotability

To an AI crawler, a blog post without Article markup is just “a page with text”. With Article markup, every post gets:

  • An explicit title
  • An author with name and role
  • A publication date (important: AI chats often prioritise recent sources)
  • An explicit “this page is about X”

A good Article block for a SiteOptima blog post:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Schema.org for AI citations",
  "datePublished": "2026-09-08",
  "dateModified": "2026-09-08",
  "author": {
    "@type": "Person",
    "name": "René Scholten",
    "jobTitle": "Founder, SiteOptima"
  },
  "publisher": {
    "@type": "Organization",
    "name": "SiteOptima",
    "url": "https://siteoptima.nl"
  },
  "inLanguage": "en-US",
  "keywords": "GEO, Schema.org, AI search, SMB, Eindhoven"
}
</script>

Tip: for Eindhoven SMB blogs about a specific region or client, add about with a reference to your LocalBusiness block via @id. That strengthens the link between your brand and your location in the eyes of the crawler.

3. FAQPage wherever you answer questions: the highest citation chance

This type has the highest impact per minute of work. A FAQPage block is adopted in full by ChatGPT and Claude more often than any other type. The reason: AI chats are fundamentally question-and-answer machines; structured Q&A is their native language.

Place FAQPage on every page with a FAQ block at the bottom, plus on your homepage if it has a “Frequently asked questions” section:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What does an SEO audit cost?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A basic audit is free. A full technical audit with implementation advice costs €450. We deliver both within 5 working days."
      }
    },
    {
      "@type": "Question",
      "name": "Do you only work in Eindhoven?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "We focus on SMB owners in Eindhoven, Helmond and the surrounding municipalities. For clients elsewhere in the Netherlands we work remotely on a project basis."
      }
    }
  ]
}
</script>

Three rules for a good FAQPage:

  1. Questions should sound the way a real customer asks them, not the way a marketer phrases them. Not “Why choose SiteOptima?” but “What sets SiteOptima apart from other SEO agencies in Eindhoven?”
  2. Answers of at most 2 to 3 sentences. Long answers get shortened; short answers get quoted verbatim.
  3. One concrete fact per answer: a price, a timeframe, a name, a number. Vague answers get picked up less often.

4. Service or Product on service pages

A separate page for every service or product, and on that page a Service block (or a Product block for physical products). This is what AI chats use to match your offering to a user’s question.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "serviceType": "GEO optimisation",
  "name": "GEO optimisation for SMBs",
  "description": "Full optimisation of your website for citation by ChatGPT, Claude and Gemini.",
  "provider": {
    "@type": "LocalBusiness",
    "@id": "https://yourbusiness.nl/#org"
  },
  "areaServed": "Brabant",
  "offers": {
    "@type": "Offer",
    "priceCurrency": "EUR",
    "price": "1500",
    "priceSpecification": {
      "@type": "PriceSpecification",
      "price": "1500",
      "priceCurrency": "EUR",
      "valueAddedTaxIncluded": false
    }
  }
}
</script>

Note the @id reference: this links the service to your LocalBusiness block on the homepage. That creates a graph that crawlers can follow, comparable to how Wikipedia pages reference each other.

The five mistakes we keep running into

In the 30+ audits we did last quarter for SMB clients in and around Eindhoven, these mistakes kept coming back:

  1. No address fields filled in on LocalBusiness. A LocalBusiness without streetAddress and addressLocality is useless for local AI questions. Fill in every field; if in doubt, ask a neighbour whether your address is recognisable enough.
  2. FAQPage answers that are marketing copy. “Our service is top notch!” never gets cited. “€450 for an audit, turnaround 5 working days” does.
  3. Duplicate Schema.org blocks that contradict each other. Yoast places an Organization block, your theme places another with different data, you add a third yourself. Crawlers get confused. Audit and consolidate.
  4. Broken @id references. Pointing to an @id that doesn’t exist is the same as skipping the whole block. Test every link.
  5. Schema.org on the homepage only. The homepage rarely appears in AI answers; service pages, blog posts and case studies do. Markup belongs on every important page, not just your front door.

How to test it

Two free tools, both directly usable:

Google’s Rich Results Test, https://search.google.com/test/rich-results. Paste in your URL and you immediately see which Schema.org types Google detects and whether there are errors. This is the definitive check for SEO and GEO alike; Google’s parser is stricter than those of the AI chats.

Schema.org’s own validator, https://validator.schema.org. Stricter than Google’s tool, but useful for deeper validation of complex markup.

For ongoing monitoring, Google Search Console shows under Enhancements how many pages with which Schema.org types Google has indexed. If that number doesn’t grow after you add markup, you know something is off.

Step-by-step for your site

Practical, 2 to 4 hours of work depending on the size of your site:

Step 1 (30 min). Take stock. Make a list: how many pages does your site have? Which are services, which are blog posts, which have a FAQ block? Which already have Schema.org (check with the Rich Results Test)?

Step 2 (45 min). Create one LocalBusiness block for your homepage. Fill in every field, including opening hours and coordinates (use Google Maps for the coordinates). Place it in the <head> of your homepage.

Step 3 (60 min). Article on your 5 most important blog posts. For SMBs with fewer than 20 blog posts: all of them. For larger sites: start with the 5 most visited and expand from there.

Step 4 (45 min). FAQPage on pages with FAQ blocks. Including your homepage if it has a FAQ section. Make sure every question in the markup is also visible on the page. Google penalises “hidden FAQ”.

Step 5 (30 min). Service on every service page. One Service block per service, linked via @id to your LocalBusiness.

Step 6 (15 min). Validate. Run every changed page through the Rich Results Test. Fix errors right away; remove duplicate blocks.

In closing

Schema.org is not the most exciting GEO tactic. No quick win, no virality, no pretty visual result. But it is the tactic with the highest citation lift per hour invested. One morning of work, years of effect, no maintenance.

For SMBs in Eindhoven that want to stand out in AI answers in 2026: do this this month. It gets harder to achieve a year from now, because by then everyone will have done it. Not yet.


No time or inclination to write JSON-LD blocks yourself? SiteOptima audits your site, delivers ready-made Schema.org markup for every relevant page and places it within 2 to 5 working days. Request a free intake →

Frequently asked questions

Do I really need Schema.org on top of good content?

Yes. Without Schema.org the AI crawler has to guess whether a block of text is a service, a product price, or just a paragraph. With Schema.org your page literally says: 'this is a FAQ', 'this is a business based in Eindhoven', 'this is a price in euros'. The crawler no longer has to interpret, and interpretation is exactly where errors in AI citations come from.

Does Schema.org work the same for all AI chats?

Google's Gemini and AI Overview lean on Schema.org the most; there you often see direct adoption. ChatGPT and Claude use it indirectly: their search mode pulls in data via Bing and Google, which both parse Schema.org. The same goes for Perplexity. No AI chat ignores it entirely.

What is the difference between Schema.org and llms.txt?

llms.txt is a Markdown overview page for LLMs: what is my site, which pages matter. Schema.org is per-page, machine-readable metadata: what is on this specific page. They complement each other. llms.txt gives the bird's-eye view, Schema.org the detailed map.

My WordPress theme uses Yoast SEO. Do I already have Schema.org then?

Yoast adds basic Schema.org (WebSite, BreadcrumbList, Person), but misses precisely the types that count for GEO: LocalBusiness with full NAP data, Service per service, FAQPage per FAQ block. Yoast is a good foundation, not a complete solution for GEO.

Can SiteOptima implement this for me?

Yes. SiteOptima audits your site, identifies missing or faulty Schema.org markup and delivers ready-made JSON-LD blocks plus implementation instructions, or we place them for you directly. Turnaround 2 to 5 working 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 →