Skip to content
- site: edifiaimmobilier.com (« Trouvez un logement » → edifialocation.com/BuildingStack) + micro-sites levitalappartements.com (Livya), capellalevis.com (sysc), appartementscardinal.com (sysc)
- méthode: multi-sources (JSON embarqué : flux RSC Next.js Livya,
units = [[...]] sysc, var units = [...] BuildingStack + pages /b/)
- annonces: 184 (Le Vital 49, Capella 125, Cardinal Sud 7, Cardinal Nord 3)
- couverture (sur 184 annonces): prix 95%, adresse 100%, dispo 100%, superficie 100%, commodités 98%, photos 100%, GPS 32%
- fixture: ok (9 requêtes) · test: ok
# Projets couverts
- Le Vital (230 unités, Lévis, secteur Desjardins/quartier Umano, 6078 boul. Étienne-Dallaire) : la page « Plans et prix » embarque un module Livya (app.livya.com). Le HTML du module (Next.js App Router) contient le JSON complet des 230 unités dans les chunks
self.__next_f.push → 33 unités AVAILABLE + 16 avec futureAvailability datée = 49 annonces avec prix exact (rentalPrice), superficie, balcon, étage, chambres/SDB, GPS et adresse par unité. Amenities réelles de /espaces-communs-et-services/ (blocs Bricks .icon-box .brxe-heading, 20 items).
- Capella (résidence pour aînés autonomes et semi-autonomes, 198 unités, 1500 rue Weyman, Lévis) : sélecteur d'étages « sysc » — JSON
units = [[...]] par étage dans la page /logements-et-prix/ : 125 unités Available avec prix mensuel par unité, type (lettre), superficies logement/balcon, plan PNG de l'unité. Typologie = index dans [Studio, 3½, 4½] (constante du plugin sysc). Inclusions (câble, téléphonie, électricité, eau chaude, clim…) extraites de la grille d'icônes.
- Le Cardinal Sud (95 unités, 1125 rue des Rigoles, Val-Bélair, Québec) : même plateforme sysc sur appartementscardinal.com/cardinal-sud/ — 6 unités Available avec date de libération en toutes lettres, typologie « 4etdemiB » → 4½, inclusions (eau chaude + climatisation), plan de vente PNG, GPS via
var map_points. Prix souvent absent du micro-site → complété par le portail BuildingStack (correspondance immeuble+numéro d'unité).
- Le Cardinal Nord (132 unités, 1080 boul. Pie-XI Sud, Val-Bélair) : aucun sélecteur actif sur le micro-site → unités du portail edifialocation.com (BuildingStack) :
var units de /Listing/Listings (prix, pi², chambres, SDB, GPS, contact de l'agente de location) + page /b/ pour les dates de libération et les commodités de l'immeuble ; photos du micro-site.
- Le portail BuildingStack sert aussi de filet pour les unités Cardinal Sud absentes du micro-site (ex. l'unité 309).
# Exclusions (anti-doublons / hors périmètre)
- HUMĀ phases 1-2 (Huma 1/Huma 2 sur edifialocation) : connecteur dédié huma.py — filtrées par nom d'immeuble.
- Le Stellar, Chicoutimi (Saguenay) : hors région — filtré par ville (seuls Québec/Lévis passent).
- Riva Ouest (Lavaltrie, Lanaudière — pas Lévis) : en construction (automne 2025), aucune unité affichée nulle part.
- Solis : condos en vente, rien à louer.
- price : Livya
rentalPrice (Le Vital), sysc price (Capella/Cardinal Sud), BuildingStack Apartment.Price (Cardinal Nord + restes). NB : le portail affiche « Contactez-nous » (PriceDisclosure=4) mais son JSON public contient le prix — conservé avec price_label=« Contactez-nous ».
- availability : « Disponible — occupation immédiate » / « Libre le 2026-12-01 » (Livya futureAvailability.startsOn), « Libre 1 octobre 2026 » (sysc available_date), « Libre oct. 01, 2026 » (table BuildingStack) — toutes parsées par la normalisation.
- area_sqft : superficie habitable explicite partout ; balcon dans la description.
- amenities : par projet (20 Vital, 15 Capella, 6-8 Cardinal via .facilities BuildingStack).
- images : plan de l'unité en tête (Capella/Cardinal Sud), photos uploads du micro-site, PreviewUrl BuildingStack.
- lat/lng : par unité (Livya), marqueurs map_points (Cardinal Sud), Address (BuildingStack).
- details.contact : agente de location (nom, tél, courriel) pour les unités BuildingStack.
# Champs indisponibles à la source
- 9 unités sans prix : 5 Le Vital à disponibilité future (rentalPrice=0 dans le JSON) et 4 Cardinal Sud micro-site sans équivalent portail — price=None, rien d'inventé.
- pets : non structuré pour Vital/Capella (Capella affiche une politique « animal de moins de 12 lbs » en texte libre ; les Cardinals ont « Petits animaux autorisés »/« Grands chiens autorisés » dans les amenities → dérivés par normalize).
- GPS Capella : aucun marqueur exploitable sur la page.
# Fragilités
- 4 plateformes différentes : un re-design d'un micro-site casse son parseur (couvert par la fixture ; chaque projet est isolé dans un try/except).
- Le flux RSC Livya n'est pas une API contractuelle : on repère
"units":[ dans le blob décodé (les libellés i18n contiennent aussi "units" → le marqueur inclut le crochet). L'id d'entité Livya est lu dynamiquement dans la page WP (data-entity), pas codé en dur.
- Le prix BuildingStack est présent dans le JSON mais masqué à l'affichage (« Contactez-nous ») — si Edifia le retire du payload, ces prix passeront à None.
- La correspondance micro-site ↔ portail pour Cardinal Sud repose sur le nom d'immeuble exact (« Cardinal sud ») + numéro d'unité.
- Capella est une RPA : les prix (1 809 $–3 417 $) incluent des services de résidence ; le premier item des amenities le signale.
# Échantillon
vital-910 : Le Vital — Unité 910 | Studio | 1021 $ | Disponible — occupation immédiate | 364 pi² | GPS 46.7947/-71.1622 | 20 amenities
capella-1113 : Capella (résidence pour aînés) — Unité 1113 | Studio | 1809 $ | 517 pi² | plan PNG + 12 photos | 15 amenities
cardinal-sud-601 : Le Cardinal Sud — Unité 601 | 4½ | prix non affiché (None) | Libre 1 octobre 2026 → 2026-10-01 | 1067 pi² | inclusions eau chaude + clim
cardinal-nord-111 : Le Cardinal Nord — Unité 111 | 4½ | 1702 $ (« Contactez-nous ») | Libre oct. 01, 2026 → 2026-10-01 | 1072 pi² | contact agente de location