Schema Markup for GEO: JSON-LD Implementation Guide
18 min read
Schema Markup for GEO: JSON-LD Implementation Guide
Reading time: 18 minutes
TLDR
Schema.org structured data (JSON-LD format) is the foundation of GEO (Generative Engine Optimization). It helps AI platforms like ChatGPT, Claude, and Gemini understand your business, products, services, and expertise. Unlike meta tags (which only help Google), schema markup benefits both traditional SEO and AI discovery. This guide provides copy-paste JSON-LD examples for the most impactful schema types: LocalBusiness, Product, FAQ, Service, Organization, and BreadcrumbList. with real-world implementations and testing strategies.
Why Schema Markup is Critical for GEO
The Problem: AI Platforms Need Structure
Without schema markup:
- AI platforms parse your website as unstructured HTML text
- They guess what your business does based on context clues
- Accuracy depends on how well you write (and how well they interpret)
- Result: Generic, inaccurate, or incomplete citations
With schema markup:
- AI platforms read explicit, structured data about your business
- They know your exact products, pricing, location, hours, reviews
- No guessing. Just facts in a machine-readable format
- Result: Accurate, detailed, confident citations
Schema Markup: SEO + GEO Dual Benefit
Traditional SEO Benefits:
- Google rich snippets (star ratings, pricing, hours)
- Enhanced search results (FAQ accordions, breadcrumbs)
- Knowledge Graph inclusion
- Local pack rankings (LocalBusiness schema)
GEO Benefits (AI Platforms):
- ChatGPT cites your products/services accurately
- Claude understands your pricing and differentiators
- Gemini pulls from your FAQ for direct answers
- Perplexity includes your business in recommendations
One implementation, dual benefit. Every schema markup you add for SEO also helps GEO.
JSON-LD vs. Microdata vs. RDFa
Three formats for schema markup:
| Format | Readability | Maintenance | SEO Support | GEO Support | Recommendation |
|---|---|---|---|---|---|
| JSON-LD | High (separate from HTML) | Easy | Full | Best | Use this |
| Microdata | Medium (inline HTML attributes) | Hard | Full | Partial | Avoid |
| RDFa | Low (complex syntax) | Very hard | Full | Limited | Avoid |
Why JSON-LD wins for GEO:
- AI-friendly format: AI platforms already parse JSON natively
- Easier maintenance: Schema lives in
<script type="application/ld+json">tags, separate from HTML - Google-recommended: JSON-LD is Google’s preferred format (and what Gemini reads)
- Developer-friendly: Can be generated dynamically from backend data
Bottom line: Use JSON-LD for all schema markup. Ignore Microdata and RDFa.
Essential Schema Types for GEO
Priority Matrix
| Schema Type | SEO Impact | GEO Impact | Implementation Difficulty | Priority |
|---|---|---|---|---|
| LocalBusiness | Medium | Implement first | ||
| Organization | Low | Implement first | ||
| FAQ | Low | Implement first | ||
| Product | Medium | Implement second | ||
| Service | Medium | Implement second | ||
| BreadcrumbList | Low | Implement third | ||
| Review/Rating | Medium | Implement with Product/Service |
Recommendation: Start with LocalBusiness/Organization + FAQ. These three schema types give you 80% of GEO value with minimal effort.
1. LocalBusiness Schema (Critical for Local GEO)
When to Use
- Any business with a physical location
- Service-area businesses (plumbers, movers, contractors)
- Restaurants, retail stores, offices
GEO Impact
- Gemini pulls directly from LocalBusiness schema for local recommendations
- ChatGPT uses Bing’s crawl of LocalBusiness data
- Perplexity queries Google Places API (which reads LocalBusiness schema)
Copy-Paste Template
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Veterans Moving America",
"image": "https://www.veteransmovingamerica.com/images/logo.jpg",
"url": "https://www.veteransmovingamerica.com",
"telephone": "+1-214-555-0199",
"email": "info@veteransmovingamerica.com",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "4567 Oak Lawn Ave",
"addressLocality": "Dallas",
"addressRegion": "TX",
"postalCode": "75219",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 32.8157,
"longitude": -96.8067
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "08:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "15:00"
}
],
"sameAs": [
"https://www.facebook.com/veteransmovingamerica",
"https://www.yelp.com/biz/veterans-moving-america-dallas"
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
},
"description": "100% veteran-staffed moving company serving Dallas-Fort Worth with transparent flat-fee pricing and military discipline. Specializing in residential relocations and fragile item handling.",
"areaServed": {
"@type": "GeoCircle",
"geoMidpoint": {
"@type": "GeoCoordinates",
"latitude": 32.8157,
"longitude": -96.8067
},
"geoRadius": "50000"
},
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Moving Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Local Moving",
"description": "Residential moving services within Dallas-Fort Worth metroplex"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Long-Distance Moving",
"description": "Interstate moving services to/from Texas"
}
}
]
}
}
</script>
Critical Fields for GEO
Must-have fields:
name- Exact business name (as it appears on Google Business Profile)address- Complete postal address (helps AI understand location)telephone- Primary contact numberdescription- 1-2 sentence business description with key differentiatorsurl- Primary website URL
High-impact optional fields:
aggregateRating- Star rating and review count (builds authority)priceRange- $ to $$$$ indicator (helps AI understand positioning)areaServed- Geographic service area (critical for “near me” queries)sameAs- Links to social profiles (helps AI verify legitimacy)
2. Organization Schema (Critical for Brand Identity)
When to Use
- Any business (local or online)
- SaaS companies
- E-commerce sites
- Service providers
GEO Impact
- Helps AI platforms understand your brand identity
- Links your website to social profiles and other properties
- Establishes organizational authority
Copy-Paste Template
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Surmado",
"url": "https://www.surmado.com",
"logo": "https://www.surmado.com/images/surmado-logo.png",
"description": "No-BS AI visibility and SEO tools. $25, $50, or $100 per report. 15 minutes. No subscriptions.",
"foundingDate": "2024",
"founders": [
{
"@type": "Person",
"name": "John Doe"
}
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-555-0100",
"contactType": "Customer Support",
"email": "hi@surmado.com",
"availableLanguage": ["English"]
},
"sameAs": [
"https://twitter.com/surmado",
"https://www.linkedin.com/company/surmado",
"https://github.com/surmado"
],
"address": {
"@type": "PostalAddress",
"addressLocality": "San Diego",
"addressRegion": "CA",
"addressCountry": "US"
}
}
</script>
3. FAQ Schema (Highest ROI for GEO)
Why FAQ Schema is Critical for GEO
The AI Use Case:
- User asks ChatGPT: “How much does Surmado cost?”
- ChatGPT reads your FAQ schema
- ChatGPT cites: “Surmado uses a credit system: 1 credit = $25. Signal costs 2 credits ($50)…”
No FAQ schema? ChatGPT guesses based on unstructured content (often wrong).
With FAQ schema? ChatGPT reads structured Q&A pairs (always accurate).
Copy-Paste Template
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does Surmado cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Surmado uses a credit system where 1 credit = $25. Scan Essential costs 1 credit ($25), Scan Pro costs 2 credits ($50), Signal costs 2 credits ($50), and Solutions costs 2 credits ($50). The Complete Visibility Suite is 4 credits ($100) and includes all three tools. There are no subscriptions. You only pay when you need a report."
}
},
{
"@type": "Question",
"name": "How long does a Signal report take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Signal reports typically arrive in about 15 minutes. Our automated system tests your business across 7 AI platforms (ChatGPT, Claude, Gemini, Perplexity, Copilot, Grok, Meta AI) and delivers a downloadable PDF report with executive summary and detailed methodology."
}
},
{
"@type": "Question",
"name": "What is the difference between Scan and Signal?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Scan is a technical SEO audit that checks your website's performance, accessibility, security, and schema markup. Signal is an AI visibility report that tests how ChatGPT, Claude, Gemini, and other AI platforms discover and recommend your business. Scan fixes your technical foundation, while Signal measures your AI visibility. Both complement each other."
}
},
{
"@type": "Question",
"name": "Does Surmado require a subscription?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. Surmado uses a credit-based pay-as-you-go system with no subscriptions. You buy credits ($25 each) and use them when you need reports. Credits never expire, and there's no recurring billing."
}
},
{
"@type": "Question",
"name": "What is GEO (Generative Engine Optimization)?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Generative Engine Optimization (GEO) is the practice of optimizing your content to appear in AI-generated answers from ChatGPT, Claude, Gemini, and Perplexity. It's similar to SEO (Search Engine Optimization) but focuses on AI recommendation engines instead of traditional search engines. GEO helps ensure AI platforms recommend your business when users ask for suggestions."
}
}
]
}
</script>
FAQ Schema Best Practices
1. Answer the questions users actually ask AI platforms
- Run a Surmado Signal report to see what AI platforms say about you
- Identify inaccuracies or gaps
- Create FAQ schema entries that correct those gaps
2. Use natural language (not keyword-stuffed)
- “Surmado pricing cost how much expensive cheap”
- “How much does Surmado cost?”
3. Provide complete answers (not teaser text)
- “Surmado costs $25, $50, or $100. Visit our pricing page for details.”
- “Surmado uses a credit system where 1 credit = $25. Scan Essential costs 1 credit ($25), Signal costs 2 credits ($50)…”
4. Include numbers, specifics, and differentiators
- AI platforms love concrete facts: prices, timeframes, quantities
- Vague answers get ignored
4. Product Schema (For SaaS and E-commerce)
When to Use
- SaaS products
- Physical products
- Digital products
- Service packages
Copy-Paste Template (SaaS Product)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Surmado Signal - AI Visibility Report",
"description": "Test how ChatGPT, Claude, Gemini, and Perplexity see your business. Get your AI visibility baseline in 15 minutes with persona-specific discovery testing, Authority Score, competitor benchmarks, and Ghost Influence analysis.",
"brand": {
"@type": "Brand",
"name": "Surmado"
},
"offers": {
"@type": "Offer",
"url": "https://www.surmado.com/signal",
"priceCurrency": "USD",
"price": "50.00",
"priceValidUntil": "2025-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "50.00",
"priceCurrency": "USD",
"referenceQuantity": {
"@type": "QuantitativeValue",
"value": "2",
"unitText": "credits"
}
},
"seller": {
"@type": "Organization",
"name": "Surmado"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "83"
},
"category": "Business Software",
"audience": {
"@type": "BusinessAudience",
"audienceType": "Small Business Owners, Marketing Agencies, SEO Specialists"
}
}
</script>
Product Schema Best Practices
1. Include pricing (if public)
- AI platforms cite pricing in recommendations
- Transparency builds trust
- Use
priceSpecificationfor credit-based or tiered pricing
2. Add aggregate ratings (if you have reviews)
- Star ratings build authority signals
- Minimum 5 reviews recommended for credibility
3. Describe what makes your product different
- Don’t just list features. explain benefits
- Include specifics: “15 minutes” not “fast”, “$50” not “affordable”
5. Service Schema
When to Use
- Service-based businesses (plumbers, consultants, agencies)
- SaaS with service components (onboarding, support)
Copy-Paste Template
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Local Moving Services",
"serviceType": "Residential Moving",
"provider": {
"@type": "LocalBusiness",
"name": "Veterans Moving America",
"url": "https://www.veteransmovingamerica.com"
},
"areaServed": {
"@type": "City",
"name": "Dallas"
},
"description": "Full-service residential moving with transparent flat-fee pricing. 100% veteran-staffed team with military discipline and fragile item expertise.",
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"price": "150.00",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "150.00",
"priceCurrency": "USD",
"referenceQuantity": {
"@type": "QuantitativeValue",
"value": "1",
"unitText": "hour"
}
}
},
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Moving Service Options",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Local Moving (2-hour minimum)",
"description": "Residential moving within Dallas city limits"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Packing Services",
"description": "Professional packing of fragile and valuable items"
}
}
]
}
}
</script>
6. BreadcrumbList Schema
When to Use
- Multi-level websites (documentation, e-commerce, blogs)
GEO Impact
- Helps AI platforms understand site hierarchy
- Improves context for deep-linked pages
Copy-Paste Template
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Help Home",
"item": "https://help.surmado.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Technical Guides",
"item": "https://help.surmado.com/guides"
},
{
"@type": "ListItem",
"position": 3,
"name": "Schema Markup for GEO"
}
]
}
</script>
Implementation Checklist
Phase 1: Foundation (Week 1)
- Add Organization schema to homepage
- Add LocalBusiness schema (if applicable)
- Create FAQ page with FAQ schema (minimum 5 Q&A pairs)
- Test with Google Rich Results Test
- Deploy to production
Phase 2: Product/Service Pages (Week 2)
- Add Product schema to each product/service page
- Include pricing, ratings, and detailed descriptions
- Add Service schema for service-based offerings
- Test each page with Rich Results Test
Phase 3: Site-Wide Structure (Week 3)
- Add BreadcrumbList schema to all pages
- Verify schema inheritance (Organization on all pages)
- Audit for missing or duplicate schema
- Re-test entire site
Testing Your Schema Implementation
Step 1: Google Rich Results Test
URL: https://search.google.com/test/rich-results
Process:
- Enter your page URL
- Click “Test URL”
- Review detected schema types
- Fix any errors or warnings
What to check:
- All schema types detected correctly
- No errors (red flags)
- Warnings are OK (but fix if possible)
- Preview looks correct (star ratings, prices display)
Step 2: Schema Markup Validator
URL: https://validator.schema.org
Process:
- Paste your JSON-LD code
- Click “Run Test”
- Review validation results
What to check:
- Valid JSON syntax
- All required properties present
- No type mismatches
Step 3: View Rendered Schema in Browser
Chrome DevTools Method:
- Open page in Chrome
- Right-click → “Inspect”
- Search page source for
application/ld+json - Verify JSON renders correctly
Command Line Method:
curl -s https://yoursite.com | grep -A 50 'application/ld+json'
Step 4: Test AI Platform Discovery
Method 1: Direct Testing (ChatGPT)
Prompt: "What structured data is available at https://yoursite.com?"
Expected: ChatGPT should summarize your schema (if indexed)
Method 2: Surmado Signal Report
- Run Signal before adding schema (baseline)
- Add schema and wait 30-60 days
- Run Signal again (measure improvement)
- Compare: Did AI descriptions become more accurate?
Common Mistakes to Avoid
Mistake 1: Hardcoding Dynamic Data
Problem: Prices, hours, or inventory change, but schema stays outdated.
Solution: Generate schema dynamically from your database/CMS.
Example (React/Next.js):
export default function ProductPage({ product }) {
const schema = {
"@context": "https://schema.org",
"@type": "Product",
"name": product.name,
"price": product.price,
"availability": product.inStock ? "InStock" : "OutOfStock"
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
{/* Rest of page */}
</>
);
}
Mistake 2: Duplicate Schema
Problem: Same schema appears multiple times on one page (confuses AI platforms).
Solution: Only include each schema type once per page.
How to check:
// Run in browser console
document.querySelectorAll('script[type="application/ld+json"]').forEach((el, i) => {
console.log(`Schema ${i}:`, JSON.parse(el.textContent)['@type']);
});
Mistake 3: Missing Required Properties
Problem: Schema is incomplete, AI platforms ignore it.
Solution: Always include minimum required properties.
LocalBusiness minimum:
@typenameaddresstelephoneORemail
FAQ minimum:
@type: FAQPagemainEntity(array of Question objects)- Each Question must have
nameandacceptedAnswer
Mistake 4: Using Microdata Instead of JSON-LD
Problem: Microdata is harder to maintain and less AI-friendly.
Bad (Microdata):
<div itemscope itemtype="https://schema.org/LocalBusiness">
<span itemprop="name">Veterans Moving America</span>
</div>
Good (JSON-LD):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Veterans Moving America"
}
</script>
Advanced: Nested Schema
Use Case: Combine multiple schema types for richer context.
Example: LocalBusiness + Service + Review
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Veterans Moving America",
"address": {
"@type": "PostalAddress",
"streetAddress": "4567 Oak Lawn Ave",
"addressLocality": "Dallas",
"addressRegion": "TX",
"postalCode": "75219"
},
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Moving Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Local Moving",
"description": "Residential moving within Dallas-Fort Worth"
}
}
]
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
},
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Sarah Johnson"
},
"datePublished": "2024-11-15",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
},
"reviewBody": "Best movers in Dallas! 100% veteran-staffed crew treated our belongings with military precision. Transparent pricing, no hidden fees. Highly recommend for anyone who values integrity and professionalism."
}
]
}
</script>
Why this works:
- Single schema object describes business, services, ratings, AND specific reviews
- AI platforms get complete picture in one structured block
- Reduces redundancy, improves parsing efficiency
Schema Markup Priority Roadmap
Week 1: Foundation
- Organization schema on homepage
- FAQ schema on FAQ page (5+ questions)
- LocalBusiness schema (if applicable)
Week 2: Product/Service Pages
- Product schema on each product page
- Service schema on each service page
- Include pricing and ratings
Week 3: Content Pages
- BreadcrumbList on all pages
- Article schema on blog posts
- HowTo schema on guides/tutorials
Week 4: Advanced
- Review schema (embed in LocalBusiness/Product)
- Event schema (if applicable)
- VideoObject schema (if you have video content)
Next Steps
- Start with FAQ schema (highest ROI, lowest effort)
- Add Organization schema to homepage
- Test with Google Rich Results Test
- Deploy to production
- Run Surmado Signal to establish AI visibility baseline
- Re-test in 60 days to measure impact
Additional Resources
- llms.txt Standard: Complement schema with llms.txt → llms.txt Complete Guide
- Technical GEO Checklist: Full implementation roadmap → Developer’s GEO Implementation Checklist
- How AI Discovers Businesses: Understanding AI platform indexing → How AI Platforms Discover Your Business
- Test Your Schema Implementation: Run a Signal report → Get Signal Report ($50)
Bottom Line: Schema markup is the foundation of GEO. Every hour you invest in implementing LocalBusiness, FAQ, and Product schemas compounds over time. helping both traditional search engines (Google) and AI platforms (ChatGPT, Claude, Gemini) understand and cite your business accurately. Start with FAQ schema today (30 minutes), measure impact with Signal in 60 days.
Was this helpful?
Thanks for your feedback!
Have suggestions for improvement?
Tell us moreHelp Us Improve This Article
Know a better way to explain this? Have a real-world example or tip to share?
Contribute and earn credits:
- Submit: Get $25 credit (Signal, Scan, or Solutions)
- If accepted: Get an additional $25 credit ($50 total)
- Plus: Byline credit on this article