THE DEFINITIVE REAL ESTATE SCHEMA GUIDE

The Complete Guide to Real Estate Schema Markup Implementation

By Chris Hardin Updated Aug 3, 2026 Real Estate SEO Strategy

Real estate schema markup helps search engines understand your brokerage, agents, properties, offers and website content. But adding structured data does not automatically improve rankings or give a property listing a special Google search feature.

The real advantage is clarity. Properly structured JSON-LD connects the agent, business, property and offer in a machine-readable format that Google and other search systems can interpret. This guide explains which real estate schema types are available, how the entities fit together, what schema can and cannot do, and how to validate your implementation.

Real Estate Schema Markup Technical Implementation Guide

Does Real Estate Schema Create Google Rich Results?

Not by itself. RealEstateListing, RealEstateAgent and residential property types exist in the Schema.org vocabulary, but that does not mean Google provides a dedicated rich result for every type. Structured data helps machines understand the page. Eligibility for an enhanced Google search appearance depends on Google’s currently supported structured-data features, policies and quality requirements.


What is RealEstateAgent Schema?

Schema markup is structured data added to a webpage to describe the entities and relationships visible on that page. It can identify that a business is a real estate agency, a person is an agent, a page is a property listing, and an offer relates to a particular home.

Think of the visible page as the explanation written for a person and the JSON-LD as a labeled map written for a machine. Both should describe the same facts.

What schema can help with

  • Clarifying the relationship between your brokerage, agents, service areas and webpages.
  • Identifying a property, its address and its associated sale or rental offer.
  • Reducing ambiguity around names, locations, URLs and business information.
  • Making structured facts easier for eligible search systems and other applications to process.

What schema does not guarantee

  • Higher organic rankings.
  • A Google rich result or enhanced listing.
  • Placement in the local map pack or Knowledge Panel.
  • More clicks, leads or closed transactions.

Schema should support accurate content and a sound SEO strategy. Schema alone won't move rankings without a clean real estate internal linking strategy to pass equity across your domain. It cannot replace useful market information, strong internal linking, crawlable pages or earned authority.


Schema.org Vocabulary vs. Google-Supported Search Features

This distinction prevents one of the most common schema mistakes:

  • Schema.org maintains a vocabulary of types and properties that websites can use to describe information.
  • Google supports a smaller set of structured-data features for particular search appearances.

A type can be valid in the Schema.org vocabulary without producing a special Google search result. For example, RealEstateListing is a valid Schema.org type used to describe a webpage containing one or more real estate offers. Its existence does not promise that Google will display a property’s price, bedrooms or photos as a dedicated real estate rich result.

Always check both the Schema.org vocabulary and Google’s current structured-data feature gallery before expecting a particular search appearance.


Essential Schema Types for Real Estate Websites

RealEstateAgent

RealEstateAgent is a subtype of LocalBusiness. Use it for a real estate office or agent business when the visible page contains matching business information such as the name, address, telephone number, URL and service area.

RealEstateListing

RealEstateListing describes the listing webpage—not the physical house itself. The page can identify the property as its main entity and connect it to an Offer.

SingleFamilyResidence, House, Apartment and Residence

Use the most accurate property type supported by the facts on the page. Property-level information such as the address, bedrooms, bathrooms and floor size belongs on the property entity.

Offer

Use Offer to represent the commercial offer associated with the property. This is where price, currency, availability, seller and the property being offered can be connected.

PostalAddress and GeoCoordinates

Use these nested types to provide a structured address and, when the coordinates are publicly displayed and appropriate, a geographic location. Do not expose private or suppressed listing information through structured data.


Property Listing Schema: Connected JSON-LD Example

The cleanest approach is to create separate but connected entities for the listing page, property, offer and seller. Replace every example value with information that is accurate and visibly supported on the page.

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "RealEstateListing",
      "@id": "https://www.example.com/listings/123-main-street/#listing",
      "url": "https://www.example.com/listings/123-main-street/",
      "name": "123 Main Street, Westfield, MA",
      "description": "Four-bedroom home with three bathrooms and approximately 2,400 square feet.",
      "datePosted": "2026-07-10",
      "mainEntity": {
        "@id": "https://www.example.com/listings/123-main-street/#property"
      },
      "offers": {
        "@id": "https://www.example.com/listings/123-main-street/#offer"
      }
    },
    {
      "@type": "SingleFamilyResidence",
      "@id": "https://www.example.com/listings/123-main-street/#property",
      "name": "123 Main Street",
      "image": [
        "https://www.example.com/images/123-main-street-exterior.jpg",
        "https://www.example.com/images/123-main-street-kitchen.jpg"
      ],
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "123 Main Street",
        "addressLocality": "Westfield",
        "addressRegion": "MA",
        "postalCode": "01085",
        "addressCountry": "US"
      },
      "numberOfBedrooms": 4,
      "numberOfBathroomsTotal": 3,
      "numberOfRooms": 7,
      "floorSize": {
        "@type": "QuantitativeValue",
        "value": 2400,
        "unitCode": "FTK"
      },
      "yearBuilt": 1998
    },
    {
      "@type": "Offer",
      "@id": "https://www.example.com/listings/123-main-street/#offer",
      "url": "https://www.example.com/listings/123-main-street/",
      "price": 575000,
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock",
      "itemOffered": {
        "@id": "https://www.example.com/listings/123-main-street/#property"
      },
      "seller": {
        "@id": "https://www.example.com/#realestateagent"
      }
    }
  ]
}

Why this structure is stronger

  • The listing webpage is not confused with the physical property.
  • The property’s specifications remain attached to the property entity.
  • Price and availability remain attached to the offer.
  • Stable @id values connect the entities without duplicating them.

Important: InStock is a vocabulary value commonly used to indicate availability; it does not mean Google treats a house like a retail product or provides a dedicated property rich result.


Real Estate Agent Schema Example

Use this type for the agent or real estate business represented on the page. Keep the name, address, phone number and URLs consistent with the visible website and other authoritative business profiles.

{
  "@context": "https://schema.org",
  "@type": "RealEstateAgent",
  "@id": "https://www.example.com/#realestateagent",
  "name": "Sarah Johnson Real Estate Group",
  "url": "https://www.example.com/",
  "logo": "https://www.example.com/images/logo.png",
  "image": "https://www.example.com/images/sarah-johnson.jpg",
  "telephone": "+1-413-555-0123",
  "email": "sarah@example.com",
  "priceRange": "$$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "456 Business Avenue",
    "addressLocality": "Springfield",
    "addressRegion": "MA",
    "postalCode": "01103",
    "addressCountry": "US"
  },
  "areaServed": [
    {
      "@type": "City",
      "name": "Springfield, Massachusetts"
    },
    {
      "@type": "City",
      "name": "Westfield, Massachusetts"
    }
  ],
  "sameAs": [
    "https://www.linkedin.com/in/example/",
    "https://www.instagram.com/example/",
    "https://www.youtube.com/@example"
  ]
}

Only include genuine profiles controlled by or clearly representing the same business. Do not add cities merely because you want to rank there; areaServed should reflect actual, visible service information.


Should You Use Event Schema for an Open House?

An open house can be modeled as an Event when the page describes a real, publicly accessible event with an accurate location, start time, end time and organizer. However, valid Event markup does not automatically guarantee inclusion in Google’s event experience.

Do not create Event markup for a generic property-tour request, an appointment-only showing without a defined public schedule, an expired open house or an event that is not visibly described on the page. Remove or update the markup promptly when the event changes.


How to Add Structured Data to Property Listings

Option 1: Use your SEO plugin’s existing graph

Plugins such as Yoast SEO may already create WebSite, WebPage, Person or Organization entities. Inspect the existing output before adding more schema. Extend or connect to the existing entities when possible instead of creating competing versions of the same business. If you build on CRM-first web builders, review our dedicated guide to Lofty real estate SEO to prevent platform schema collisions.

How to Connect Custom Schema to Yoast

Two JSON-LD script blocks are not automatically disconnected. Schema consumers can merge nodes from separate blocks when those nodes use the exact same stable @id. A second block becomes problematic when it creates a different ID for the same business or supplies conflicting names, URLs, types or other facts.

When Yoast already identifies the site owner as https://www.example.com/#organization, custom markup should reference or extend that exact ID. Do not create another version such as #business, #agency or #professionalservice for the same entity.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://www.example.com/#organization",
  "knowsAbout": [
    "Real estate search engine optimization",
    "Local search strategy",
    "Real estate content strategy"
  ]
}

Because the @id matches Yoast’s Organization entity, compatible consumers can treat these properties as additions to the same node. The more maintainable option is to use Yoast’s Schema API and its wpseo_schema_organization filter so the additions appear inside Yoast’s graph.

add_filter( 'wpseo_schema_organization', function( $data ) {
    $data['knowsAbout'] = array(
        'Real estate search engine optimization',
        'Local search strategy',
        'Real estate content strategy',
    );

    return $data;
} );

Add PHP through a child theme or a controlled snippets plugin—not inside the WordPress post editor. Test the resulting graph after every Yoast, theme or schema-plugin update.

Avoid deprecated and promotional markup.

Schema.org has deprecated the broad ProfessionalService type because it was frequently confused with Service. Use Organization, an accurate LocalBusiness subtype, or a separate Service entity based on what the page actually represents. Keep knowsAbout factual and supported by visible content. Repeating promotional claims does not independently establish authority or guarantee inclusion in AI-generated answers.

Option 2: Add custom JSON-LD

Custom JSON-LD can be added through a properly configured schema plugin, a child theme or a controlled code-injection tool. The final code should appear inside a <script type="application/ld+json"> element in the rendered HTML.

Option 3: Generate listing data dynamically

Sites with frequently changing inventory should generate structured data from the same source that controls the visible listing. This reduces price, status and availability mismatches. Do not leave a sold, withdrawn or expired listing marked as available.

Want to Build the Search Structure Yourself?

SEO in One Hour helps real estate professionals understand and improve the search assets they own—without becoming full-time SEO technicians.

Explore SEO in One Hour →

Common Real Estate Schema Errors

  • Treating the webpage as the house: Keep RealEstateListing separate from the residence.
  • Attaching every property to the listing type: Bedrooms, bathrooms and floor size should describe the property entity.
  • Adding unsupported promises: Valid Schema.org markup does not guarantee a Google rich result or ranking increase.
  • Conflicting plugin output: Avoid multiple disconnected versions of the same agent or organization.
  • Deprecated business types: Do not use ProfessionalService; select a current, accurate type and connect it to Yoast’s existing entity.
  • Promotional knowsAbout entries: Use concise subjects that are demonstrated by the visible website rather than keyword-style claims created only for search engines or LLMs.
  • Markup that contradicts the page: Every material fact in the JSON-LD should be supported by visible content.
  • Stale listing information: Update price, status and availability whenever the visible listing changes.
  • Invented reviews or ratings: Never mark up testimonials, aggregate ratings or claims that are absent or ineligible.
  • Using a validator as proof of a search feature: Valid syntax means the code can be understood; it does not promise a particular Google display.

Testing Your Real Estate Schema Output

  1. Inspect the rendered page: Confirm the JSON-LD is present once and contains current information.
  2. Use the Schema.org Validator: Check vocabulary structure and identify invalid property relationships.
  3. Use Google’s Rich Results Test: Determine whether the page contains markup eligible for a Google-supported feature. A page can have valid real estate schema while showing no eligible Google rich result.
  4. Check for duplication: Review schema generated by your theme, IDX system and SEO plugins.
  5. Compare markup with visible content: Confirm names, addresses, prices, dates and property details match.
  6. Monitor Search Console: Watch enhancement reports when applicable and track page impressions, clicks and indexing separately.

How to measure success honestly

Do not assume schema caused a ranking or CTR improvement. Record the implementation date, annotate other page changes and compare performance over a meaningful period. Track:

  • Valid and invalid structured-data items.
  • Indexing and crawl status.
  • Impressions, clicks, CTR and average position.
  • Eligible search appearances, when Google supports one.
  • Qualified inquiries and conversions from the affected pages.

Real Estate Schema Implementation Checklist

  1. Inventory the schema already created by WordPress, your theme, Yoast and your IDX provider.
  2. Choose one stable @id for each agent, business, property, offer and listing page.
  3. Connect the entities rather than repeating disconnected versions.
  4. Use the most specific accurate property type.
  5. Keep structured facts consistent with the visible page.
  6. Validate the vocabulary and check Google feature eligibility separately.
  7. Update or remove time-sensitive listing and event data.
  8. Recheck the implementation whenever a plugin, theme or listing system changes.

Frequently Asked Questions

Does schema markup help a real estate website rank higher?
Schema markup is not a guaranteed ranking boost. It helps machines interpret entities and relationships, while rankings depend on many other factors including relevance, usefulness, crawlability, links and authority.
Can real estate schema display a property’s price in Google?
Adding a price to valid structured data does not guarantee Google will display it. Google controls which structured-data types are eligible for enhanced search features.
Should every property listing have unique schema?
Yes. Each listing should use its own stable URL and identifiers, and its structured facts should match that individual property’s visible information.
Can I add schema to an IDX website?
Possibly, but first inspect what the IDX system already generates and whether you can keep the markup synchronized with price and status changes. Avoid duplicate entities and stale inventory data.
Which tool should I use to test real estate schema?
Use the Schema.org Validator to evaluate vocabulary structure and Google’s Rich Results Test to check eligibility for Google-supported features. The tools answer different questions.

Build Clarity Before Chasing Enhancements

The goal of real estate schema is not to decorate a search result or force a ranking increase. Its job is to describe your business, content, properties and offers accurately enough that machines can understand how they relate.

Start with clean entity relationships, support every claim with visible content, validate the implementation and keep changing information current. Schema works best as part of a properly built real estate authority strategy—not as a shortcut around one.

Build a Real Estate Search Asset You Own

Learn how to structure your website, content and authority around the questions your ideal clients are already searching.

Learn More About SEO in One Hour →
Ready for Organic Search Dominance in Your Market?

Book Your Complimentary Strategy Session

Every sovereign search asset begins with a clear evaluation. Schedule a free 15-minute 1-on-1 Zoom session with our principal strategists to review your local micro-market search footprint, identify competitor gaps, and map out your path to authority.

What We Will Review Together:

  • Your target local territory & luxury property specialty
  • Primary competitor domains capturing your target search volume
  • How ChatGPT and Gemini currently classify your personal brand entity
100% Free 15-Minute Zoom Call (No credit card required)
Zero High-Pressure Pitch — Pure diagnostic search evaluation