Immo-Ka — agrégateur des propriétés à vendre au Québec (73 connecteurs, ~40 000 annonces, React+FastAPI)
Python 47.5%
HTML 27.9%
TypeScript 15.5%
CSS 7.2%
JavaScript 2%
1# eXp Agence immobilière (Québec) (`exp_ag_qc`)23*Généré le 2026-08-28 22:22 par `scripts/gen_connector_docs.py` — fichier produit automatiquement, ne pas éditer à la main.*45## Registre (`data/sources.json`)67- **Site** : https://expquebec.com8- **Recherche** : https://expquebec.com/fr/properties/9- **Couverture** : Toute la province — agence virtuelle (~1000+ inscriptions)10- **Type** : agence11- **Statut** : actif1213> Site officiel eXp QC (expquebec.com, WordPress + MW Properties). API cliente marketingwebsites.ca bloquée (whitelist IP) MAIS inventaire complet en SSR sur /fr/properties/?pages=N (9/page, param 'pages', stop après 3 pages vides). Carte: data-href mls={Centris}, data-price ($US), data-address, data-pic. Fiche détail /fr/properties/mls/{Centris}/ server-rendered et riche: galerie complète pleine résolution (ancres data-lightbox), remarque+addendum, inclusions/exclusions, icônes (CAC/SDB/superficie MC|PC/année), tables BÂTIMENT/ÉVALUATION/DÉPENSES/CARACTÉRISTIQUES, pièces, GPS exact (embed Street View), courtier+tél. Enrich plafonné IMMOKA_EXP_DETAIL_LIMIT (400/cycle) + cache BD; repli ville via map-property.php (IMMOKA_EXP_CITY_LIMIT). source_id _ag_ = dédup Centris.1415## Mécanique (introspection du code)1617- Module : `immoka/connectors/exp_quebec.py` — classe `ExpQuebecConnector`18- Délai entre requêtes : 0.4 s ; cache détail BD : oui19- Budgets env (enrichissement détail plafonné/exécution) : `IMMOKA_EXP_DETAIL_LIMIT` (défaut 400), `IMMOKA_EXP_CITY_LIMIT` (défaut 1200)2021**En-tête du module :**2223> Immo-Ka — Agrégateur de maisons à vendre (province de Québec)24> Auteur : Simon-Pierre Boucher — contact@spboucher.ai25> connectors/exp_quebec.py : eXp Realty Québec (expquebec.com) — toute la province.26> L'API cliente realestate.marketingwebsites.ca/api.php est verrouillée par27> whitelist IP (impasse, même via proxy). MAIS le serveur WordPress (autorisé28> sur l'API) rend l'inventaire COMPLET côté serveur sur29> /fr/properties/?pages={N} (9 fiches/page, param « pages » uniquement).30> Chaque carte porte data-href /fr/properties/mls/{MLS}, data-price ($US),31> data-address (rue) et data-pic (property-images/{MLS}/). Le n° MLS = n° Centris.32> FICHE DÉTAIL /fr/properties/mls/{MLS}/ : server-rendered elle aussi33> (requêtes directes, aucun anti-bot) et TRÈS riche — galerie complète en34> pleine résolution (~1728px, ancres data-lightbox="gallery-item"), remarque35> du courtier + addendum, inclusions/exclusions, icônes (chambres/sdb/36> superficie MC|PC/année), tables th/td par section (BÂTIMENT, ÉVALUATION,37> DÉPENSES, CARACTÉRISTIQUES, DÉTAILS DE PIÈCE), GPS exact dans l'embed38> Street View, courtier inscripteur (photo alt + tel: du bloc latéral).39> Enrichissement via _detailutil.enrich (cache BD + plafond40> IMMOKA_EXP_DETAIL_LIMIT, ~400/cycle).41> La VILLE vient de la fiche détail (en-tête h2) ; repli sur l'endpoint SSR42> /wp-content/themes/canvas/load/map-property.php?mls={MLS}&lang=fr pour les43> fiches au-delà du budget détail (cache « city » déjà peuplé).44> ⚠ PLAFOND : le SSR reflète le limit=1000 de l'API sous-jacente → au plus45> ~1000 fiches (pages 1..~114, crawl vérifié). C'est l'inventaire pratique46> complet ; si eXp QC dépasse un jour 1000 inscriptions, segmenter par région47> (params MW_region / MW_q du formulaire), chaque segment ayant son propre cap.48> source_id « exp_ag_qc » : infixe _ag_ = dédup Centris (db.refresh_dedup) —49> les fiches co-listées avec une bannière couverte sont masquées.5051## Volumétrie & complétude (BD live)5253| Indicateur | Valeur |54|---|---|55| Annonces en base (toutes) | 1 163 |56| Actives | 1 008 |57| Visibles (après dédup) | 892 |58| Masquées par la dédup | 116 |59| GPS (lat/lng) | 99.9 % |60| Photos | 100.0 % |61| Prix | 99.8 % |62| CAC (chambres) | 90.7 % |63| SDB (salles de bains) | 89.2 % |64| Année de construction | 89.9 % (dont rôle : 2.2 %) |65| Taxes / évaluation municipale | 100.0 % |66| Estimation Vrai-Prix (rôle) | 99.0 % |6768## Synchronisation6970- **Dernier sync** : 2026-08-28 22:17 — trouvé 1 000, +8 / ~10 / -0 — OK71- **Erreurs récentes** : 0 sur les 10 derniers syncs7273Voir aussi les [mécanismes transverses](INDEX.md#mécanismes-transverses-tous-connecteurs) (budgets détail, dédup Centris+adresse, jointure rôle vraiprix.db).74