Real estate schema is two anchor types stitched into the entity relationships the regulatory layer already requires.
- ✓RealEstateAgent inherits LocalBusiness / Organization / Place / Thing; NAR SOP 12-9 brokerage-affiliation maps onto parentOrganization.
- ✓RealEstateListing is a WebPage subtype; offers.businessFunction disambiguates LeaseOut versus Sell for Google's structured-data parser.
- ✓datePosted pulls from the MLS field via the RESO Web API, not the page-publication date, to preserve the Clear Cooperation freshness signal.
The schema patterns that govern Knowledge Graph confidence and rich-result eligibility across both the agent entity and the listing inventory.
Real estate schema architecture is not a free-form Schema.org exercise. The entity relationships are constrained by state license law, NAR rules, and the MLS data layer the RESO Web API ships. The four sections below cover the RealEstateAgent nesting under RealEstateAgency, the RealEstateListing structure with offers.businessFunction, the freshness signal pulled through datePosted, and the additionalProperty pattern for local custom fields the standardized dictionary does not name.
RealEstateAgent nesting under RealEstateAgency.
RealEstateAgent is a specific Schema.org subtype inheriting from LocalBusiness, Organization, Place, and Thing. Because state license laws and NAR SOP 12-9 require clear brokerage affiliation on every advertising surface, the schema architecture has to reflect the nested entity relationship. The critical slots are parentOrganization (links the agent or team to the overarching brokerage / RealEstateAgency entity), memberOf (signals NAR or local association membership), and department (distinct teams within the brokerage). The brokerage's RealEstateAgency node accrues Knowledge Graph authority across its agents through the parentOrganization back-references; the agent inherits the brokerage's entity authority through the same edge.
knowsAbout and areaServed for specialization and geography.
Practice-area specialization (commercial versus residential, luxury versus first-time buyer, relocation versus investor) ships through the knowsAbout property on the RealEstateAgent node. Geographic relevance, paramount for local pack visibility, ships through areaServed, which accepts AdministrativeArea (named jurisdictions), GeoShape (polygon coordinates for non-jurisdictional coverage), or Place (named localities below jurisdiction level). The areaServed property defines geographic relevance for the local algorithm without relying solely on the physical address field, which is the post-Vicinity-Update pattern Google's local pack rewards.
RealEstateListing, offers, and businessFunction.
RealEstateListing is a subtype of WebPage and represents the overall listing page. The transactional data nests inside the offers property using the Offer or Demand types. The businessFunction property within the offer specifies the transaction type: http://purl.org/goodrelations/v1#LeaseOut for rentals, http://purl.org/goodrelations/v1#Sell for sale listings. Google's structured-data parser does not reliably infer transaction type from price-and-context heuristics, so a rental listing with a monthly price but no explicit businessFunction may be parsed as a sale at the monthly price and produce broken rich results. The leaseLength property on rental listings communicates the term shape separately.
datePosted from the MLS field, not the page publish date.
datePosted on RealEstateListing has to pull from the MLS field sourced via the RESO Web API, not from the CMS page-publication date or last-modified date. NAR's Clear Cooperation Policy requires brokers to submit listings to the MLS within one business day of public marketing, which makes the MLS the canonical freshness source Google's crawlers prioritize on IDX feeds. The schema pipeline pulls datePosted from the OriginalEntryTimestamp or ListContractDate field on the RESO Property Resource, depending on the local MLS convention. Pulling from the page publish date or the CMS modified date breaks the freshness signal and produces listings dated after their actual MLS submission.
What operators ask about real estate schema before they commit to a full implementation pass.
[ 01 ] Is parentOrganization on RealEstateAgent really required, or just nice to have? +
[ 02 ] Why does businessFunction matter on rental listings if the price field is monthly? +
[ 03 ] Where should datePosted on a listing actually come from? +
If the schema layer is half-implemented or auto-generated without the entity nesting, the rich-result eligibility is below where the inventory and the agent's authority would otherwise reach. Book a schema diagnostic.
We read the current schema deployment on the site (RealEstateAgent nesting, RealEstateListing structure, offers.businessFunction coverage, datePosted source per listing, additionalProperty handling for local custom fields), the parentOrganization edge between agent and brokerage entities, and the Knowledge Graph signals the current schema actually emits. Output is the schema-gap assessment plus the implementation scope, sequenced for the brokerage's inventory shape and the agent practice surface. Funnels into our /schema-for-real-estate/ retainer when the work runs deeper than a single-pass implementation.