TECHNICAL
Real Estate SEO: How to Rank Listings and Agent Pages
Real estate SEO guide: RealEstateListing schema, IDX page strategy, hyper-local content, agent E-E-A-T, Core Web Vitals on image-heavy listing pages, and how to compete when Zillow and Realtor.com own the top results.
Published July 14, 2026 · 10 min read
Real estate SEO operates in one of the most challenging local search environments: major aggregators (Zillow, Rightmove, Realtor.com, Zoopla) dominate generic listing queries, Google's local pack surfaces individual agents and agencies for geo-specific queries, and buyers use search engines across a 6-18 month research journey that starts with broad queries and narrows to hyper-local ones. The opportunity for individual agencies and agents lies in the long-tail queries the aggregators don't cover, local content that generates trust, and technical implementation that aggregators — with their scale constraints — often get wrong.
Why you can compete despite aggregator dominance
Search aggregators rank well for generic queries like "homes for sale London" or "3-bedroom houses Manchester" because they have the inventory, domain authority, and link profiles that individual agency sites can't match. But aggregators lose relevance at the hyper-local and expertise level:
- Neighbourhood-level content: "best streets to buy in Hackney", "upcoming developments in Bristol's Stokes Croft", "schools near [specific area]" — content where local expertise beats aggregator data.
- Long-tail property queries: "Victorian terraced houses with parking North London under £800k" — queries too specific for aggregator category pages but answerable with IDX filter pages and structured data.
- Agent authority queries: buyers research agents. "[Agent name] reviews", "[agency name] track record", "[agency] vs [agency]" — queries where owned content and E-E-A-T signals matter more than inventory size.
- Market report queries: "house prices [neighbourhood] 2026", "[area] property market report" — content aggregators produce generically that local agencies can produce with genuine local insight and data.
Real estate structured data
Schema.org includes RealEstateListing (a type of Product) for property listings, RealEstateAgent for individual agents, and LocalBusiness for agency offices. Most real estate websites — particularly those using generic WordPress themes or IDX plugins — implement these incorrectly or not at all.
Agency office schema (LocalBusiness → RealEstateAgent):
{
"@context": "https://schema.org",
"@type": "RealEstateAgent",
"name": "Meridian Property Group",
"url": "https://meridianproperty.co.uk",
"telephone": "+44 20 7890 1234",
"address": {
"@type": "PostalAddress",
"streetAddress": "42 High Street",
"addressLocality": "Richmond",
"postalCode": "TW9 1HJ",
"addressCountry": "GB"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.4613,
"longitude": -0.3037
},
"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"
}
],
"areaServed": [
{"@type": "Place", "name": "Richmond"},
{"@type": "Place", "name": "Twickenham"},
{"@type": "Place", "name": "Kew"}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "247",
"bestRating": "5"
}
}
Individual property listing schema — the RealEstateListing type within Product:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "4-bedroom Victorian terrace, Castlenau Road, Barnes SW13",
"description": "4-bedroom Victorian terraced house with 2 bathrooms, 180sqm, south-facing garden, within 400m of Barnes Bridge station",
"offers": {
"@type": "Offer",
"price": "1450000",
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "RealEstateAgent",
"name": "Meridian Property Group"
}
},
"image": ["https://meridianproperty.co.uk/images/castlenau-road-exterior.jpg"]
}
We audit real estate agency sites using DeepSEOAnalysis and find that the most common structured data failure is areaServed — the property that tells Google which geographic areas the agency serves. This is the signal that associates the agency with area-specific queries beyond its office address proximity. The second most common failure is missing aggregateRating on the agency page despite star ratings being prominently displayed from review platforms.
IDX pages and SEO
IDX (Internet Data Exchange) allows real estate agencies to display MLS/Rightmove/Zoopla listings from a data feed on their own website. IDX pages are an SEO landmine for most agencies because:
Client-side rendering: most IDX plugins render listings via JavaScript on the client side. The initial HTML page is an empty container; the listings load after JavaScript executes. Googlebot may or may not fully render these pages, and the listing content is invisible to Googlebot's HTML parser pass. This means IDX listing pages often aren't indexed — the agency thinks it has 500 property pages but Google has indexed 3.
Duplicate content from shared feeds: multiple agencies in the same area are often pulling identical property descriptions from the same MLS feed. Google identifies and filters duplicate content, typically ranking the aggregator or the original listing source above the duplicate agency page.
Fix for IDX SEO: (1) choose an IDX plugin with server-side rendering or static page generation for listings — ensure the property content appears in the initial HTML. (2) Add original content to each listing page beyond the MLS description — a paragraph about the neighbourhood, transport links, local schools, nearby amenities — that provides unique value. (3) Use canonical tags pointing from IDX listing pages to the authoritative source (MLS or aggregator) rather than trying to compete on duplicate content.
Alternative approach: area landing pages: instead of competing on individual listing pages (where aggregators dominate), create area landing pages that rank for "[area] properties for sale" by combining a curated listings widget with original local content (area guide, transport, schools, recent sold prices, agent commentary). The original content differentiates the page from aggregator category pages.
Hyper-local content strategy
The content advantage individual agents have over aggregators is local knowledge expressed at depth. Aggregators produce thin area guides at scale; local agencies can produce genuinely useful local content that reflects what they know from working in the area daily.
High-value local content formats:
- Street-level guides: "Living in [specific street or estate]" — covering the character of different streets, parking situation, community feel, what you get for different price points.
- School catchment area content: parents researching school catchments are a high-value, long-conversion-cycle audience. "Which streets fall in [primary school] catchment area?" is a query aggregators can't answer at this depth.
- Sold price data with commentary: publishing recent sold prices with agent commentary ("the price per sqm in [area] has moved from X to Y over the last 18 months because of [specific reason]") is data aggregators display but rarely explain.
- New development analysis: coverage of upcoming planning permissions, new build schemes, and development impacts on values in specific areas is local information that buyers and sellers seek but aggregators don't provide.
- Transportation and connectivity: detailed guides to commute times from specific streets to major employment centres, upcoming line extensions, and service changes — especially relevant in cities with variable transport quality by postcode.
Agent profile pages and E-E-A-T
Individual agent pages are underutilised SEO assets on most agency websites. Buyers research agents before instructing them — "reviews of [agent name]", "[agent name] track record", "[agent name] recent sales" are real queries. An agent page with no content beyond a photo and phone number misses this intent entirely.
Agent page E-E-A-T signals:
- Author schema:
PersonJSON-LD with agent name, job title, andworksForpointing to the agency entity establishes the agent as a documented person associated with the firm. - Demonstrable experience: years in the local market, properties sold in the specific area (with sold price data if permissible), testimonials from clients named and attributed.
- Local credentials: local association memberships, area specialist designations, local knowledge signals (school catchment expertise, specific road/development experience).
- Content authored by the agent: market commentary, area guides, or property advice attributed to the named agent — E-E-A-T signals are strengthened when the author has a visible track record of relevant expertise.
Core Web Vitals on listing-heavy pages
Real estate websites typically perform poorly on Core Web Vitals because of image-heavy property galleries and third-party widget loading. The most common issues:
- Gallery LCP: the hero image or first gallery image is the LCP element on listing pages. An unoptimised 3MB JPEG from the photographer creates LCP of 6-10 seconds on mobile. Fix: serve AVIF/WebP at appropriate dimensions, add
fetchpriority="high"to the LCP gallery image, useloading="eager"for the first image andloading="lazy"for subsequent gallery items. - CLS from gallery carousels: image carousels that don't specify image dimensions create CLS as images load and shift layout. Add explicit
widthandheightattributes to all gallery images. - Map embeds: interactive map embeds on listing pages are CLS sources. Replace interactive embeds with a static map image for initial render; load the interactive map only when the user interacts with a "Show map" button.
- Mortgage calculator widgets: third-party mortgage calculators from lenders frequently load slowly and shift layout. Implement loading: defer/async with explicit container sizing.
Competing with Zillow and Rightmove on schema
Aggregators often have incomplete or generic schema on individual listing pages — they prioritise scale over technical SEO perfection on each page. Individual agencies have the ability to implement more complete, accurate, and locally-relevant structured data:
- More specific
areaServeddata: linking to namedPlaceentities for each micro-neighbourhood the agency covers. - Agent-attributed listings: connecting individual listing pages to the specific agent's
Personentity via schema. - Local FAQ schema on area guides: FAQ schema on neighbourhood content pages for "What's the average house price in [area]?" and "Is [area] a good place to live?" captures PAA results that aggregator generic area pages don't specifically target.
FAQ
MORE FROM THE BLOG
Related articles
11 min read
YouTube SEO: How to Rank Videos on YouTube and Google Search
YouTube SEO covers title optimisation, description keyword placement, chapters, thumbnails, closed captions, and the watch signals that drive YouTube and Google ranking.
Read →7 min read
Voice Search SEO: How to Optimise for Voice Queries and AI Assistants
How voice search queries differ from typed queries, what technical signals (FAQ schema, speakable schema, featured snippet eligibility) matter for voice results, and why optimising for voice search overlaps heavily with AI visibility.
Read →10 min read
TikTok SEO: How to Rank in TikTok Search and Get Discovered in Google
TikTok SEO covers how to optimise videos for TikTok's internal search algorithm, how TikTok content ranks in Google Search, and how TikTok presence feeds into AI answer systems.
Read →Run DeepSEOAnalysis on your own site.
Free, no signup. Technical SEO, Core Web Vitals, structured data, and AI visibility in one report.
Run a free audit →