Référence · Changements
Flux des changements depuis un curseur
GET/v1/changesDroit changes:read
Événements dans l’ordre : created (nouveau bien), price_changed, updated (champs dans changed_fields), removed (vendu, retiré ou fusionné avec un doublon). Sans curseur : à partir de maintenant, ou de since (30 jours au plus). next_cursor est toujours fourni : renvoyez-le pour reprendre exactement où vous vous êtes arrêté. Rétention : 30 jours.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| cursorfacultatif | chaîne | next_cursor d’une réponse précédente. |
| sincefacultatif | date-heure (ISO 8601) | Sans curseur : repartir de cette date (30 jours au plus). Sans les deux : à partir de maintenant. |
| departementfacultatif | liste (a,b,c) | Départements, séparés par des virgules (20 au plus). |
| typesfacultatif | liste (a,b,c) | Types d’événements, séparés par des virgules. |
| limitfacultatif | entier, 1 à 500 | Taille de page, de 1 à 500 (100 par défaut). |
Réponse 200
| Champ | Type | Description |
|---|---|---|
| data | tableau de objet | Événements, dans l’ordre. |
| ↳ cursor | chaîne | Position de l’événement dans le flux (croissante). |
| ↳ type | created | updated | price_changed | removed | created : le bien entre dans le flux (nouveau, ou remis en vente) ; price_changed ; updated (voir changed_fields) ; removed : vendu, retiré ou fusionné avec un doublon. |
| ↳ occurred_at | date-heure (ISO 8601) | Date du changement. |
| ↳ listing_id | uuid | Identifiant du bien. |
| ↳ changed_fields | tableau de chaîne | Champs modifiés : price, title, property_type, surface, surface_terrain, rooms, bedrooms, commune, position, photos, sources, dpe, audit, on_sale_since. |
| ↳ old_pricepeut être null | entier | Prix avant. |
| ↳ new_pricepeut être null | entier | Prix après. |
| ↳ listingpeut être null | objet | État courant du bien à la lecture ; null s’il a quitté le flux depuis. |
| ↳ id | uuid | Identifiant du bien (stable : un même bien vu sur plusieurs plateformes garde le même). |
| ↳ title | chaîne | Titre de l’annonce affichée. |
| ↳ property_typepeut être null | maison | appartement | Type de bien. |
| ↳ price | entier | Prix demandé, en euros. |
| ↳ price_per_sqmpeut être null | entier | Prix demandé au m², en euros. |
| ↳ surfacepeut être null | nombre | Surface habitable, en m². |
| ↳ surface_terrainpeut être null | nombre | Surface du terrain, en m². |
| ↳ roomspeut être null | entier | Nombre de pièces. |
| ↳ bedroomspeut être null | entier | Nombre de chambres. |
| ↳ construction_yearpeut être null | entier | Année de construction déclarée. |
| ↳ dpe_letterpeut être null | A | B | C | D | E | F | G | Classe énergie (DPE). |
| ↳ ges_letterpeut être null | A | B | C | D | E | F | G | Classe climat (GES). |
| ↳ works_neededpeut être null | none | light | moderate | heavy | Travaux à prévoir : aucun, légers, modérés, lourds. |
| ↳ outdoor_spacepeut être null | none | balcon | loggia | terrasse | jardin | Extérieur : aucun, balcon, loggia, terrasse ou jardin. |
| ↳ seller_typepeut être null | particulier | pro | Vendeur : particulier ou professionnel. |
| ↳ commune | objet | Commune du bien. |
| ↳ code | chaîne | Code INSEE. |
| ↳ name | chaîne | Nom de la commune. |
| ↳ positionpeut être null | objet | Position du bien ; null si inconnue. |
| ↳ lon | nombre | Longitude (WGS84). |
| ↳ lat | nombre | Latitude (WGS84). |
| ↳ precision | point | secteur | commune | point : adresse exacte ; secteur : zone floutée par la plateforme ; commune : centre de la commune. |
| ↳ radius_mpeut être null | entier | Rayon de la zone floutée, en mètres (secteur seulement). |
| ↳ photos | tableau de adresse (URL) | Adresses des photos, la principale d’abord. |
| ↳ sources | tableau de objet | Plateformes où le bien est en ligne. |
| ↳ id | chaîne | Identifiant normalisé de la plateforme (seloger, leboncoin… ; autre si inconnue). |
| ↳ name | chaîne | Nom lisible de la plateforme. |
| ↳ price_droppeut être null | objet | Dernière baisse de prix ; null si aucune. |
| ↳ pct | nombre | Baisse, en % (négatif). |
| ↳ from_price | entier | Prix avant la baisse. |
| ↳ to_price | entier | Prix après la baisse. |
| ↳ drops_count | entier | Nombre de baisses depuis la mise en vente. |
| ↳ days_ago | entier | Jours écoulés depuis la dernière baisse. |
| ↳ on_sale_since | date-heure (ISO 8601) | Mise en vente déclarée par les plateformes (à défaut, notre premier relevé). |
| ↳ first_seen_at | date-heure (ISO 8601) | Notre premier relevé du bien. |
| ↳ changes_count | entier | Nombre de modifications connues (prix, liens, titre, retraits…). |
| ↳ auditfacultatif | objet | Résumé de l’audit de prix, présent seulement avec le droit valuations:read. |
| ↳ statuspeut être null | OK | INSUFFICIENT_DATA | COVERAGE_UNAVAILABLE | OK : estimation disponible. INSUFFICIENT_DATA (aucune vente comparable) ou COVERAGE_UNAVAILABLE (pas de données DVF dans la commune) : ni estimation, ni libellé. null : pas encore valorisée. |
| ↳ estimated_pricepeut être null | entier | Prix de marché estimé, en euros, base prix affichés (comparable au prix demandé). |
| ↳ delta_pctpeut être null | nombre | Écart du prix demandé au prix de marché, en % (−12,5 = 12,5 % sous le marché). |
| ↳ labelpeut être null | TBA | BA | N | MA | TMA | TBA (très bonne affaire), BA (bonne affaire), N (dans le marché), MA (mauvaise affaire), TMA (très mauvaise affaire). |
| ↳ confidencepeut être null | nombre, 0 à 1 | Confiance de l’estimation, de 0 à 1 (nombre et proximité des ventes comparables). |
| ↳ location_precision | point | secteur | commune | Précision de la localisation qui a fondé l’estimation : adresse exacte, zone floutée par la plateforme, ou centre de la commune. |
| ↳ decote_unexplained | booléen | Bonne affaire apparente sans facteur de décote identifié : à vérifier. |
| next_cursor | chaîne | À renvoyer pour la suite ; toujours fourni, même sans événement. |
| has_more | booléen | D’autres événements suivent déjà : relancez tout de suite avec next_cursor. |
Erreurs
400 · Requête invalide401 · Clé absente ou invalide403 · Droit manquant ou accès coupé410 · Curseur expiré429 · Limite atteinte503 · Requête trop longue
Toutes les erreurs ont la forme { "error": { "code", "message", "request_id" } } : voir Erreurs.