Skip to main content
Stacklane

MLS integrations, RESO Web API where modern, RETS where the MLS hasn't caught up.

MLS access is the foundation of every real estate product, and every MLS implements the standard slightly differently. We build the integration layer that handles the per-MLS quirks, normalises listings into a clean internal model, and keeps the photo pipeline running so listings render fast.

What we build

  • RESO Web API as the default

    Modern MLSes expose RESO Web API endpoints with OAuth 2.0. We onboard new MLSes through a structured config, token endpoint, OData endpoints, photo URL pattern, and the rest of the platform reads from the same normalised model.

  • RETS where the MLS hasn't migrated

    Plenty of MLSes still serve RETS only. The integration layer abstracts the protocol; the consuming code doesn't know whether the source was RETS or RESO. Migrations happen in the integration layer, not throughout the codebase.

  • Listings normalised against a typed model

    Each MLS sends different field names, code values, and units. The boundary maps them to a typed internal Listing with consistent fields. New MLSes plug in by writing the per-MLS mapping; the rest of the product doesn't need to know.

  • Photo pipeline that doesn't hammer the MLS

    Photos cache to our CDN on first request, refresh on the MLS's change webhook (or polling cadence where webhooks don't exist). Resized variants generated on upload, not on every request. MLS rate limits stay healthy.

  • Off-market + status transitions handled

    Listings going off-market, status changes (active → pending → sold), price adjustments, all propagate within minutes. Stale listings get flagged in the operator dashboard before agents notice.

  • Compliance with MLS rules

    Each MLS has its own display rules (attribution requirements, brokerage logos, sold-data restrictions). The display layer enforces them per MLS so the brokerage doesn't get sanctioned for non-compliant listings.

Where this fits

  1. You're launching a proptech product and the first MLS integration has consumed a quarter without shipping.

  2. Your existing MLS layer was a hand-rolled scraper that breaks every time the source MLS updates their data format.

  3. You're expanding to a new region and the local MLS is still RETS-only with no migration timeline.

Tech stack

  • TypeScript
  • RETS
  • RESO Web API
  • Postgres
  • BullMQ

Want this for your team?

30 minutes with a founder or senior engineer. We'll scope what you need and tell you straight whether Stacklane fits.

Book a Free Call