spb/immo-ka Public
Immo-Ka — agrégateur des propriétés à vendre au Québec (73 connecteurs, ~40 000 annonces, React+FastAPI)
Python 64%
TypeScript 21.1%
CSS 14.3%
HTML 0.6%
1{2 "_comment": "Immo-Ka — Registre des sources (agences de courtage immobilier, province de Québec). Un connecteur par agence. Auteur : Simon-Pierre Boucher — contact@spboucher.ai",3 "sources": [4 {5 "id": "remax_quebec",6 "name": "RE/MAX Québec",7 "url": "https://www.remax-quebec.com",8 "listing_url": "https://www.remax-quebec.com/fr/maison-a-vendre",9 "coverage": "Toute la province — ~5 000 courtiers, ~119 agences (bannière #1 au Québec)",10 "connector": "remax_quebec",11 "status": "actif",12 "type": "franchise"13 },14 {15 "id": "royal_lepage",16 "name": "Royal LePage (Québec)",17 "url": "https://www.royallepage.ca",18 "listing_url": "https://www.royallepage.ca/fr/search/homes/1/",19 "coverage": "Toute la province — ~2 233 courtiers, ~47 agences (Bridgemarq)",20 "connector": "royal_lepage",21 "status": "actif",22 "type": "franchise",23 "note": "Recherche par ville filtrable QC : GET /fr/search/homes/{page}/?search_str=<ville>, QC&prov_code=QC&city_name=<ville>&lat=&lng=&search_type=city -> 100% QC (46/page), classé par proximité, cap ~1250/recherche. Sharding par ~28 points d'ancrage QC + dédup MLS (= n° Centris dans /.../mls{no}/). Requêtes directes (pas de Firecrawl). Champs liste: adresse, ville, type, prix, CAC, SDB, coords (data-rlp-key), photo jumplisting, MLS."24 },25 {26 "id": "sutton",27 "name": "Groupe Sutton Québec",28 "url": "https://suttonquebec.com",29 "listing_url": "https://suttonquebec.com/maisons-a-vendre.html",30 "coverage": "Toute la province — ~1 300-1 500 courtiers, ~20 agences",31 "connector": "sutton",32 "status": "actif",33 "type": "franchise"34 },35 {36 "id": "via_capitale",37 "name": "Via Capitale",38 "url": "https://www.viacapitalevendu.com",39 "listing_url": "https://www.viacapitalevendu.com/recherche/residentiel/",40 "coverage": "Toute la province — ~5 300 propriétés, ~900-1 000 courtiers (québécoise, Bridgemarq)",41 "connector": "via_capitale",42 "status": "actif",43 "type": "franchise",44 "note": "ASP.NET rendu serveur derrière Cloudflare : accès via Firecrawl proxy=stealth. Résultats paginés ?page=N (34/page, ~155 pages). Parse: adresse, ville, secteur, région, type, prix, photos (images.viacapitale.info). CAC/SDB non captés à ce stade (icônes)."45 },46 {47 "id": "century21",48 "name": "Century 21 (Québec)",49 "url": "https://www.c21.ca",50 "listing_url": "https://listings.moxiworks.com/m214-1731446488/fr-ca",51 "coverage": "Toute la province — ~339 courtiers, ~22 agences",52 "connector": "century21",53 "status": "actif",54 "type": "franchise",55 "note": "Central c21.ca->iframe moxiworks verrouillé (503/WAF). Couvert via sous-agences source.immo (c21_ag_*)."56 },57 {58 "id": "proprio_direct",59 "name": "Proprio Direct",60 "url": "https://propriodirect.com",61 "listing_url": "https://propriodirect.com/propriete-a-vendre/",62 "coverage": "Toute la province — ~746 courtiers, agence unique (Bridgemarq)",63 "connector": "proprio_direct",64 "status": "actif",65 "type": "agence",66 "note": "Feed DDF (CREA) servi par API JSON interne POST propriodirect.com/fr/api/searchListings (corps {from:offset}, 30/page, champ total). ~3201 propriétés à vendre, données complètes + galeries photos. Hôte canonique sans www."67 },68 {69 "id": "exp_quebec",70 "name": "eXp Agence immobilière (Québec)",71 "url": "https://www.exprealty.ca",72 "listing_url": "https://www.exprealty.ca/fr-CA/search",73 "coverage": "Toute la province — ~400+ courtiers, agence virtuelle",74 "connector": "exp_quebec",75 "status": "a_faire",76 "type": "agence",77 "note": "Next.js (exprealty.ca/fr-CA/search) : inscriptions chargées côté client via backend BoldTrail/kvCORE ; absentes de __NEXT_DATA__ et des chunks JS ; Firecrawl proxy=stealth rend la page mais pas les fiches (fetch client non déclenché). Aucun endpoint API découvrable (seul images.expcloud.com exposé). Reste : capturer l'XHR live de recherche BoldTrail (state=QC) via un navigateur instrumenté, puis rejouer l'API JSON."78 },79 {80 "id": "kw_urbain",81 "name": "Keller Williams Urbain",82 "url": "https://www.kwurbain.ca",83 "listing_url": "https://www.kwurbain.ca/inscriptions/",84 "coverage": "Grand Montréal + Rive-Sud/Rive-Nord",85 "connector": "kw_urbain",86 "status": "actif",87 "type": "franchise",88 "note": "Cartes HTML rendues serveur (plateforme realestate.marketingwebsites.ca) — 349 inscriptions sur une page. Champs: adresse, ville, région, prix, chambres, sdb, photo."89 },90 {91 "id": "kw_distinction",92 "name": "Keller Williams Distinction",93 "url": "https://www.kwdistinction.com",94 "listing_url": "https://www.kwdistinction.com/sitemap.xml",95 "coverage": "Gatineau / Outaouais",96 "connector": "kw_distinction",97 "status": "actif",98 "type": "franchise",99 "note": "ASP.NET (tonikwebstudio) : grille/fiche en AJAX (prix/photos non rendus statiquement, ni fiablement via Firecrawl). Enumération via sitemap.xml (167 propr.) ; slug d'URL = ville/type/chambres/rue/no-Centris. Champs liste: adresse, ville, secteur, type, chambres, Centris. Prix/photos NON dispo."100 },101 {102 "id": "vendirect",103 "name": "Vendirect",104 "url": "https://vendirect.ca",105 "listing_url": "https://vendirect.ca/proprietes/",106 "coverage": "Toute la province — ~609 courtiers, commission réduite",107 "connector": "vendirect",108 "status": "actif",109 "type": "agence",110 "note": "WordPress + plugin source-immo. API publique api-v1.source.immo (en-têtes x-si-account/api/appId depuis _configs.json), pagination next_token. ~64 propriétés à vendre, données complètes (prix, ch., sdb, pi², année, coords, photo)."111 },112 {113 "id": "expert_immobilier_pm",114 "name": "L'Expert Immobilier P.M.",115 "url": "https://expertimmobilierpm.com",116 "listing_url": "https://expertimmobilierpm.com/proprietes/",117 "coverage": "Grand Montréal — ~305 courtiers, grosse indépendante",118 "connector": "expert_immobilier_pm",119 "status": "actif",120 "type": "agence",121 "note": "Vrai site QC trouve (l'ancienne URL lexpertimmobilier.com = agence de Casablanca). WordPress + plugin mw-properties2 (plateforme marketingwebsites.ca, comme KW Urbain). /proprietes/ rend 9 fiches serveur (inventaire complet derriere l'API REST mw-properties/v2 en 401). Cartes: adresse, ville, type, prix, chambres, sdb, superficie ; fiche detail: galerie complete (marketingwebsites) + description. external_id = no Centris."122 },123 {124 "id": "engel_volkers",125 "name": "Engel & Völkers Montréal / Québec",126 "url": "https://immobilier.evquebec.com",127 "listing_url": "https://immobilier.evquebec.com/property-sitemap.xml",128 "coverage": "Montréal, Québec, Tremblant — luxe #1 au Québec",129 "connector": "engel_volkers",130 "status": "actif",131 "type": "luxe",132 "note": "immobilier.evquebec.com : property-sitemap.xml (~1240 fiches FR /propriete/{no-centris}/). Fiche = JSON-LD (prix/adresse/description) ; galerie séquentielle media.evquebec.com/listings/{id}/NN.webp (sondée jusqu'au 1er trou). Enrichissement cache+plafond (IMMOKA_EV_DETAIL_LIMIT)."133 },134 {135 "id": "sothebys_quebec",136 "name": "Sotheby's International Realty Québec",137 "url": "https://sothebysrealty.ca",138 "listing_url": "https://sothebysrealty.ca/en/search-results/province-quebec-real-estate/",139 "coverage": "Toute la province — luxe",140 "connector": "sothebys_quebec",141 "status": "actif",142 "type": "luxe",143 "note": "Recherche rendue côté client. Fiches enumérées via pages de résultats (grid public plafonné ~40 fiches province-wide ; pagination AJAX non exposée en URL). Chaque fiche enrichie via son JSON-LD Product : prix, galerie S3 complète (35-75 photos), description, MLS (sku), type. Limite : couverture = set public courant (~40) ; coverage complète nécessiterait l'endpoint AJAX de pagination."144 },145 {146 "id": "profusion",147 "name": "Profusion Immobilier (Christie's)",148 "url": "https://www.profusion.global",149 "listing_url": "https://www.profusion.global/acheter/nos-inscriptions/",150 "coverage": "Grand Montréal + province — luxe, affiliée Christie's",151 "connector": "profusion",152 "status": "actif",153 "type": "luxe",154 "note": "WordPress DIVI ; nos-inscriptions liste ~357 fiches /propriete/{no-centris}/ (HTML). Fiche = JSON-LD RealEstateListing (adresse, description, prix, courtier) + galerie profusionimmo.ca. Enrichissement cache+plafond (IMMOKA_PROFUSION_DETAIL_LIMIT)."155 },156 {157 "id": "barnes_quebec",158 "name": "BARNES Québec",159 "url": "https://barnes-quebec.com",160 "listing_url": "https://barnes-quebec.com/property",161 "coverage": "Montréal + province — luxe international",162 "connector": "barnes_quebec",163 "status": "actif",164 "type": "luxe",165 "note": "Algolia (App HCW55VIQNM, index quebec_all). ~344 propriétés, prix/MLS/chambres/sdb/superficie/géoloc. Images non indexées (viendront de la page détail). Dédoublonnage FR/EN par adresse."166 },167 {168 "id": "m_immobilier",169 "name": "M Immobilier",170 "url": "https://www.mimmobilier.com",171 "listing_url": "https://www.mimmobilier.com/properties",172 "coverage": "Grand Montréal — indépendante primée (Leading RE)",173 "connector": "m_immobilier",174 "status": "actif",175 "type": "luxe",176 "note": "Cartes HTML rendues serveur (/properties, PAS /proprietes). ~65 propriétés à vendre (locations filtrées). Champs: ville, adresse, prix, chambres, sdb, photos Centris, no Centris. Type non exposé."177 },178 {179 "id": "via_ag_elite",180 "name": "Via Capitale Elite",181 "url": "https://viacapitaleelite.immo",182 "listing_url": "https://viacapitaleelite.immo/proprietes/",183 "coverage": "Sous-agence Via Capitale (source.immo)",184 "connector": "via_ag_elite",185 "status": "actif",186 "type": "franchise",187 "role": "backup"188 },189 {190 "id": "via_ag_select",191 "name": "Via Capitale Select",192 "url": "https://viacapitaleselect.com",193 "listing_url": "https://viacapitaleselect.com/proprietes/",194 "coverage": "Sous-agence Via Capitale (source.immo)",195 "connector": "via_ag_select",196 "status": "actif",197 "type": "franchise",198 "role": "backup"199 },200 {201 "id": "via_ag_dumontroyal",202 "name": "Via Capitale Dumontroyal",203 "url": "https://viacapitaledumontroyal.com",204 "listing_url": "https://viacapitaledumontroyal.com/proprietes/",205 "coverage": "Sous-agence Via Capitale (source.immo)",206 "connector": "via_ag_dumontroyal",207 "status": "actif",208 "type": "franchise",209 "role": "backup"210 },211 {212 "id": "via_ag_acces",213 "name": "Via Capitale Acces",214 "url": "https://viacapitaleacces.com",215 "listing_url": "https://viacapitaleacces.com/proprietes/",216 "coverage": "Sous-agence Via Capitale (source.immo)",217 "connector": "via_ag_acces",218 "status": "actif",219 "type": "franchise",220 "role": "backup"221 },222 {223 "id": "c21_ag_quebec",224 "name": "Century 21 Québec (All Quebec)",225 "url": "https://quebec.c21.ca",226 "listing_url": "https://quebec.c21.ca",227 "connector": "c21_ag_quebec",228 "status": "actif",229 "role": "sous-agence",230 "platform": "source.immo",231 "note": "Compte source.immo partagé (quebec/excel/immoplus) = inventaire provincial C21 complet (~1600 à vendre). Pagination st/nt. Dédup par n° Centris."232 },233 {234 "id": "c21_ag_vision",235 "name": "Century 21 Vision (Outaouais)",236 "url": "https://vision.c21.ca",237 "listing_url": "https://vision.c21.ca",238 "connector": "c21_ag_vision",239 "status": "actif",240 "role": "sous-agence",241 "platform": "source.immo",242 "note": "Century 21 Vision (Gatineau) — compte source.immo distinct (~139 à vendre)."243 }244 ]245}