SPB Git

spb/ora-ka Public

Ora-Ka — cinq agrégateurs Ka, une barre de recherche hybride (exact + sémantique)

Python 80% TypeScript 12.9% CSS 6.8%
17.6 KB · 354 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->moxiworks (company_uuid=3341197) : même flux search_v2 anonyme accessible, MAIS données Rest-of-Canada/MLS (pas Centris QC : Québec-ville=0). La couverture QC de C21 vient des sous-agences source.immo (c21_ag_*), déjà actives. Le central moxi n'ajoute rien au QC."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 + kvCORE/BoldTrail. Scrapfly asp+render_js rend la page mais ?state=QC NE filtre PAS (cartes = ON/Toronto par defaut, data-adm1st=ON) ; cartes marquees data-compliance-requirement=signIn (DDF gated). js_scenario scroll n'ajoute pas de cartes (18 data-listing, 6 uniques, ON). Pages region QC (/montreal-qc-real-estate) rendent 0 carte. Reste: API kvCORE authentifiee (provider-id 30000) filtree state=QC, non contournable sans session."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      "id": "duproprio",246      "name": "DuProprio (sans courtier)",247      "url": "https://duproprio.com",248      "listing_url": "https://duproprio.com/sitemaps/fr/index.xml.gz",249      "coverage": "Toute la province — vente par le propriétaire (FSBO), ~7 600 propriétés QC",250      "connector": "duproprio",251      "status": "actif",252      "type": "fsbo",253      "note": "FSBO. Enumeration via sitemaps FR par region QC (/sitemaps/fr/<region>-listings.xml.gz) : l'URL encode region/ville/type/id. Fiche detail JSON-LD Product (prix, description, galerie photos.duproprio.com). Fetch direct + Scrapfly ASP en secours. agency='DuProprio (sans courtier)'."254    },255    {256      "id": "realta",257      "name": "Réalta Agence Immobilière",258      "url": "https://www.realta.ca",259      "listing_url": "https://www.realta.ca/proprietes/",260      "coverage": "Agence indépendante (Québec)",261      "connector": "realta",262      "status": "actif",263      "type": "agence",264      "note": "Plateforme source.immo (API publique api-v1.source.immo, config auto _configs.json). 83 propriétés à vendre. Généré par agences_source_immo.py."265    },266    {267      "id": "immodev",268      "name": "Immodev Agence Immobilière",269      "url": "https://www.immodev.ca",270      "listing_url": "https://www.immodev.ca/proprietes/",271      "coverage": "Agence indépendante (Québec)",272      "connector": "immodev",273      "status": "actif",274      "type": "agence",275      "note": "Plateforme source.immo (API publique api-v1.source.immo, config auto _configs.json). 93 propriétés à vendre. Généré par agences_source_immo.py."276    },277    {278      "id": "gaillardetz",279      "name": "Gaillardetz Agence Immobilière",280      "url": "https://www.gaillardetz.ca",281      "listing_url": "https://www.gaillardetz.ca/proprietes/",282      "coverage": "Agence indépendante (Québec)",283      "connector": "gaillardetz",284      "status": "actif",285      "type": "agence",286      "note": "Plateforme source.immo (API publique api-v1.source.immo, config auto _configs.json). 13 propriétés à vendre. Généré par agences_source_immo.py."287    },288    {289      "id": "domicilia",290      "name": "Domicilia Agence Immobilière",291      "url": "https://www.domicilia.com",292      "listing_url": "https://www.domicilia.com/proprietes/",293      "coverage": "Agence indépendante (Québec)",294      "connector": "domicilia",295      "status": "actif",296      "type": "agence",297      "note": "Plateforme source.immo (API publique api-v1.source.immo, config auto _configs.json). 1427 propriétés à vendre. Généré par agences_source_immo.py."298    },299    {300      "id": "niddamour",301      "name": "Nid d'Amour Agence Immobilière",302      "url": "https://www.niddamour.ca",303      "listing_url": "https://www.niddamour.ca/proprietes/",304      "coverage": "Agence indépendante (Québec)",305      "connector": "niddamour",306      "status": "a_faire",307      "type": "agence",308      "note": "Plateforme source.immo (API publique api-v1.source.immo, config auto _configs.json). 0 propriétés à vendre. Généré par agences_source_immo.py."309    },310    {311      "id": "kw_prestige",312      "name": "Keller Williams Prestige",313      "url": "https://www.kwprestige.com",314      "listing_url": "https://www.kwprestige.com/sitemap.xml",315      "coverage": "Grand Montréal — bannière KW prestige",316      "connector": "kw_prestige",317      "status": "actif",318      "type": "franchise",319      "note": "Grille/fiche en widget JS (pagination AJAX non exploitable). Enumeration via sitemap.xml (277 fiches a-vendre) ; slug URL = type-a-vendre-ville-secteur-{noCentris}-detail-Fr. Champs liste: type, ville, secteur, n Centris. Prix/photos = widget JS (list cards rendus serveur mais pagination JS ; enrichissement futur via Scrapfly js_scenario)."320    },321    {322      "id": "coldwell_banker",323      "name": "Coldwell Banker Québec",324      "url": "https://coldwellbanker.ca",325      "listing_url": "https://coldwellbanker.ca/",326      "coverage": "Québec — franchise (L'Héritage, Prestige…)",327      "connector": "coldwell_banker",328      "status": "a_faire",329      "type": "franchise",330      "note": "moxiworks org m102181-1733247042 / company_uuid=4277740. FLUX ANONYME CRACKÉ : GET svc.moxiworks.com/service/v1/listing/search_v2?company_uuid=<id>&bounds_west/east/south/north=..&status=active (pas d'auth ; le WAF n'est que sur listings.moxiworks.com, pas sur svc). MAIS le feed = Rest-of-Canada/MLS (TREB Toronto : MLS C.../T...) ; couverture Québec/Centris ~nulle (Québec-ville=0, Montréal=4 fiches à MLS torontois). Non exploitable pour Immo-Ka (QC). CB Québec quasi inexistant sur ce feed."331    },332    {333      "id": "kijiji",334      "name": "Kijiji Québec",335      "url": "https://www.kijiji.ca/b-maison-a-vendre/quebec/c35l9001",336      "status": "actif",337      "notes": "Petites annonces — catégories immobilier à vendre QC seulement (maisons c35, condos c643, terrains c641), __NEXT_DATA__/Apollo."338    },339    {340      "id": "lespac",341      "name": "LesPAC Québec",342      "url": "https://www.lespac.com/quebec/immobilier-achat-vente_b36k1R2.jsa",343      "status": "actif",344      "notes": "Petites annonces QC — immobilier achat-vente b37/b38/b39/b40/b41/b42 (pas location ni entreprises), searchResponse embarqué."345    },346    {347      "id": "ubee",348      "name": "Ubee",349      "url": "https://ubee.com/carte/a-vendre",350      "status": "actif",351      "notes": "Plateforme QC — API anonyme api.ubee.ca SearchProperties (Seller, résidentiel+commercial), galerie complète."352    }353  ]354}