Structured data for AI search: what JSON-LD does and how to add it

Most pages make a machine guess what they're about. Structured data stops the guessing. It's a small block of code that says, in a format every major engine understands, "this is an article, written by this person, published on this date," or "this is a product, priced at this, with these reviews." When an AI engine is deciding whether it can trust and cite your page, that clarity is worth a lot.

It's also one of the few GEO improvements that's almost entirely upside: low effort, no design changes, and it helps classic search at the same time.

What JSON-LD actually is

Structured data is metadata that describes your content using a shared vocabulary from schema.org. The preferred format, and the one Google, Bing, and the AI engines all read happily, is JSON-LD: a <script> tag in your page's <head> containing a JSON object.

Here's a minimal example for a blog post:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How to speed up a slow website",
  "description": "Practical fixes for a faster site, in plain English.",
  "datePublished": "2026-02-10",
  "dateModified": "2026-05-01",
  "author": { "@type": "Organization", "name": "Acme" }
}
</script>

That's it. It doesn't change how the page looks to a human. It just hands engines a clean, unambiguous summary they'd otherwise have to infer from your HTML.

Why it matters for AI answers

When an answer engine reads your page, it's doing two things at once: working out what the page is, and deciding whether to trust it enough to cite. Structured data helps with both.

  • Identity. @type tells it this is an Article, FAQPage, Product, or Organization, so it can match your page to the right kind of question.
  • Attribution. author and publisher give the engine someone to credit. Pages with a clear author are easier to cite confidently.
  • Recency. datePublished and dateModified let the engine judge whether your information is current, which feeds directly into content freshness.
  • Specific facts. A Product with a price, or a FAQPage with question-answer pairs, gives the engine liftable facts instead of prose it has to interpret.

None of this guarantees a citation. But it removes friction, and removing friction is most of what GEO is.

Which types to use

Don't overthink it. Match the type to the page:

  • Articles and blog postsArticle or BlogPosting
  • Your homepage / about pageOrganization (with logo, name, social profiles)
  • An FAQ or a page with a Q&A sectionFAQPage
  • Product pagesProduct (with offers and aggregateRating if you have real reviews)
  • Any page with a breadcrumb trailBreadcrumbList

A page can carry more than one type. An article that also answers common questions can include both BlogPosting and FAQPage.

How to add it without a developer

If you're on WordPress, Shopify, Webflow, or most modern CMSs, a plugin or built-in setting generates JSON-LD for you. Turn it on and pick the right type per template. If you hand-roll your site, paste the script into the <head>. Either way:

  1. Write or generate the JSON-LD for one page type.
  2. Run it through Google's Rich Results Test or the Schema Markup Validator to catch syntax errors.
  3. Make sure the data matches what's actually on the page. Don't claim a review rating you don't have. Engines (and Google's guidelines) treat mismatched markup as a red flag.

Common mistakes

  • Marking up things that aren't on the page. If the JSON-LD says there's an FAQ, there'd better be a visible FAQ. Invented markup gets ignored at best, penalized at worst.
  • Leaving placeholder values. "author": "Your Name Here" shipped to production is more common than you'd think.
  • One generic block sitewide. A single Organization blob on every page is fine as a baseline, but your article pages should describe the article, your product pages the product.
  • Invalid JSON. A trailing comma breaks the whole block. Validate before you ship.

FAQ

Is JSON-LD better than microdata or RDFa?

For practical purposes, yes. JSON-LD sits in one script tag instead of being woven through your HTML, it's what Google recommends, and it's the easiest to maintain.

Will structured data directly improve my rankings?

It's not a direct ranking boost, but it makes you eligible for rich results in classic search and makes your content easier for AI engines to understand and cite. The indirect effect is real.

How much should one page have?

Enough to describe the page accurately and no more. One well-formed Article block with an author and dates beats five half-filled types.

Do I need to update it when I edit the page?

Update dateModified when you make a meaningful change, and keep facts (price, ratings) in sync. Stale structured data undercuts the trust it's meant to build.

Key Takeaways

  • Structured data is metadata in the schema.org vocabulary that tells engines exactly what a page is; the preferred format is JSON-LD, a <script type="application/ld+json"> block in the page's <head>.
  • For AI answers, JSON-LD supplies identity (@type), attribution (author, publisher), recency (datePublished, dateModified), and liftable facts, which together make a page easier to match, trust, and cite.
  • Match the type to the page: Article or BlogPosting for posts, Organization for the homepage, FAQPage for Q&A, Product for product pages, and BreadcrumbList for breadcrumb trails.
  • Markup must describe what is actually on the page; invented or mismatched data (an FAQ that isn't visible, a review rating you don't have) gets ignored or penalized.
  • Validate JSON-LD with Google's Rich Results Test or the Schema Markup Validator before shipping, since a single trailing comma breaks the whole block.

Want to see which schema types your pages already expose, and which are missing an author or dates? Run a free audit. It's one of the first things we check. See the rest in the GEO explainers.