Real Estate Schema Markup Guide: Step-by-Step Tutorial

December 8, 2025

Why Real Estate Schema Markup Actually Matters

Most real estate agents know they “should use schema markup” but have no idea what that actually means or how to implement it. This guide changes that.

Schema markup is structured data that tells Google exactly what your content is about. For real estate, it’s the difference between a plain text listing in search results and a rich result showing price, beds, baths, and photos directly in the SERP.

If you’re serious about dominating real estate search, schema isn’t optional. It’s how you get into Google’s Local Pack, trigger rich results, and position yourself for AI search engines like ChatGPT and Google’s SGE (Search Generative Experience).

This guide expands on the technical SEO section of my complete real estate SEO strategy. If you want the full roadmap for ranking in competitive markets, start there. If you’re here for the technical implementation details on schema specifically, keep reading – I’m giving you copy-paste code your competitors don’t have.

Google processes billions of searches daily. They need to understand what your content is about to show it to the right searchers.

Without schema: Google guesses what your listing is about by reading your HTML.

With schema: You explicitly tell Google “this is a 3-bedroom house at $450,000 in Newport Beach.”

What Schema Unlocks:

Rich Results in Search

  • Property listings show price, beds, baths directly in SERPs
  • Star ratings appear next to agent reviews
  • Event dates for open houses
  • Availability status (Active, Pending, Sold)

Google Business Profile Integration Your schema markup connects to your Google Business Profile to create a unified presence across Google properties.

Local Pack Visibility Proper LocalBusiness schema is a ranking factor for the Local 3-Pack. Without it, you’re invisible in “realtors near me” searches.

AI Search Readiness Large language models (ChatGPT, Google SGE, Perplexity) rely on structured data to answer queries like “Find me a 3-bedroom house in Irvine under $800k.” No schema = no inclusion in AI-generated answers. Learn more about optimizing for generative search results.

Voice Search Optimization When someone asks Alexa or Google Assistant “What homes are for sale in my area,” schema determines which listings get read aloud.


The Three Types of Schema Real Estate Agents Need

The Three Types of Schema Real Estate Agents Need

Most guides tell you to “add schema” without explaining which type. There are three distinct schemas for real estate:

1. LocalBusiness Schema (For Your Agency/Profile)

This tells Google who you are, where you’re located, and how to contact you.

Use this for:

2. RealEstateListing Schema (For Property Pages)

This marks up individual property listings with price, beds, baths, square footage, and address.

Use this for:

  • MLS/IDX property listing pages
  • Featured property pages
  • Sold property archives (more on this in my IDX optimization guide)

3. Person Schema (For Individual Agents)

This establishes you as an individual entity separate from your brokerage.

Use this for:

  • Agent bio pages
  • Team member profiles
  • Author attribution on blog content

Before we dive into the code: Schema is just one piece of ranking in competitive real estate markets. For the complete strategy on how schema fits with content, backlinks, and technical optimization, read my complete real estate SEO guide.


LocalBusiness Schema: Your Foundation

This is the most important schema for real estate agents. It establishes your business entity in Google’s Knowledge Graph.

What LocalBusiness Schema Includes:

  • Business name
  • Address (street, city, state, zip)
  • Phone number
  • Business hours
  • Geographic coordinates (lat/long)
  • Service areas
  • Price range ($ – $$$$)
  • Logo
  • Social media profiles
  • Review aggregate ratings

The Code (Copy-Paste Ready):

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "RealEstateAgent",
  "name": "Your Name Real Estate",
  "image": "https://yoursite.com/logo.jpg",
  "description": "Luxury real estate agent serving Orange County since 2010",
  "@id": "https://yoursite.com",
  "url": "https://yoursite.com",
  "telephone": "+1-949-555-1234",
  "priceRange": "$$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street, Suite 200",
    "addressLocality": "Newport Beach",
    "addressRegion": "CA",
    "postalCode": "92660",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 33.6189,
    "longitude": -117.9289
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "09:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "10:00",
      "closes": "16:00"
    }
  ],
  "sameAs": [
    "https://www.facebook.com/yourpage",
    "https://www.instagram.com/yourprofile",
    "https://www.linkedin.com/in/yourprofile"
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.9",
    "reviewCount": "127"
  }
}
</script>

How to Customize This Code:

Replace these values with your actual information:

  1. "name" – Your business/agent name
  2. "image" – URL to your logo (must be publicly accessible)
  3. "description" – Brief description (160 characters max)
  4. "telephone" – Full phone number with country code
  5. "streetAddress" – Your office address
  6. "addressLocality" – City
  7. "addressRegion" – State (use 2-letter abbreviation)
  8. "postalCode" – ZIP code
  9. "latitude" and "longitude" – Get from Google Maps (right-click on location)
  10. "openingHoursSpecification" – Your actual business hours
  11. "sameAs" – Links to your social profiles
  12. "aggregateRating" – Your actual average rating and review count

Where to put this code:

Add it to the <head> section of your homepage, or use a plugin like Yoast SEO or RankMath to inject it site-wide. For more on on-page SEO fundamentals, see my complete checklist.


RealEstateListing Schema: For Property Pages

This is where most real estate sites fail. They have property listings but no structured data telling Google what those listings contain.

What RealEstateListing Schema Includes:

  • Property type (SingleFamilyResidence, Apartment, Condo, Townhouse)
  • Address
  • Price
  • Number of bedrooms
  • Number of bathrooms
  • Square footage
  • Lot size
  • Year built
  • Listing status (Active, Pending, Sold)
  • Photos
  • Agent/broker information

The Code (Copy-Paste Ready):

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "RealEstateListing",
  "name": "Stunning 4-Bedroom Home in Newport Coast",
  "description": "Luxury single-family home with ocean views, chef's kitchen, and resort-style backyard. Located in guard-gated community with top-rated schools.",
  "url": "https://yoursite.com/listings/123-main-street-newport-coast",
  "image": [
    "https://yoursite.com/images/property-1.jpg",
    "https://yoursite.com/images/property-2.jpg",
    "https://yoursite.com/images/property-3.jpg"
  ],
  "datePosted": "2025-01-15",
  "validThrough": "2025-04-15",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Ocean View Drive",
    "addressLocality": "Newport Coast",
    "addressRegion": "CA",
    "postalCode": "92657",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 33.5964,
    "longitude": -117.8448
  },
  "offers": {
    "@type": "Offer",
    "price": "2950000",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://yoursite.com/listings/123-main-street-newport-coast"
  },
  "numberOfRooms": 4,
  "numberOfBedrooms": 4,
  "numberOfBathroomsTotal": 3.5,
  "floorSize": {
    "@type": "QuantitativeValue",
    "value": 3200,
    "unitCode": "SQF"
  },
  "occupancy": {
    "@type": "QuantitativeValue",
    "value": 4,
    "unitText": "bedrooms"
  },
  "amenityFeature": [
    {
      "@type": "LocationFeatureSpecification",
      "name": "Ocean View"
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Swimming Pool"
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "3-Car Garage"
    }
  ],
  "additionalProperty": [
    {
      "@type": "PropertyValue",
      "name": "Year Built",
      "value": "2018"
    },
    {
      "@type": "PropertyValue",
      "name": "Lot Size",
      "value": "8500 sq ft"
    },
    {
      "@type": "PropertyValue",
      "name": "MLS Number",
      "value": "NP25001234"
    }
  ]
}
</script>

Critical Fields Explained:

Price and Availability

"offers": {
  "@type": "Offer",
  "price": "2950000",
  "priceCurrency": "USD",
  "availability": "https://schema.org/InStock"
}

Use these availability values:

  • InStock = Active listing
  • PreOrder = Coming soon
  • SoldOut = Sold (keep the page live with schema for SEO value)

Bedrooms vs Rooms

  • numberOfBedrooms = Actual bedrooms
  • numberOfRooms = Total rooms (bedrooms + living + dining + office)
  • numberOfBathroomsTotal = Use decimals (3.5 = 3 full, 1 half)

Floor Size Format

"floorSize": {
  "@type": "QuantitativeValue",
  "value": 3200,
  "unitCode": "SQF"
}

Use “SQF” for square feet, “MTK” for square meters.

For crafting compelling listing descriptions that complement your schema markup, see my listing description template guide.

Don’t Want to Edit Code Manually?

Editing JSON-LD code isn’t for everyone. That’s why I built a free tool that generates valid schema markup for you.

Use the Free Real Estate Schema Generator

Just enter your business or property details, and it outputs ready-to-paste code. No technical skills required.

Features:

  • Generates both LocalBusiness and RealEstateListing schema
  • Built-in field validation (catches errors before you paste)
  • One-click copy to clipboard
  • Pre-filled examples you can customize
  • Works for active listings, sold properties, and rentals

Generate your schema in 60 seconds, then come back here to learn how to validate and implement it.


Person Schema: Establishing Agent Authority

This schema type establishes you as an individual entity, separate from your brokerage. It’s critical for E-E-A-T signals (Experience, Expertise, Authoritativeness, Trust).

The Code:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "Your Name",
  "url": "https://yoursite.com/about",
  "image": "https://yoursite.com/your-photo.jpg",
  "jobTitle": "Real Estate Agent",
  "worksFor": {
    "@type": "RealEstateAgent",
    "name": "Your Brokerage Name"
  },
  "alumniOf": {
    "@type": "EducationalOrganization",
    "name": "University of California, Irvine"
  },
  "knowsAbout": [
    "Luxury Real Estate",
    "Investment Properties",
    "First-Time Home Buyers",
    "Orange County Real Estate Market"
  ],
  "sameAs": [
    "https://www.linkedin.com/in/yourprofile",
    "https://www.facebook.com/yourprofile"
  ],
  "telephone": "+1-949-555-1234",
  "email": "you@yoursite.com"
}
</script>

Place this on:

  • Your about page
  • Author bio sections
  • Team member profiles

Common Schema Implementation Mistakes (And How to Fix Them)

Mistake 1: Missing Required Fields

Google’s Rich Results Test will fail if you’re missing required properties.

For RealEstateListing, these are required:

  • name
  • address
  • offers (with price)

Fix: Use the code templates above – they include all required fields.

Mistake 2: Invalid Currency Format

Wrong:

"price": "$2,950,000"

Right:

"price": "2950000",
"priceCurrency": "USD"

Price must be a number without commas or dollar signs.

Mistake 3: Incorrect Availability Status

Using the wrong URL for availability status breaks rich results.

Wrong:

"availability": "Active"

Right:

"availability": "https://schema.org/InStock"

Use the full schema.org URL.

Mistake 4: Missing Geo Coordinates

Why this matters: Without lat/long, Google can’t show your listing in map-based searches.

How to get coordinates:

  1. Go to Google Maps
  2. Right-click on your property location
  3. Click the coordinates at the top
  4. Copy/paste into your schema

Mistake 5: Duplicate Schema (IDX Conflict)

If you use an IDX plugin, it might inject its own schema. Having duplicate schema confuses Google.

Fix: Check your IDX plugin settings. Disable built-in schema if it’s poorly implemented, or disable your manual schema if the plugin does it correctly.

More on managing IDX technical issues in my IDX optimization guide.


How to Validate Your Schema Markup

Implementation is worthless if it doesn’t validate. Here’s how to check your work:

Tool 1: Google Rich Results Test

URL: https://search.google.com/test/rich-results

How to use:

  1. Enter your URL
  2. Click “Test URL”
  3. Wait for results
  4. Check for errors or warnings

What you’re looking for:

  • ✅ “This page is eligible for rich results”
  • ❌ “This page is not eligible for rich results” (fix errors)

Tool 2: Schema Markup Validator

URL: https://validator.schema.org

How to use:

  1. Paste your code OR enter your URL
  2. Click “Run Test”
  3. Review warnings and errors

Green = Good. Red = Fix it.

Tool 3: Google Search Console

After implementing schema, check Search Console after 1-2 weeks:

  1. Go to Search Console
  2. Click “Enhancements” in left sidebar
  3. Check for “Unparsable structured data” errors

If errors appear: Click into them, see which pages are affected, fix the code.


Advanced Schema Strategies

Strategy 1: Article Schema for Blog Content

Your neighborhood guides and real estate blog posts should have Article schema.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Complete Guide to Buying in Newport Coast",
  "image": "https://yoursite.com/newport-coast-guide.jpg",
  "author": {
    "@type": "Person",
    "name": "Your Name",
    "url": "https://yoursite.com/about"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Your Real Estate Company",
    "logo": {
      "@type": "ImageObject",
      "url": "https://yoursite.com/logo.jpg"
    }
  },
  "datePublished": "2025-01-15",
  "dateModified": "2025-01-15"
}
</script>

Strategy 2: Video Schema for Property Tours

If you embed video tours (you should – see my thoughts on video SEO), add VideoObject schema.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Virtual Tour: 123 Ocean View Drive",
  "description": "Full walkthrough of this stunning Newport Coast estate",
  "thumbnailUrl": "https://yoursite.com/video-thumbnail.jpg",
  "uploadDate": "2025-01-15",
  "duration": "PT3M47S",
  "contentUrl": "https://yoursite.com/video.mp4",
  "embedUrl": "https://www.youtube.com/embed/VIDEO_ID"
}
</script>

Strategy 3: FAQ Schema for Common Questions

Add FAQ schema to pages with common buyer/seller questions. This works particularly well on your neighborhood content where buyers have location-specific questions.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is the average home price in Newport Beach?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "As of January 2025, the median home price in Newport Beach is $2.8 million, with luxury waterfront properties ranging from $5M to $50M+."
      }
    },
    {
      "@type": "Question",
      "name": "How long does it take to sell a home in Orange County?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The average days on market in Orange County is 32 days for properly priced homes with professional marketing."
      }
    }
  ]
}
</script>

This triggers the expandable FAQ rich result in Google. To find the questions buyers are actually asking, use the keyword research tactics I outlined for finding long-tail search queries.


Schema Markup for IDX/MLS Feeds

This is where it gets complicated. Most IDX plugins either:

  1. Don’t add schema at all
  2. Add broken schema that doesn’t validate
  3. Add schema incorrectly

The challenge: Your IDX feed pulls from MLS, which means:

  • Properties appear on hundreds of agent sites (duplicate content)
  • URLs change when listings sell
  • Images are hosted on MLS servers

The solution:

Work with your IDX provider to ensure:

  1. RealEstateListing schema is injected on every property page
  2. Canonical tags point to the MLS source (if required by MLS rules)
  3. Sold listings 301 redirect to similar active listings (preserves link equity)

I cover the full IDX technical strategy in my IDX optimization guide, including how to handle canonicalization, crawl budget, and sold property redirects.


Schema and Core Web Vitals

Schema markup adds code to your pages, which can impact load times if implemented poorly.

Best practices:

  • Place schema in <head> section, not inline in body
  • Minify JSON-LD code (remove unnecessary whitespace)
  • Don’t load schema via external JavaScript (slows LCP)
  • Test page speed after implementation

For more on optimizing real estate site performance, see my Core Web Vitals guide for luxury real estate websites.


Schema Markup Checklist

Before you publish:

  • [ ] LocalBusiness schema on homepage
  • [ ] RealEstateListing schema on every property page
  • [ ] Person schema on about page
  • [ ] Article schema on blog posts
  • [ ] All required fields included (name, address, price)
  • [ ] Valid JSON format (no syntax errors)
  • [ ] Geo coordinates added (lat/long)
  • [ ] Validated with Google Rich Results Test
  • [ ] Validated with Schema.org validator
  • [ ] No duplicate schema conflicts with plugins
  • [ ] Images use full URLs (not relative paths)
  • [ ] Phone numbers in international format (+1-xxx-xxx-xxxx)

How Schema Fits Into Your Overall Strategy

Schema markup is one piece of your complete real estate SEO strategy. It works best when combined with:

For more foundational SEO tactics, see my complete on-page SEO checklist and my general SEO strategy guide.

If you’re looking to streamline your schema implementation and content creation process, check out my guide on AI tools for real estate agents – several tools can auto-generate schema markup from your listing data.

And if you’re curious whether Google can detect AI-generated content in your schema implementations or property descriptions, I cover that too.


Stop Guessing. Start Ranking.

Schema markup is critical, but it’s just one of 15+ factors that determine whether you rank on page 1 or page 3 for “real estate agent [your city].”

If you want the complete roadmap – from technical optimization to content strategy to local domination – read my complete real estate SEO guide. It’s 6,500 words of exactly what works in 2025, based on 15 years of ranking real estate sites in competitive markets like Orange County.

Inside, you’ll learn:

  • The 3-tier content strategy that builds neighborhood authority
  • How to optimize Google Business Profile for multi-location brokerages
  • Technical SEO fixes for IDX feeds that destroy most agent sites
  • Link building tactics that actually work (not the generic advice everyone copies)
  • How to track ROI from organic search to closed commissions

Read the complete real estate SEO strategy →


Bottom Line

Schema markup is not optional for real estate SEO in 2025. It’s table stakes.

The agents ranking in position 1-3 have proper schema. The agents on page 2 don’t.

Use the code templates in this guide. Validate them. Implement them on every important page.

Your competition is either ignoring schema entirely or implementing it incorrectly. That’s your opportunity.

Questions about implementing schema for your specific IDX setup or property type? Contact me.

About the author 

Jeff Lenney

Jeff Lenney is the Founder & Principal Strategist at JLenney Marketing, LLC. With 15+ years of experience building search architecture for brands like Agora Financial and InvestorPlace, Jeff now specializes in Entity-Based SEO for high-volume real estate teams ($20M+ volume). By applying the same frameworks used by enterprise SaaS and finance giants, he helps elite producers stop renting their leads and start owning their market authority. Based in Southern California. [Let’s Talk]

Leave a Reply

Your email address will not be published. Required fields are marked

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}