Schema markup examples (JSON-LD)
Below are minimal, valid JSON-LD templates for the schema types most useful to answer engines. Replace the example values, keep every fact identical to what is visible on the page, and reuse the same @id for an entity everywhere it appears.
All values are placeholders (example.com, 555 numbers). Validate with Google’s Rich Results Test and the Schema.org validator. Background: structured data for AEO.
Organization with sameAs
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#org",
"name": "Example Plumbing Co.",
"url": "https://example.com/",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://www.linkedin.com/company/example",
"https://www.wikidata.org/wiki/Q00000000"
],
"contactPoint": {"@type": "ContactPoint",
"telephone": "+1-555-010-0000", "contactType": "customer service"}
}
Google documents logo, contactPoint and sameAs for Organization.[1]
Person on a ProfilePage
{
"@context": "https://schema.org",
"@type": "ProfilePage",
"mainEntity": {
"@type": "Person",
"@id": "https://example.com/#jane",
"name": "Jane Doe",
"jobTitle": "Master Plumber",
"worksFor": {"@id": "https://example.com/#org"},
"sameAs": ["https://www.linkedin.com/in/janedoe"]
}
}
Use on author pages; Google supports ProfilePage for creator profiles.[2] Link worksFor to the Organization’s @id.
Article with author and publisher
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to fix a running toilet",
"datePublished": "2026-03-02",
"dateModified": "2026-09-15",
"author": {"@id": "https://example.com/#jane"},
"publisher": {"@id": "https://example.com/#org"},
"image": "https://example.com/img/toilet.jpg"
}
Dates should match the visible “Published” and “Last updated” labels.[3][4]
LocalBusiness
{
"@context": "https://schema.org",
"@type": "Plumber",
"@id": "https://example.com/#org",
"name": "Example Plumbing Co.",
"telephone": "+1-555-010-0000",
"address": {"@type": "PostalAddress",
"streetAddress": "100 Main St", "addressLocality": "Springfield",
"addressRegion": "CA", "postalCode": "90000", "addressCountry": "US"},
"openingHours": "Mo-Fr 08:00-17:00",
"areaServed": "Springfield"
}
Use the most specific subtype (here Plumber) and the same NAP as your Business Profile.[5] See local AEO.
Product
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Example Water Filter 3000",
"sku": "WF3000",
"brand": {"@type": "Brand", "name": "Example"},
"offers": {"@type": "Offer", "price": "149.00",
"priceCurrency": "USD", "availability": "https://schema.org/InStock"}
}
Price and availability must match the page and your Merchant Center feed.[6]
DefinedTerm
{
"@context": "https://schema.org",
"@type": "DefinedTerm",
"name": "Query fan-out",
"description": "Splitting one question into several related searches.",
"inDefinedTermSet": "https://example.com/glossary#set"
}
Group terms in a DefinedTermSet, as this site’s glossary does.[7]
Checklist
- One entity, one
@id, reused everywhere. - Nothing marked up that users cannot see.[8]
- No FAQPage or HowTo expecting a Google rich result (both retired).[9]
Frequently asked questions
JSON-LD or microdata?
Google says JSON-LD, microdata and RDFa are all fine if valid, and marks JSON-LD as recommended.
Can I combine several types on one page?
Yes. Use an @graph array or separate script blocks, and connect nodes with @id references.
See also
References
Pages accessed September 28, 2026 unless a date is given. See all sources and our editorial policy.
- ^ "Organization structured data". Google Search Central.
- ^ "ProfilePage structured data". Google Search Central.
- ^ "Influencing your byline dates in Google Search". Google Search Central.
- ^ "Article structured data". Google Search Central.
- ^ "Local business structured data". Google Search Central.
- ^ "Product structured data". Google Search Central.
- ^ "DefinedTerm and DefinedTermSet". Schema.org.
- ^ "General structured data guidelines". Google Search Central.
- ^ "Latest Google Search documentation updates (changelog)". Google Search Central. Entries for May–June 2026.