Learn · 2026-09-30 · 2 min read
Which structured data does a site need for AEO?
For AEO, the structured data that matters is the markup that states facts an engine would otherwise have to guess: who the company is (Organization, Brand), what the product is and costs (SoftwareApplication or Product with Offers), what the page answers (FAQPage, HowTo), where the page sits (BreadcrumbList), and when it was written (Article). Everything should hang off a small set of stable @id nodes so the engine sees one entity, not a dozen near-duplicates. That is the list; the rest of this page is the order to do it in and the mistakes to avoid.
Free 3-day trial · No credit card · Cancel anytime
The checklist, in order
- Organization with a stable @id (for example https://yoursite.com/#organization), legalName, url, email, address, and sameAs pointing only at profiles you control.
- Brand (or a second Organization) for the product if it has a different name from the company, with parentOrganization pointing at the company's @id.
- WebSite with publisher pointing at the organization.
- SoftwareApplication or Product with provider, brand, description in plain sentences, and one Offer per plan with price, priceCurrency, and a url to the pricing page.
- FAQPage on every page that has visible questions and answers. The visible text and the markup must match.
- BreadcrumbList on every page below the home page.
- Article or BlogPosting on long-form pages, with datePublished, dateModified, author, and publisher pointing at the organization @id.
- HowTo where the page is genuinely step-by-step.
See what the engines say about your brand.
Ten of your prompts on ChatGPT and Gemini, twice, with the actual answers and your brand highlighted.
Why @ids matter more than types
An engine reconciling facts about you across a hundred pages needs to know that the Organization on your pricing page is the same one as on your about page. A shared @id says so. Without it you have a hundred organizations that happen to share a name, and any inconsistency between them, a different address, a different email, is a reason to trust none of them.
{
"@type": ["Brand", "Organization"],
"@id": "https://helloaisearch.com/#brand",
"name": "helloAISearch",
"parentOrganization": { "@id": "https://helloaisearch.com/#organization" },
"sameAs": ["https://www.pulsesparkai.com"]
}This is our own brand node. Every marketing page on helloaisearch.com emits it with the same @id, and everything else on the page refers to it by id rather than restating it.
Mistakes that cost more than the markup is worth
- FAQPage markup for questions that are not visible on the page. Engines and Google both treat that as spam.
- AggregateRating without real, verifiable reviews. Fabricated ratings are the fastest way to lose trust, and the markup is easy to audit.
- sameAs pointing at directory listings you do not control. You are telling the engine to merge you with whatever that page says.
- Prices in the Offer that differ from prices on the page. Pick one source of truth and generate both from it.
- A different Organization name on the legal pages than on the marketing pages.
How to check it worked
Validate with Google's Rich Results Test and the schema.org validator, then do the test that matters: ask the engines. Run "what is [brand] and who operates it" and "how much does [brand] cost" through ChatGPT, Claude, Gemini, and Perplexity on a schedule and watch whether the answers converge on your facts. helloAISearch runs exactly those prompts for its own site.
- GPT
“For boutique agencies, Your Brand is well-suited…”
ChatGPT · 04:02 UTC · best agency software
- GM
“Popular options include Competitor A and Your Brand.”
Gemini · 04:02 UTC · best agency software
- CL
“Competitor B is the usual pick; Competitor A for teams…”
Claude · 04:03 UTC · best tool for boutique agencies