Immo-Ka
Every property for sale in Québec. One place.
Immo-Ka aggregates 57,900+ active listings from 22 brokerage banners and 159 sub-agencies into a single searchable, mappable interface. Live at www.immo-ka.com.
57,900+
Active listings
95
Source connectors
22
Brokerage banners
159
Sub-agencies
2,825
Cities covered
≈$683K
Average asking price
Overview
Immo-Ka is an independent aggregator of houses, condos, plexes, and lots for sale across Québec. Instead of juggling the sites of RE/MAX, Royal LePage, Sutton, Via Capitale, Century 21, and dozens of other banners — each with its own navigation and filters — buyers search 57,900+ active listings from 22 banners, 159 sub-agencies, and 2,825 cities in one place. Every property is normalized to a single schema, deduplicated by Centris number, and links back to the original agency listing.
Since agency sites offer no webhooks, Immo-Ka reproduces the equivalent: 95 connectors (one adapter per source, using internal JSON APIs, JSON-LD, sitemaps, or Firecrawl for anti-bot SPAs) sync periodically, and content hashing detects new listings, price changes, and removals automatically, with a two-sync grace period and per-source drift detection. Listings are then enriched with cached geocoding, nearby points of interest, StatCan and INSPQ neighbourhood statistics, price history, and Vrai-Prix market-value estimates from a hedonic model plus comparables.
The backend is Python and FastAPI over SQLite in WAL mode; the frontend is React 18 with Vite, TypeScript, and Ka Maps, the Groupe KA mapping framework built on Mapbox GL 3D. A server-side SEO renderer serves complete HTML with JSON-LD and sitemaps on every route, including 1,589 programmatic city pages. The app runs on MacLustr cluster node M4M64a under PM2 as three processes — web server, sync watcher, and ngrok tunnel — exposed at www.immo-ka.com.
Key Features
Search and filters
Free-text search (address, city, MLS number) plus filters for city, sector, type, agency, price, bedrooms, bathrooms, and area — with shareable state kept in the URL.
Ka Maps 3D map
In-house Groupe KA mapping framework on a Mapbox GL 3D engine: live price clusters, markers colored by gap to the Vrai-Prix estimate, search-as-you-move, and a 2D/3D toggle.
Vrai-Prix estimates
Market-value estimation from a hedonic model plus comparables: a P10–P90 gauge, estimate versus asking-price markers, and an overpriced / aligned / below-estimate verdict on each listing.
Full agency registry
A banner-to-sub-agency registry covering 22 banners and 159 sub-agencies with deduplicated listing counts; sub-agency connectors act as automatic backup if a central feed fails.
Continuous change detection
Periodic sync plus content hashing detects additions, price changes, and sold properties automatically, with a grace period against transient failures and per-source drift detection.
Programmatic SEO
Full server-rendered HTML on every route: 1,589 city pages, 2,702 city-and-type pages, JSON-LD RealEstateListing markup, auto-regenerated sitemaps, and true 410/404 lifecycle handling.
How It Works
Source connectors
95 connectors — one adapter per agency or platform — pull listings via internal JSON APIs (Meilisearch, Algolia, source.immo, wp-json), JSON-LD, sitemaps, or Firecrawl for SPA and anti-bot sites, with auto-generated registries for multi-office banners.
Normalization
Every listing is mapped to a single PropertyListing schema: address, sector, city, region, canonical type, price, bedrooms and bathrooms, areas, year, MLS number, broker, room dimensions, all photos, and structured features.
Diff and dedup engine
SQLite in WAL mode with content-hash upserts detects new, changed, and removed properties, applies a two-sync grace period and per-source drift detection, logs price history, and deduplicates across agencies by Centris number.
Enrichment
Listings are enriched with cached geocoding, nearby amenities (POI), StatCan census and INSPQ heat-island neighbourhood statistics, and Vrai-Prix market-value estimates.
Delivery
A FastAPI layer serves listings, facets, stats, and bbox-bounded GeoJSON to the React 18 + Ka Maps frontend, while a server-side SEO renderer serves complete HTML and sitemaps to search engines; a PM2 watcher keeps everything in sync.
Tech Stack
Backend
Frontend
Deployment
Highlights
- 95 connectors (31 modules plus auto-generated sub-agency registries) cover 22 banners including RE/MAX, Royal LePage, Sutton, Via Capitale, Century 21, DuProprio, Kijiji, and LesPAC.
- Cross-agency deduplication by Centris number lets 60+ sub-agency connectors serve as failover without double-counting when a banner's central feed goes down.
- Every listing carries a Vrai-Prix gauge with a P10–P90 estimate range and an overpriced / aligned / below-estimate verdict.
- The neighbourhood block combines StatCan census dissemination-area data (median income, average rent, renter share) with INSPQ heat-island indicators.
- Server-rendered SEO produces 1,589 city pages and 2,702 city-and-type pages, with sitemaps covering all 57,900+ listing pages.
- KA ID single sign-on and hub-stored favorites connect Immo-Ka to the whole Groupe KA family, including Lou-Ka, Auto-Ka, and Vrai-Prix.
Explore Immo-Ka
Every Québec property for sale, one place — the full source is on GitHub.