Skip to main content

Schema Markup for GEO: JSON-LD Implementation Guide

18 min read

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:

FormatReadabilityMaintenanceSEO SupportGEO SupportRecommendation
JSON-LDHigh (separate from HTML)EasyFullBestUse this
MicrodataMedium (inline HTML attributes)HardFullPartialAvoid
RDFaLow (complex syntax)Very hardFullLimitedAvoid

Why JSON-LD wins for GEO:

  1. AI-friendly format: AI platforms already parse JSON natively
  2. Easier maintenance: Schema lives in <script type="application/ld+json"> tags, separate from HTML
  3. Google-recommended: JSON-LD is Google’s preferred format (and what Gemini reads)
  4. 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 TypeSEO ImpactGEO ImpactImplementation DifficultyPriority
LocalBusinessMediumImplement first
OrganizationLowImplement first
FAQLowImplement first
ProductMediumImplement second
ServiceMediumImplement second
BreadcrumbListLowImplement third
Review/RatingMediumImplement 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 number
  • description - 1-2 sentence business description with key differentiators
  • url - 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 priceSpecification for 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:

  1. Enter your page URL
  2. Click “Test URL”
  3. Review detected schema types
  4. 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:

  1. Paste your JSON-LD code
  2. Click “Run Test”
  3. 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:

  1. Open page in Chrome
  2. Right-click → “Inspect”
  3. Search page source for application/ld+json
  4. 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

  1. Run Signal before adding schema (baseline)
  2. Add schema and wait 30-60 days
  3. Run Signal again (measure improvement)
  4. 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:

  • @type
  • name
  • address
  • telephone OR email

FAQ minimum:

  • @type: FAQPage
  • mainEntity (array of Question objects)
  • Each Question must have name and acceptedAnswer

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

  1. Start with FAQ schema (highest ROI, lowest effort)
  2. Add Organization schema to homepage
  3. Test with Google Rich Results Test
  4. Deploy to production
  5. Run Surmado Signal to establish AI visibility baseline
  6. Re-test in 60 days to measure impact

Additional Resources


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.

Help 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
Contribute to This Article