---
title: "Describe each page for machines · Agent Wranglers"
url: https://agentwranglers.se/playbook/seo/search-result-appearance/structured-data
id: SEO-16
level: Recommended
updated: 2026-10-22
tokens: 1063
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Describe each page for machines

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Search result appearance](https://agentwranglers.se/playbook/seo/search-result-appearance.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-22.

- ID: SEO-16
- Level: Recommended
- Chapter: [Search result appearance](https://agentwranglers.se/playbook/seo/search-result-appearance.md)
- Rule: Describe each page with schema.org JSON-LD, a block of data search engines read. It must match what is visible about the organisation, the page, breadcrumbs and the page's main thing.
- Check: The build parses every page's JSON-LD and fails on invalid JSON. Google's Rich Results Test and the Schema.org validator report no errors on each page type.
- How: Build one JSON-LD `@graph` per page from page data, with `Organization`, `WebSite`, `WebPage` and `BreadcrumbList`. Add the page's main type, such as `Service`, `Article` or `Product`. Mark up only what visitors can see on the page. Escape `<` as `\u003c` inside the script. Use `FAQPage` only for questions shown on the page. Google stopped showing FAQ rich results on 7 May 2026, but still reads the markup to understand the page. Order and booking email takes the same markup, as [Add structured data to orders and bookings](https://agentwranglers.se/playbook/email/automation-and-agents/email-markup.md) says.

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### HTML example

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "Organization", "@id": "https://example.com/#org", "name": "Example", "url": "https://example.com/" },
    { "@type": "WebSite", "@id": "https://example.com/#site", "url": "https://example.com/", "publisher": { "@id": "https://example.com/#org" } },
    { "@type": "WebPage", "@id": "https://example.com/pricing", "name": "Pricing", "isPartOf": { "@id": "https://example.com/#site" } }
  ]
}
</script>
```

## Sources

- [Schema.org – Getting started](https://schema.org/docs/gs.html)
- [W3C JSON-LD 1.1](https://www.w3.org/TR/json-ld11/)
- [Google Search Central – Intro to structured data](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data)

## Related rules

- EML-68 [Add structured data to orders and bookings](https://agentwranglers.se/playbook/email/automation-and-agents/email-markup.md) in Email
- SEO-17 [Show where the page sits](https://agentwranglers.se/playbook/seo/site-structure/breadcrumbs.md) in SEO
- SEO-44 [Validate rich results before every release](https://agentwranglers.se/playbook/seo/search-result-appearance/rich-results-validation.md) in SEO
- SEO-45 [Set the site name search results show](https://agentwranglers.se/playbook/seo/search-result-appearance/site-name.md) in SEO
- SEO-59 [Structured data that misleads](https://agentwranglers.se/playbook/seo/search-spam-and-penalties/misleading-structured-data.md) in SEO
- SEO-62 [Use the same name and address everywhere](https://agentwranglers.se/playbook/seo/local-search/consistent-nap.md) in SEO
- ECM-4 [Describe each product for machines from the same data](https://agentwranglers.se/playbook/ecommerce/catalog-and-prices/product-markup.md) in E-commerce and fulfilment

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/seo/search-result-appearance/structured-data">Agent Wranglers SEO playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Write titles search engines keep](https://agentwranglers.se/playbook/seo/search-result-appearance/title-rewrites.md)
- Next: [Validate rich results before every release](https://agentwranglers.se/playbook/seo/search-result-appearance/rich-results-validation.md)
- [Search result appearance](https://agentwranglers.se/playbook/seo/search-result-appearance.md)
