The short answer
A listing site is found in search, in answer boxes and in AI answers for the same reason: its pages can be crawled, they return the right HTTP status, and they say something the next IDX site does not. Google states that there are no additional requirements to appear in AI Overviews or AI Mode, and that optimizing for generative AI search is “still SEO”. So the work is mostly engineering: server-rendered listing pages on your own hostname, a deliberate treatment for sold and expired listings, sitemaps with honest dates, structured data that matches the page, and area pages built from data you are licensed to use. For assistants outside Google, the documented controls are robots.txt tokens. No vendor publishes how sources are chosen for an answer.
The terms: SEO is classic search results. AEO (answer engine optimization) is featured snippets and Google's AI features. GEO (generative engine optimization) is answers from assistants such as ChatGPT, Claude, Perplexity and Gemini. Every rule below was read on its publisher's page on October 12, 2026. This is a build checklist, not a promise of rankings.
1. Serve listing pages from your own hostname, in the HTML
Iframes and vendor subdomains
Many IDX products put listing pages in an iframe or on a hostname the vendor runs. Either way the content lives at the vendor's URL. Google's crawl documentation defines a site as a unique hostname and gives two hostnames on one domain as separate sites with separate crawl budgets, so search.yourbrokerage.com is crawled as a different site from www.yourbrokerage.com. For iframes, the only statement we found is the indexifembedded rule, which lets Google index the content of a page if it's embedded in another page through iframes despite a noindex rule. Nothing there says the embedding page gets the benefit. The option you control is a listing URL on your main hostname, fed from your own systems or a data API; see IDX vendor or custom build.
JavaScript rendering
Google renders JavaScript in a second step: Googlebot queues pages for both crawling and rendering, and a page may stay on this queue for a few seconds, but it can take longer than that. The same page says server-side or pre-rendering is still a good idea because not all bots can run JavaScript. The AI crawler pages cited below do not say whether those crawlers execute scripts. Put the price, address, remarks, photos and the canonical link in the first HTML response and the question goes away; Google warns that conflicting or multiple canonical tags may lead to unexpected results.
The same listing is on every IDX site
Google's documentation does not describe a penalty for this. It describes deduplication: when pages have the same or very similar primary content, Google clusters them together, chooses the one that is objectively the most complete and useful for search users as canonical, and a result usually points to the canonical page. It also says some duplicate content on a site is normal.
Google does not publish how it picks among IDX sites carrying one listing, and we will not guess. One thing follows from the mechanism: a page with only the feed's fields has the same primary content as everyone else's. What you add, within your MLS license, is yours: price and status history, comparable sales, the agent's own notes, a link to an area page with real data. On your own site give each listing one URL with a self-referencing canonical, which Google says to include on the canonical page itself.
2. Decide what happens when a listing stops being active
The default in many builds is a page that says “no longer available” and returns 200. Google calls that a soft 404: such pages are excluded from Search and will continue to be crawled, and waste your budget. Map each status to a response:
| Situation | Treatment | What Google documents |
|---|---|---|
| Sold or pending, and your MLS lets you keep displaying it | 200 with real content: status, dates, permitted sold data | A 2xx response may be considered for indexing; an empty or error-like page becomes a soft 404 |
| Expired, withdrawn or removed, and you may no longer show it | 404 or 410, with similar homes for the visitor | With no replacement, return a 404 (not found) or 410 (gone); Google treats all 4xx errors, except 429, the same |
| Relisted, or the URL scheme changed | 301 to the replacement listing | For a page that has moved or has a clear replacement; a 301 is a strong signal |
| End date known in advance (open house, auction) | unavailable_after meta tag or header | Google will not show the page in search results after the specified date/time |
| Sorted and filtered search results | Canonical to the unfiltered page, or block in robots.txt. Keep indexable only the few filter combinations you publish as landing pages with their own content | Listed as duplicates: the results of sorting and filtering functions; robots.txt is suggested for differently sorted versions of the same page |
Do not use noindex to save crawling: Google will still request, but then drop the page. Client-rendered apps that answer 200 for every route are told to redirect to a URL for which the server responds with a 404; server rendering sends the real status. The response also has to change when the listing does: if listing pages are cached or statically regenerated, the job that records a status change must invalidate that page, or a sold listing keeps answering as active until the cache expires. Which statuses you may display at all is set by your MLS (see the display-policy stage in our MLS data pipeline architecture guide).
Sitemaps and crawl budget for a daily-changing inventory
- Split by the limits. A sitemap holds 50MB (uncompressed) or 50,000 URLs; an index holds up to 50,000 loc tags.
- Take
lastmodfrom the listing's modification time, not the build time. Google uses it if it's consistently and verifiably accurate and ignores priority and changefreq. - Check whether crawl budget applies. Google's guide is for sites with 1 million+ unique pages changing weekly or 10,000+ unique pages changing daily; a multi-MLS site is often in the second group. It also recommends supporting 304 (Not Modified).
- Other engines. IndexNow pings participating engines when a URL has been added, updated, or deleted; it lists Microsoft Bing, Naver, Seznam.cz, Yandex and Yep.
3. Structured data: more vocabulary than rich results
Which schema.org types describe a listing and which rich results Google shows are separate questions. Google says its own documentation, not schema.org, is definitive for Google Search behavior.
| schema.org type | Describes | Google rich result, October 12, 2026 |
|---|---|---|
| RealEstateListing | The listing page; schema.org still places it in its “new” area | None. Google's structured data gallery has no feature for homes for sale or rent. Its one property feature, vacation rental, is limited to sites connected to Google's Hotel Center |
| SingleFamilyResidence | The home: bedrooms, bathrooms, floor size, and a yearBuilt that schema.org maps to the RESO YearBuilt field | |
| Offer | Price and terms | |
| Place | Address and coordinates | |
| RealEstateAgent | The brokerage or agent; a LocalBusiness subtype | Local business is supported; Google says to use the most specific LocalBusiness sub-type possible |
| BreadcrumbList | State, city, neighborhood, listing | Breadcrumb is supported |
| FAQPage | Questions and answers | Withdrawn: the FAQ rich result is no longer shown in Google Search results, as of May 7, 2026 |
Listing markup will not produce a listing rich result on Google today. It is still reasonable to publish: Google notes that properties it does not use may be useful for other search engines, services, tools, and platforms. Do not mark up content that is not visible to readers of the page; Google does not guarantee that valid markup is shown. Generate the JSON-LD from the record that renders the page, so a price change cannot leave the two disagreeing. The same reasoning covers FAQPage: this site still emits it for the questions at the end of each guide, as a description of the page, and expects no rich result from it.
4. Area and neighborhood pages: data or doorway
A page for every city, ZIP code and subdivision is easy to generate, and it is the pattern Google's spam policies describe. Doorway examples include multiple domain names or pages targeted at specific regions or cities that funnel users to one page; scaled content abuse includes scraping feeds, search results, or other content to generate many pages of little value. Creating a page per query variation to manipulate rankings or AI responses violates the scaled content abuse policy. An area page earns its place when it holds something the search results page behind it does not:
- Market statistics from your MLS data: median price, days on market and inventory for that area, each with its period and the date computed. Whether you may publish statistics derived from the feed is a license question (see how to get MLS data access).
- Local knowledge with a named author. Google's own example of commodity content is “7 Tips for First-Time Homebuyers”, set against a first-hand account of an inspection decision.
- A real hierarchy with breadcrumbs, not pages closer to search results than a clearly defined, browseable hierarchy.
- A publish threshold: an area with two listings and no data gets no page.
5. AEO: answers that can be quoted
You cannot nominate a page for a featured snippet; Google systems determine that. To be a supporting link in AI Overviews or AI Mode a page must be indexed and eligible to be shown in Google Search with a snippet, and the site must be included in Search generative AI features in Search Console. What remains is editorial discipline, which we recommend for readers and for accurate quotation, not because any search engine documents a reward for it:
- Answer in the first sentence under a heading that is the buyer's or seller's question, with the figure, its date and its source.
- Put comparable facts in an HTML table, not an image; Google lists making sure that important content is available in textual form.
- Name the author. Google encourages accurate authorship information, such as bylines.
- Audit snippet controls.
nosnippet,data-nosnippetandmax-snippetare the documented ways to limit what Search and its AI features show; a template that sets them by mistake opts the page out.
6. GEO: what is documented, and what is not
AI vendors document who their crawlers are and how to allow or block them:
| robots.txt token | Operator | Documented purpose |
|---|---|---|
| OAI-SearchBot | OpenAI | Used to surface websites in search results in ChatGPT's search features |
| GPTBot | OpenAI | Content that may be used in training; set independently of OAI-SearchBot |
| ChatGPT-User | OpenAI | User-initiated fetches, where robots.txt rules may not apply |
| ClaudeBot, Claude-SearchBot, Claude-User | Anthropic | In order: training data, search result quality, and user-directed retrieval; Anthropic says its bots honor robots.txt |
| PerplexityBot | Perplexity | Designed to surface and link websites in search results on Perplexity, not for model training |
| Google-Extended | A control token for Gemini training and grounding that does not impact a site's inclusion in Google Search; AI Overviews and AI Mode follow Googlebot rules |
- Decide per token. Blocking “AI bots” as one group also blocks the search crawlers that link to you.
- Check the firewall too. Google mentions crawling being allowed by any CDN or hosting infrastructure, and Perplexity publishes WAF configuration guidance and IP ranges.
- Read your MLS license first. MLS Grid's AI Use Addendum, for example, says its data may not be used for AI training without the prior express authorization of MLS Grid or an MLS. Allowing a training crawler on listing pages is a question for your MLS before it is a marketing decision.
llms.txt is a proposal by Jeremy Howard, first published in September 2024, for a Markdown file that gives agents an overview of a site. Google says it will neither harm nor help visibility in Search, which ignores it, and the AI crawler pages cited above do not mention it. This site publishes an llms.txt and allows AI crawlers in its robots.txt. That describes what we do; we have no evidence that it changes how often anyone cites us.
What is not known: no vendor cited here publishes a formula for which sources an AI answer uses. Google describes retrieval from its index and query fan-out in general terms and warns that no third-party tool has access to its internal ranking or AI systems. Anyone who promises citations in AI answers is guessing. Google's Search Console reporting is the first-party measure; for other assistants, server logs show which user agents fetched which pages, and nothing more.
7. Performance: why photo galleries fail Core Web Vitals
The thresholds are an LCP within 2.5 seconds, an INP of 200 milliseconds or less and a CLS of 0.1 or less, at the 75th percentile of page loads. Google says Core Web Vitals are used by its ranking systems and, in the same answer, that good scores guarantee nothing. A listing page is a hard case for specific reasons:
- A carousel script loads the first photo. The LCP image should be discoverable in the initial HTML document response as a plain
imgtag. Google Images needs the same: it doesn't index CSS images. - Every photo is lazy-loaded. web.dev: never lazy-load your LCP image. Give the first photo
fetchpriority="high"and hidden slides a low priority. - Photos come from another origin, such as an MLS media host, which costs a connection to that origin before the resource can start loading.
- Photos lack dimensions and widgets resize. Layout shifts come from images or videos with unknown dimensions and self-resizing third-party widgets, which describes an embedded IDX search box.
- The map and gallery scripts start while the visitor is already tapping. INP is measured on real interactions, and the first one on a listing page is usually a photo arrow. We would render the gallery controls without waiting for the map library, and load the map when it scrolls into view or is asked for.
Our real estate SaaS case study describes this kind of front end: agent IDX websites on Next.js with incremental static regeneration, dynamic imports and images served through S3 and a CDN. See Next.js development and MLS and IDX integration.
8. Local signals: Business Profiles for agents and offices
Google's Business Profile guidelines name real estate agents as individual practitioners. An agent should have a profile only if they operate in a public-facing role and can be contacted at the verified location during stated hours. Where several agents share an office, the brokerage has its own profile and each agent's title should include only the name of the practitioner; a sole agent at a branded office shares one profile named [brand/company]: [practitioner name]. A practitioner shouldn't have multiple Business Profiles for specializations, and a virtual office isn't eligible. Match it on the website: one page per real office.
What to build: the checklist
| Item | Why | How to verify it worked | Source |
|---|---|---|---|
| Listing pages on your main hostname | Another hostname is crawled as a separate site | Listing URLs appear under your own property in Search Console's Page Indexing report | Crawl budget |
| Listing content in the first HTML response | Rendering is queued; not every bot runs scripts | curl the URL and find price, address and remarks; compare with URL Inspection's rendered HTML | JavaScript SEO |
| One URL per listing, self-referencing canonical in the HTML | State your canonical once, consistently | URL Inspection shows the Google-selected canonical equal to yours | Canonical methods |
| Status-to-response rules for sold, expired, withdrawn | A 200 “not available” page is a soft 404 | Request a removed listing and read the status code; soft 404 count falls | Soft 404 errors |
Sitemap index under the limits; lastmod from listing modification time | lastmod is used only when accurate | Sitemaps report reads every file; only changed listings show a new lastmod | Build a sitemap |
| JSON-LD generated from the page's own record | Markup must match visible content | Rich Results Test for breadcrumb and local business; spot-check price against the page | Structured data policies |
| Area pages with licensed statistics, an author, a publish threshold | City pages that only funnel to search match the doorway examples | Each page shows a dated figure its search results page does not | Spam policies |
| robots.txt decision per AI token, mirrored in the WAF | Search and training crawlers are separate | Server logs show the documented user agents receiving 200 | OpenAI, Anthropic, Perplexity |
| First gallery photo in the HTML, prioritized, with dimensions | It is usually the LCP element | Field data in the Core Web Vitals report, not one lab run | Optimize LCP |
Claims to be skeptical of
| The claim | What the primary source says |
|---|---|
| “We will get you cited in AI Overviews and ChatGPT.” | Google: third-party tools can't guarantee performance. The AI vendors document crawler access, not selection. |
| “GEO replaces SEO.” | Google's AI features are rooted in its core Search ranking and quality systems. |
| “You need llms.txt to appear in AI answers.” | It is a proposal; Google Search ignores it. |
| “Listing schema gets you rich results for your homes.” | Google's gallery lists no home listing feature. |
| “Add FAQ schema for more space in the results.” | The FAQ rich result is no longer shown. |
| “Content must be chunked and rewritten for AI.” | Google: no requirement, and no ideal page length. |
| “A page for every city and keyword captures local searches.” | That is the pattern in Google's doorway and scaled content policies. |
| “Duplicate listings get your site penalized.” | Google documents clustering and choosing a canonical, and calls some duplication normal. |
MLS rules come first
Search guidance says how to make a page indexable; your MLS agreement decides whether the page may exist, which fields and statuses are public and what attribution is required. Budget the data side with the MLS and IDX cost calculator.
Frequently Asked Questions
Is GEO different from SEO for a real estate website?
For Google, no: its generative AI features are rooted in its core Search ranking and quality systems, with no additional requirements to appear in them. For other assistants, the documented controls are robots.txt tokens; no vendor cited here publishes how sources are chosen.
What should a sold or expired listing page return?
If you may still display it and the page has real content, 200. If it is removed with no replacement, Google says to return a 404 (not found) or 410 (gone). A 200 page that only says the listing is unavailable is a soft 404. Your MLS rules decide which of these you may do.
Is there a Google rich result for real estate listings?
Not on October 12, 2026. Google’s structured data gallery lists no feature for homes for sale or rent. Breadcrumb and local business markup are supported, and the FAQ rich result is no longer shown.
Sources were read on October 12, 2026. Search documentation changes often; check Google's documentation changelog before acting on a rule above. This guide describes published guidance and does not forecast how any page will rank.

