How It Works
Three steps. No iFrames. No third-party subdomains. No JavaScript-dependent indexing. Just your domain, your rankings, your leads.
Trestle API Pulls the Data
Your server authenticates with the Trestle RESO Web API using OAuth 2.0 credentials. On each request, it fetches live property data directly from Bright MLS , status, price, photos, agent details, and MLS fields.
Astro SSR Renders Full HTML
Astro's server-side runtime processes the Trestle response and renders a complete HTML page before it leaves the server. The browser receives finished markup , no client-side data fetching, no blank loading states.
Google Indexes on Your Domain
Googlebot crawls the full HTML page at yourdomain.com/listings/123-main-st. It sees address, price, bedrooms, description, photos , everything. The listing is indexed on your domain and contributes to your authority.
What Google Actually Sees
The technical difference between an iFrame IDX and a Trestle API integration is not subtle. Here is what Googlebot retrieves when it crawls a listing page in each approach.
<html>
<head>
<title>Search Listings</title>
</head>
<body>
<!-- Your header -->
<iframe
src="https://vendor.idxbroker.com/..."
width="100%"
height="800"
></iframe>
<!-- Your footer -->
</body>
</html>Googlebot stops at the iFrame boundary. The listing content lives on the vendor's domain and is indexed there , or not indexed at all.
<html>
<head>
<title>4BR 3BA in Bethesda MD | yourdomain.com</title>
<meta name="description"
content="Spacious colonial, updated kitchen...">
<script type="application/ld+json">
"@type": "RealEstateListing",
"price": 875000, "bedrooms": 4
</script>
</head>
<body>
<h1>123 Main St, Bethesda MD 20814</h1>
<p>$875,000 · 4 bed · 3 bath</p>
<p>Spacious colonial with updated kitchen...</p>
<!-- Full listing detail, photos, agent info -->
</body>
</html>Googlebot reads every field. The page ranks on your domain for the address, neighborhood, price range, and property type.
What's Included
Every IDX integration includes the following pages and features. Nothing is sold as an add-on upsell after the project starts.
Property Search Page
Filterable search interface with city, zip code, price range, bedrooms, bathrooms, property type, and status. Search results are server-rendered with pagination. URL parameters make results shareable and crawlable.
Individual Listing Detail Pages
Each active listing gets its own URL at yourdomain.com/listings/[mls-number]. Full address, price, photos, description, features, and agent details , all rendered as HTML and indexed by Google.
Saved Search Functionality
Registered users can save search criteria and receive email alerts when new matching listings appear. Alert frequency and format are configurable. Works without third-party services.
Lead Capture Forms
Contact forms on listing detail pages send directly to your email or CRM via webhook. Schedule a showing, ask a question, or request more info , all tied to the specific listing MLS number.
Bright MLS Compliance
Bright MLS logo, required disclaimer text, listing agent name, broker name, office name, and data timestamp , all rendered server-side on every listing page and search results page. No compliance gaps.
Mobile-Responsive Design
Property search and listing detail pages are fully responsive at all viewport widths. Photo galleries use native lazy loading. Forms are touch-optimized. Core Web Vitals pass on mobile.
MLS Systems I Integrate Across Central Virginia
Bright MLS is one of several boards I pull live listings from for Virginia agents. Whichever MLS your data lives in, the method is the same: fetched directly from the source API and server-rendered on your own domain, never an iFrame or a vendor subdomain.
Bright MLS
Trestle RESO Web API. Northern Virginia and the wider Mid-Atlantic. This is the integration approach detailed on this page.
Lynchburg Association of REALTORS (LAR)
Rapattoni Web API. Lynchburg, Forest, Amherst, Bedford, and Smith Mountain Lake. See the dedicated LAR integration page.
Central Virginia Regional MLS (CVRMLS)
Richmond, Chesterfield, Henrico, and the surrounding counties. Live listing data fetched from the board API and rendered on your domain.
Roanoke Valley Association of REALTORS (RVAR)
Roanoke, Salem, and the New River Valley. Same server-rendered approach, indexed on your domain, no vendor subdomain.
Compliance Built In
Bright MLS data licensing has specific display requirements. Every integration I build includes all of them from day one , they are not afterthoughts bolted on before launch.
Bright MLS Logo
The official Bright MLS logo is displayed on all listing pages and search results pages in the position and size required by the display rules. It is rendered as an image element, not a background.
Listing Agent & Broker Attribution
Listing agent name, license number where required, broker name, and office phone are displayed on every individual listing detail page. Data comes directly from the Trestle API feed.
Required Disclaimer Text
The Bright MLS disclaimer ("The data relating to real estate for sale on this website appears in part through the Bright MLS IDX program...") is included verbatim on all applicable pages and cannot be removed or collapsed.
Data Timestamp
Each listing shows the date and time the data was last updated from the Trestle feed. Search result pages show when the results were generated. Both are rendered server-side, not via JavaScript after page load.
Ready to Get Your Listings Indexed?
If you have an existing IDX setup and want to know exactly what Google sees when it crawls your listing pages, send me the URL and I will send back a written audit at no charge.
If you are starting fresh, we can usually have a working integration live within three weeks of Trestle API approval.