SPB Git

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%
11.4 KB · 245 lines json
Raw Blame History
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}