What Is SEO Schema for Real Estate? A Practical Guide

SEO schema for real estate is structured data added to a website so search systems can read the brokerage, its agents, its properties, and its sale or rental terms as separate, identifiable things rather than as undifferentiated page text. On a listing page, it states in machine-readable form that one string is the property address and that the bedroom count belongs to the house being sold. The term used in the documentation is schema markup; SEO schema is simply how most agents phrase it when they go looking for an answer. Structured data is one layer of the work that gets a property site found, which is why it belongs in the same conversation as ranking a real estate website.

What Real Estate Schema Can and Cannot Do

Structured data helps search engines interpret the entities on a page and the relationships between them. Markup tells a crawler that a page is about a specific four-bedroom house in Boulder, that the house is being offered at a specific price, and that a specific brokerage is the party offering it. Without that layer, a search engine has to infer all of it from the visible text.

Three things get conflated constantly. Markup can be valid, meaning it parses correctly and matches the Schema.org vocabulary. A page can be eligible for a supported Google search feature, which requires valid markup plus a feature that exists for that content type. And Google can choose to display that feature, which it decides per query. Each step depends on the one before it, and none guarantees the next.

Ordinary property listings stop before the feature-eligibility stage, because Google publishes no dedicated rich result for them. Google may still use the markup to understand the page, but correct RealEstateListing markup will not produce prices, photos, or review stars in the search results the way a recipe or a product does. The AI question resolves the same way: Google’s guidance on AI features in Search states that no special structured data is needed to appear in AI Overviews or AI Mode. The wider strategic split between optimizing for AI answers and optimizing for rankings turns on content and authority decisions rather than on which types a template outputs.

Which Schema Types Should Real Estate Websites Use?

Choose types according to what each page actually describes. A single page often carries several connected types at once, because a listing page describes a webpage, a building, and a set of transaction terms simultaneously.

Page or EntityRelevant Schema TypeEssential Distinction
Brokerage or real estate officeRealEstateAgentThe business, as a LocalBusiness subtype
Individual agentPersonThe human, tied to the brokerage
Property listing pageRealEstateListingThe webpage presenting the listing
Physical propertySingleFamilyResidence, House, ApartmentThe building itself
Sale or rental termsOfferPrice and transaction terms
Supporting website contentBreadcrumbList, Article, VideoObjectNavigation, articles and video, where they exist

Two distinctions are particularly easy to confuse. RealEstateAgent describes the office as an organization, despite the name, while Person describes a named agent who works there. And RealEstateListing in the Schema.org vocabulary is a type of webpage, so real estate listing schema describes the page a visitor lands on rather than the bricks and timber, which the residence types handle.

Event can suit a genuine scheduled showing with a fixed date, time, and location, though an open house on the calendar does not automatically qualify for Google’s event search feature. For the business-level markup any company needs regardless of industry, the mechanics are covered in our breakdown of how organization schema describes a company.

How to Add Schema Markup to a Real Estate Website

Implementation follows a predictable order: find out what the site already produces, decide which facts belong in the markup, write it, and put it on the right templates. Those four steps apply whether the real estate schema markup is generated by a plugin or written into a custom template. A single fictional Boulder listing runs through the rest of this section as the worked example.

Check What Your Website Already Generates

Open a representative office page, an agent page, and a listing page, and inspect what each one outputs. A real estate website may already be emitting real estate schema markup through a theme, an SEO plugin, or an IDX integration, and those three are rarely controlled by the same person.

That inventory leads to one of three decisions. Existing output may already be adequate and simply needs configuring; it may be incomplete and need extending, or it may be locked inside a template or a provider’s feed, in which case a developer or the provider has to change it.

Two things are worth confirming while you are in there. Check that listing values update automatically when the source data changes, rather than being written once at publication. And check that the listing facts appear in the rendered page and that the corresponding JSON-LD is present in the rendered HTML. Duplicated MLS descriptions are a separate problem, and marking them up does not make them original.

Match Schema Fields to the Content on Each Page

Work from the page outward: whatever a visitor can see is what the markup should state. For a typical US listing page, that usually means:

  • Property type and address, with the location detail the page actually shows
  • Price and USD as the currency
  • Bedrooms, bathrooms, and floor area with its unit
  • Images, and the dates that matter, such as when the listing was posted
  • The brokerage and agent responsible for the listing

Sale and rental listings diverge on price. A sale carries a single asking price, while a rental carries a recurring amount, so it needs the payment period stated and, where the page shows one, the lease term. Keep business information, agent details, property characteristics, and transaction terms in their own entities, and include only what applies to the page in front of you. None of this is a Google-mandated field list, because no such list exists for property listings.

Build the JSON-LD Markup

JSON-LD is one format for writing structured data, and the format used in this example. Google generally recommends it because it is easier to implement and maintain than markup embedded in visible HTML. Whether that block is produced by a CMS field, a plugin, or a custom template makes no difference to what a crawler reads. On the live page, place this JSON-LD object inside a <script type=”application/ld+json”> element.

The example below is built from three connected nodes rather than one, because a listing page involves three separate things: the page itself, the building it presents, and the terms it is being offered on. Each node carries an @id, a unique identifier, and the listing node points to the other two by referencing their identifiers instead of repeating their contents. A crawler reading the block therefore knows that this page presents this building, which is being offered at this price by this brokerage.

Here are the visible facts of the example listing:

FieldValue
Listing pagewww.example-realty.com/listings/4412-oak-ridge-drive
BrokerageExample Realty
Property typeSingle-family residence
Address4412 Oak Ridge Drive, Boulder, CO 80304
Asking price685,000 USD
Bedrooms4
Bathrooms3
Floor area2,410 sq ft
Year built1998
Date listedMarch 4, 2026

And here is the same information expressed as markup:

{

“@context”: “https://schema.org”,

“@graph”: [

{

“@type”: “RealEstateListing”,

“@id”: “https://realestate.example.com/listings/4412-oak-ridge-drive#listing”,

“url”: “https://realestate.example.com/listings/4412-oak-ridge-drive”,

“name”: “4412 Oak Ridge Drive, Boulder, CO 80304”,

“datePosted”: “2026-03-04”,

“about”: { “@id”: “https://realestate.example.com/listings/4412-oak-ridge-drive#property” },

“offers”: { “@id”: “https://realestate.example.com/listings/4412-oak-ridge-drive#offer” }

},

{

“@type”: “SingleFamilyResidence”,

“@id”: “https://realestate.example.com/listings/4412-oak-ridge-drive#property”,

“name”: “4412 Oak Ridge Drive”,

“address”: {

“@type”: “PostalAddress”,

“streetAddress”: “4412 Oak Ridge Drive”,

“addressLocality”: “Boulder”,

“addressRegion”: “CO”,

“postalCode”: “80304”,

“addressCountry”: “US”

},

“numberOfBedrooms”: 4,

“numberOfBathroomsTotal”: 3,

“floorSize”: {

“@type”: “QuantitativeValue”,

“value”: 2410,

“unitCode”: “FTK”

},

“yearBuilt”: 1998

},

{

“@type”: “Offer”,

“@id”: “https://realestate.example.com/listings/4412-oak-ridge-drive#offer”,

“price”: 685000,

“priceCurrency”: “USD”,

“availability”: “https://schema.org/InStock”,

“itemOffered”: { “@id”: “https://realestate.example.com/listings/4412-oak-ridge-drive#property” },

“seller”: {

“@type”: “RealEstateAgent”,

“name”: “Example Realty”,

“url”: “https://realestate.example.com/”

}

}

]

}

Add the Markup to the Correct Templates

Markup belongs on the templates that describe each entity: business markup on the office page, agent markup on agent profiles, and listing markup on the property template. Every value in the listing template has to be a dynamic field pulled from the listing record, because hardcoding one property’s price or address means every listing on the site claims the same facts.

Google’s documentation on how structured data works confirms that JSON-LD can sit in either the head or the body of the page, so placement is a development convenience. More than one block on a page is also fine. What is not fine is two generators disagreeing, with the plugin publishing one price and the IDX feed publishing another, which is a common outcome when nobody owns the output. Reconciling that, or unpicking a template that will not expose the right fields, is where technical SEO work on site infrastructure usually earns its keep.

How to Test and Monitor Real Estate Schema

Validity and eligibility are separate checks, and they need separate tools. One tells you whether the code is correct. The other tells you whether Google can do anything visible with it.

ToolWhat to Check
Schema Markup ValidatorTypes, properties, and syntax against Schema.org
Google Rich Results TestErrors and eligibility for supported rich result types
Search Console URL InspectionWhether Google can reach the page, and what it rendered

A workable sequence is to validate the code first, then run the live URL, then compare every value in the markup against what the page displays, then repeat on one page from each template rather than on a single URL.

Read the Rich Results Test carefully. It does not evaluate RealEstateListing as a supported Google search feature, so use the Schema Markup Validator to validate the listing markup itself. Supported types on the same page, such as BreadcrumbList, may still be detected there. For the same reason, there is no dedicated Search Console report to watch for real estate listing schema.

Performance monitoring here is deliberately modest: record the date each template went live, then review how the affected pages and their queries perform afterwards, alongside inquiry conversions. Inventory turnover, seasonality, and any other change shipped in the same window will all move those numbers too, so the wider discipline of attributing organic performance to specific changes matters more than the schema deployment itself.

Keeping Schema Accurate as Listings Change

Real estate listing data can change quickly, and the rule that keeps markup trustworthy is simple: whatever changes on the page changes in the structured data at the same moment.

ChangeWhat to update
Asking price movesPrice on the page and in the offer
Listing goes pending or sellsVisible status and offer availability
Rental comes off the marketAvailability, and lease terms if shown
Agent or office details changeBusiness and agent markup on both templates

A price drop shows how quietly this goes wrong. A seller cuts the asking price to 649,000 dollars, the CMS field updates, the page shows the new number, and a structured data block hardcoded during the original build still says 685,000. It is also describing an offer that is no longer current, which is exactly the kind of mismatch Google’s general structured data guidelines tell site owners to avoid.

Assign ownership before this becomes a problem. Someone has to be accountable for the markup staying synchronized, and any change to the CMS, an SEO plugin, or the IDX integration should trigger a fresh check across a representative page from each template. Confirm that the status values you use exist in the vocabulary rather than inventing ones that read well.

Common Real Estate Schema Mistakes to Avoid

Several implementation problems come down to a handful of recurring errors.

MistakeCorrection
Marking the brokerage up as a PersonRealEstateAgent for the office, Person for the individual
Describing the page as if it were the propertyRealEstateListing is the page, a residence type is the building
Treating valid markup as a guaranteed rich resultValidity earns eligibility at most, and only where a feature exists

Google does not display review stars for LocalBusiness or Organization markup when the reviewed entity controls the reviews on its own site. Those pages are ineligible for the star review feature. Getting review markup right where it does apply is covered in our guide to what review schema does and where it is allowed.

One more piece of advice still circulating is now simply out of date. Adding FAQ markup no longer produces an expandable result in Google, which retired the FAQ rich result in May 2026 and logged the change in its Search documentation updates. Whether an FAQ section still earns its place on a page is an editorial question about whether readers need those answers, and it always was.

Start With Your Office Page and One Listing

SEO schema for real estate gets unwieldy if you try to fix the whole site at once, so narrow the scope. Take your office page and one representative listing, confirm that each uses the right type, check every field against what the page displays, validate both, and only then roll the same corrections across the remaining templates. Brokerages and agents without live inventory can do the same thing with the business and agent pages alone. Two pages done properly will teach you more about your own stack than a site-wide audit you never finish.

FAQs About Real Estate Schema

Does Listing a Property on Zillow or Realtor.com Add Schema to My Website?

No. Publishing a property on a third-party portal affects that portal’s pages, not yours. Your own site needs its own markup, including anywhere a listing integration is feeding content into it.

Can I Use Schema If a Property’s Full Address Is Not Public?

Yes. Markup can describe the location details the page already shows, such as the city and region, without inventing or exposing a withheld street address. Describing what is available is not the same as meeting the requirements of a particular search feature.

How Long Does It Take Google to Pick Up Schema Changes?

Google has to recrawl the page first, and its general guidance allows anywhere from days to weeks. Check the last crawl date in URL Inspection. Recognition of a change is not a promise that anything visible in search will follow.

Author profile image

Darko Brzica, Director of SEO

With over a decade of expertise in the industry, Darko is renowned for his adept management of bespoke SEO solutions. He leads a dynamic team of SEO professionals across the US and Europe, driving innovative strategies and delivering exceptional results.

Read more

Get Digital Marketing Tips Direct to Your Inbox