SPB Git forge

spb/rent-ka

Public
8commits 1branches 0releases
7.4 MBsize
maindefault branch
19 days agolast push
Python 68.8% TypeScript 18.6% CSS 8.7% JavaScript 3.3% HTML 0.6%
6.1 KB

# Zumper (Québec) — connecteur zumper

Fiche générée automatiquement par scripts/gen_connector_docs.py le 2026-08-25 01:59 — ne pas éditer à la main, régénérer.

État : actif · Région : Province · Backend : direct · Annonces actives : 4804/5181

# Description de la source

Zumper (zumper.com) — portail locatif nord-américain, filtré PROVINCE DE QUÉBEC, en DIRECT (aucun proxy payant). API JSON interne (celle du site) : 1. GET /api/t/1/bundle → cookie csrftoken + jeton csrf 2. POST /api/t/1/pages/listables → annonces par bbox (en-tête x-csrftoken) ; paginé offset/limit, réponse = groupes « immeuble » (fourchettes prix/chambres) et pads individuels, champ state filtrable 3. GET /api/t/1/buildings/{id} → fiche immeuble : description, floorplan_listings = TOUTES les unités (prix, chambres, sdb, pi², disponibilité) — 1 requête par immeuble, mise en cache BD et invalidée par modified_on (le champ bouge quand l'inventaire change). Photos : https://img.zumpercdn.com/{media_id}/1280x960 (vérifié 2026-08-18). ⚠️ Le HTML du site est derrière un « Client Challenge » JS, mais l'API répond en direct avec des en-têtes navigateur + le rituel CSRF ci-dessus. Un 429 ponctuel = throttling : une seule reprise après pause, sinon on laisse le disjoncteur d'ingestion faire son travail. ⚠️ PadMapper (padmapper.com) = MÊME compagnie et MÊME API (/api/t/1/…, mêmes listing_id — vérifié 100/100 identiques sur Montréal 2026-08-18) : un seul connecteur suffit, padmapper reste dans PORTALS (dédup) au cas où. Recherche par bbox métropolitaines (le slug de ville est fragile, ex. « quebec-city-qc » ne matche rien) + filtre state == QC (Ottawa exclu).

  • Site : https://www.zumper.com
  • Page des annonces : https://www.zumper.com/apartments-for-rent/montreal-qc
  • Secteurs couverts : Grandes régions QC (Montréal/Laval/Longueuil, Québec-Lévis, Gatineau, Sherbrooke, Trois-Rivières, Saguenay, Drummondville, Granby/St-Jean) — API JSON interne en DIRECT (bundle CSRF + pages/listables par bbox + fiches immeubles /buildings), filtre state=QC ; ~3 900 annonces au premier relevé
  • Module : louka/connectors/zumper.py — classe ZumperConnector

# Accès

# Champs récupérés → schéma cible

Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table listings. Complétude mesurée en SQL sur les 4804 annonces actives ; exemple tiré d'une ligne réelle de la BD.

Colonne listings Contenu Renseignée (actives) Exemple réel
title Titre de l'annonce 100 % 170 René-Lévesque — Studio Promotional Price
address Adresse civique 100 % 170 Boul René-Lévesque E
city Ville (normalisée) 99 % Montréal
sector Secteur / quartier 80 % Quartier Ville-Marie
unit_type Type d'unité (3½, 4½…) 100 % Studio
price Loyer mensuel ($) 100 % 1 440 $
bedrooms Chambres 100 % 0
bathrooms Salles de bain 100 % 1
area_sqft Superficie (pi²) 75 % 391
availability_date Date de disponibilité 20 % —
lat GPS (lat/lng) 100 % 45.51020505957441
description Description 99 % 3 Months Free* *Limited time offer. E & OE conditions apply. Advertised price reflects a …
images Photos (JSON) 100 % 8 photo(s) — https://img.zumpercdn.com/907672238/1280x960
amenities Commodités (JSON) 98 % ["Onsite Laundry", "Air Conditioning", "Dishwasher", "Balcony", "In-Unit Laundry", "Heat"…
details Détails additionnels (JSON) 100 % {"inclusions": {"heating": true, "electricity": true, "hot_water": true}, "appliances": {…
url URL de l'annonce source 100 % https://www.zumper.com/apartment-buildings/p891463/170-rene-levesque-quartier-ville-marie…

# Fréquence & budget

  • Cadence observée (médiane des passages OK, sync_log) : ≈ 2.9 h
  • Dernier passage OK : 2026-08-25 00:06 — 4773 trouvées, +20 / ~30 / -32
  • Throttling : 1.2 s entre requêtes (constante de classe request_delay)
  • Cache des pages détail (BD detail_cache) : activé — évite de re-visiter les fiches inchangées

# Volumétrie & complétude

  • Annonces en BD : 5181 au total, 4804 actives
  • Première ingestion : 2026-08-18 · Dernière observation : 2026-08-25
  • Complétude clé (actives) : GPS 100 % · prix 100 % · photos 100 % · description 99 %
  • Runs journalisés (60 derniers) : 57, dont 0 en erreur

# Erreurs connues & dépannage

Aucune erreur dans les 60 derniers runs journalisés.

Rejouer la source seule : python3 run.py sync zumper · vérifier ensuite sync_log (SELECT * FROM sync_log WHERE source='zumper' ORDER BY ts DESC LIMIT 5;).

# Licence, attribution & conditions

  • Scraping poli d'annonces publiques (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site.
  • User-Agent identifiable avec page d'information et contact : LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai) ; throttling 1.2 s ; cache détail pour minimiser les requêtes.
  • Chaque annonce affichée sur Lou-Ka pointe vers l'annonce d'origine (colonne url) — la source garde le trafic de conversion.
  • Retrait sur demande : contact@spboucher.ai.

# Historique

  • 2026-08-18 — premières annonces de la source ingérées dans la BD.
  • 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par scripts/gen_connector_docs.py).