devimco — Devimco Appartements
- site: https://devimco.com/appartements (pages projets) + API Planpoint (app.planpoint.io/api/projects|groups/find, POST JSON)
- méthode: json-api
- annonces: 498 → 498
- couverture après (sur 498 annonces): prix 100%, adresse 100%, dispo 100%, superficie 99.8%, commodités 99.8%
- fixture: ok · test: ok
Champs extraits
- Unités : API Planpoint (floors[] → units[]) — name, price, availability, deliveryDate, bedrooms, bathrooms, orientation, images/layoutGallery, inclusions.
- unit_type : NOUVEAU — champ structuré
typede l'API (« 3.5 » → 3½), avec repli sur le nb de chambres (+2). Corrige les unités où bedrooms est approximatif. - area_sqft : NOUVEAU — champ structuré
squareFeetposé directement (avant : seulement « 570 pi² » dans amenities, parsé centralement). - furnished : NOUVEAU — booléen explicite
furnishedde l'API (true/false, jamais deviné). - details : NOUVEAU — mapping des jetons structurés de
inclusions(« internet, electricity, heating, stove, refrigerator, dishwasher, washer, dryer… ») vers inclusions{}/appliances{}/balcony/ac. Corrige notammentrefrigerator→ fridge que la normalisation centrale ne reconnaissait pas. - address : projet Planpoint, avec NOUVEAU repli sur l'adresse affichée par la page Devimco
(lien Google Maps
?query=…) — répare Maestria Tour B et Hexagone 2 (78 annonces sans adresse → « 1245 Rue de Bleury, Montréal », « 101, Rue Murray, Montréal »). - lat/lng du projet ; étage + orientation dans description (« Étage 3 — Wellington ») ; bathrooms et « Meublé » dans amenities.
Champs indisponibles à la source
- Animaux : aucune mention par unité dans l'API ni sur les pages.
- Secteur fin par unité (on utilise le secteur de la page projet : Griffintown, Centre-ville, Quartier DIX30, Vieux-Longueuil).
- Adresse par tour pour les phases groupées (l'API laisse
addressvide sur certaines phases ; on utilise l'adresse de la page projet, commune au complexe).
Fragilités
- API Planpoint non documentée (POST {namespace, hostName} / {namespace}) : un changement de plateforme de Devimco casserait tout.
- Détection des iframes par regex sur l'URL app.planpoint.io (projet vs groupe /g/).
- Les unités « Unavailable », « Reserved » ou unitPriceTBD sont exclues (voulu).
- ~500 unités par sync : tout vient de ~9 pages + ~10 POST JSON, pas de page détail.
Améliorations apportées
- 78 adresses manquantes réparées (lien Maps de la page projet en repli).
- unit_type depuis le champ
typeexact de l'API. - area_sqft et furnished posés comme champs structurés explicites.
- details dérivés des jetons d'inclusions de l'API (fridge/washer_dryer/ac/balcony…
y compris
refrigeratorque les règles centrales ratent).
Échantillon avant/après
Alexander Phase 1 Appartements — unité 312
- avant : 2090.0 | 3½ | Disponible : 2026-08-06 | now | 763 (dérivé du texte) | pets=None | furnished=None | details={"inclusions":{"heating":true,"electricity":true,"internet":true},"appliances":{"stove":true,"dishwasher":true,"washer_dryer":true},"balcony":true,"floor":3} | 2255 René-Lévesque Blvd W, Montreal
- après : 2090.0 | 3½ | idem | now | 763 (squareFeet API) | furnished=false (explicite) | details={…idem…, "appliances":{…,"fridge":true},"furnished":false} | même adresse
Maestria Tour B Appartements — unité 506
- avant : prix ok | 3½ | Disponible | now | 568 | address="" (API vide)
- après : prix ok | 3½ | Disponible | now | 568 | address="1245 Rue de Bleury, Montréal" (lien Maps de la page projet)