/v1/analyses
1 crédit Analyse d'une annonce par son lien · 0,6 crédits Analyse d'une annonce par son texte · 0,6 crédits Analyse d'une adresse postale
La requête
Le corps est un objet DemandeAnalyse avec une source parmi trois, et des rayons facultatifs.
| Champ | Type | Rôle |
|---|---|---|
source.listing_url | chaîne (URL) | Le lien d'une annonce. Résolu d'abord par un agrégateur, puis lu par LogiScan si le site l'accepte. 1 crédit. |
source.listing_text | chaîne | Le texte d'une page d'annonce, tel que copié. Lu par le même lecteur que le site, puis jeté. 0,6 crédit. |
source.address | chaîne | Une adresse postale, géocodée par la Base Adresse Nationale ; ban_id et facts (type, surface, prix…) facultatifs. 0,6 crédit. |
radii | liste d'entiers | Les rayons de comparaison en mètres, parmi 300, 500, 800, 1000, 1500 et 3000. Par défaut : 300, 500, 800 et 1000. |
?wait=N | paramètre de requête, 0 à 60 | Attendre le résultat dans la requête, jusqu'à N secondes (le service plafonne à 20). Sinon 202 et une adresse à relire. |
Les trois sources, et ce qu'elles donnent
- Un lien : le chemin le plus riche. L'agrégateur rend l'annonce dédoublonnée avec ses diffuseurs (leur nombre et leurs portails ; jamais leurs adresses ni leurs photos), et le moteur travaille sur des faits complets. Les portails reconnus sont listés en bas de page ; un lien hors de cet index est lu directement par LogiScan si le site l'accepte, sinon la réponse est vide et facturée.
- Un texte : le contenu d'une page collé tel quel. Le lecteur y reconnaît les formes de présentation (bloc d'étiquettes, ligne condensée, pavé réglementaire) ; le texte n'est ni journalisé, ni mis en mémoire, ni écrit en base.
- Une adresse : pas de résolution à faire, le moteur décrit l'adresse donnée. Sans
prix_eurdansfacts, le Deal Score rend une fourchette d'estimation (annonce_incomplete) ; avec un prix, il note.
/v1/analyses?wait=20
Analyser une annonce par son lien
1 crédit
wait attend le résultat jusqu'à vingt secondes ; sinon la réponse est un 202 avec l'adresse où le relire (GET /v1/analyses/{id}). Un même lien demandé deux fois dans l'heure est servi d'une mémoire, au même tarif. Une réponse vide mais honnête — aucun candidat, pas assez de ventes — est facturée : le travail a été fait. Une source en panne ne l'est pas : billed vaut false et le crédit revient.
curl -s -X POST 'https://logiscan.fr/v1/analyses?wait=20' \
-H 'Authorization: Bearer lsk_test_VOTRE_CLE' \
-H 'Content-Type: application/json' \
-d '{"source": {"listing_url": "https://www.exemple.fr/annonces/12345"}, "radii": [300, 500, 800, 1000]}'
import httpx
CLE = "lsk_test_VOTRE_CLE"
reponse = httpx.post(
"https://logiscan.fr/v1/analyses?wait=20",
json={"source": {"listing_url": "https://www.exemple.fr/annonces/12345"}, "radii": [300, 500, 800, 1000]},
headers={"Authorization": f"Bearer {CLE}"},
timeout=30,
)
print(reponse.status_code, reponse.json())
const CLE = "lsk_test_VOTRE_CLE";
const reponse = await fetch("https://logiscan.fr/v1/analyses?wait=20", {
method: "POST",
headers: { Authorization: `Bearer ${CLE}`, "Content-Type": "application/json" },
body: JSON.stringify({"source": {"listing_url": "https://www.exemple.fr/annonces/12345"}, "radii": [300, 500, 800, 1000]}),
});
console.log(reponse.status, await reponse.json());
Réponse du bac à sable — ce qu'une clé lsk_test_ reçoit, données fictives
{
"id": "bac-a-sable",
"statut": "termine",
"billed": false,
"source": "listing_url",
"mode": "test",
"cost_credits": 0.0,
"resolution": {
"request_id": "9336e3757bb54af38e9586bd707875da",
"status": "resolved",
"candidates": [
{
"label": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"ban_id": "99999_0001_00012",
"lat": 47.501,
"lon": 2.501,
"parcelle": null,
"confidence": 1.0,
"method": "adresse_saisie",
"matched_criteria": [
"adresse choisie dans la Base Adresse Nationale"
],
"diverged_criteria": [],
"comparaisons": [],
"position_approchee": false,
"dpe_trouve": null
}
],
"confidence_label": "eleve",
"resolved_by_level": null,
"levels_attempted": [],
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "not_used",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"search_area": null,
"duration_ms": 0,
"interrompue": false
},
"deal_scores": [
{
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"par_rayon": {
"300": {
"statut": "calcule",
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"score": 6.0,
"libelle": "dans le marché",
"explication": "Prix affiché comparé à 10 vente(s) enregistrée(s) dans un rayon de 300 m depuis moins de 3 ans, de surface voisine : l'écart à l'estimation médiane est de +5.0%.",
"avertissement": null,
"ecart_relatif": 0.05,
"prix_m2_annonce": 2100.0,
"prix_m2_median": 2000.0,
"estimation_basse_eur": 200000.0,
"estimation_mediane_eur": 200000.0,
"estimation_haute_eur": 200000.0,
"nb_comparables": 10,
"ventes_examinees": 10,
"rayon_m": 300.0,
"etapes": [
{
"etape": "un seul logement par vente",
"restants": 10
},
{
"etape": "nature « Vente »",
"restants": 10
},
{
"etape": "type de bien",
"restants": 10
},
{
"etape": "surface comparable",
"restants": 10
},
{
"etape": "vente récente",
"restants": 10
},
{
"etape": "prix au m² plausible",
"restants": 10
},
{
"etape": "à moins de 300 m",
"restants": 10
}
],
"mutations_comparables": [
"2024-900000",
"2024-900001",
"2024-900002",
"2024-900003",
"2024-900004",
"2024-900005",
"2024-900006",
"2024-900007",
"2024-900008",
"2024-900009"
],
"methodology_version": "1.1",
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"duration_ms": 0
},
"500": {
"statut": "calcule",
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"score": 6.0,
"libelle": "dans le marché",
"explication": "Prix affiché comparé à 10 vente(s) enregistrée(s) dans un rayon de 500 m depuis moins de 3 ans, de surface voisine : l'écart à l'estimation médiane est de +5.0%.",
"avertissement": null,
"ecart_relatif": 0.05,
"prix_m2_annonce": 2100.0,
"prix_m2_median": 2000.0,
"estimation_basse_eur": 200000.0,
"estimation_mediane_eur": 200000.0,
"estimation_haute_eur": 200000.0,
"nb_comparables": 10,
"ventes_examinees": 10,
"rayon_m": 500.0,
"etapes": [
{
"etape": "un seul logement par vente",
"restants": 10
},
{
"etape": "nature « Vente »",
"restants": 10
},
{
"etape": "type de bien",
"restants": 10
},
{
"etape": "surface comparable",
"restants": 10
},
{
"etape": "vente récente",
"restants": 10
},
{
"etape": "prix au m² plausible",
"restants": 10
},
{
"etape": "à moins de 500 m",
"restants": 10
}
],
"mutations_comparables": [
"2024-900000",
"2024-900001",
"2024-900002",
"2024-900003",
"2024-900004",
"2024-900005",
"2024-900006",
"2024-900007",
"2024-900008",
"2024-900009"
],
"methodology_version": "1.1",
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"duration_ms": 0
},
"800": {
"statut": "calcule",
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"score": 6.0,
"libelle": "dans le marché",
"explication": "Prix affiché comparé à 10 vente(s) enregistrée(s) dans un rayon de 800 m depuis moins de 3 ans, de surface voisine : l'écart à l'estimation médiane est de +5.0%.",
"avertissement": null,
"ecart_relatif": 0.05,
"prix_m2_annonce": 2100.0,
"prix_m2_median": 2000.0,
"estimation_basse_eur": 200000.0,
"estimation_mediane_eur": 200000.0,
"estimation_haute_eur": 200000.0,
"nb_comparables": 10,
"ventes_examinees": 10,
"rayon_m": 800.0,
"etapes": [
{
"etape": "un seul logement par vente",
"restants": 10
},
{
"etape": "nature « Vente »",
"restants": 10
},
{
"etape": "type de bien",
"restants": 10
},
{
"etape": "surface comparable",
"restants": 10
},
{
"etape": "vente récente",
"restants": 10
},
{
"etape": "prix au m² plausible",
"restants": 10
},
{
"etape": "à moins de 800 m",
"restants": 10
}
],
"mutations_comparables": [
"2024-900000",
"2024-900001",
"2024-900002",
"2024-900003",
"2024-900004",
"2024-900005",
"2024-900006",
"2024-900007",
"2024-900008",
"2024-900009"
],
"methodology_version": "1.1",
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"duration_ms": 0
},
"1000": {
"statut": "calcule",
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"score": 6.0,
"libelle": "dans le marché",
"explication": "Prix affiché comparé à 10 vente(s) enregistrée(s) dans un rayon de 1000 m depuis moins de 3 ans, de surface voisine : l'écart à l'estimation médiane est de +5.0%.",
"avertissement": null,
"ecart_relatif": 0.05,
"prix_m2_annonce": 2100.0,
"prix_m2_median": 2000.0,
"estimation_basse_eur": 200000.0,
"estimation_mediane_eur": 200000.0,
"estimation_haute_eur": 200000.0,
"nb_comparables": 10,
"ventes_examinees": 10,
"rayon_m": 1000.0,
"etapes": [
{
"etape": "un seul logement par vente",
"restants": 10
},
{
"etape": "nature « Vente »",
"restants": 10
},
{
"etape": "type de bien",
"restants": 10
},
{
"etape": "surface comparable",
"restants": 10
},
{
"etape": "vente récente",
"restants": 10
},
{
"etape": "prix au m² plausible",
"restants": 10
},
{
"etape": "à moins de 1000 m",
"restants": 10
}
],
"mutations_comparables": [
"2024-900000",
"2024-900001",
"2024-900002",
"2024-900003",
"2024-900004",
"2024-900005",
"2024-900006",
"2024-900007",
"2024-900008",
"2024-900009"
],
"methodology_version": "1.1",
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"duration_ms": 0
}
}
}
],
"comparables": [
{
"date": "2026-06-08",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "10 RUE DE L'EXEMPLE",
"distance_m": 0.0
},
{
"date": "2026-06-07",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "11 RUE DE L'EXEMPLE",
"distance_m": 27.0
},
{
"date": "2026-06-06",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "12 RUE DE L'EXEMPLE",
"distance_m": 54.0
},
{
"date": "2026-06-05",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "13 RUE DE L'EXEMPLE",
"distance_m": 81.0
},
{
"date": "2026-06-04",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "14 RUE DE L'EXEMPLE",
"distance_m": 107.0
},
{
"date": "2026-06-03",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "15 RUE DE L'EXEMPLE",
"distance_m": 134.0
},
{
"date": "2026-06-02",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "16 RUE DE L'EXEMPLE",
"distance_m": 161.0
},
{
"date": "2026-06-01",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "17 RUE DE L'EXEMPLE",
"distance_m": 188.0
},
{
"date": "2026-05-31",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "18 RUE DE L'EXEMPLE",
"distance_m": 215.0
},
{
"date": "2026-05-30",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "19 RUE DE L'EXEMPLE",
"distance_m": 242.0
}
],
"enrichment": {
"adresse": {
"label": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"ban_id": "99999_0001_00012",
"lat": 47.501,
"lon": 2.501,
"parcelle": null,
"confidence": 1.0,
"method": "adresse_saisie",
"matched_criteria": [
"adresse choisie dans la Base Adresse Nationale"
],
"diverged_criteria": [],
"comparaisons": [],
"position_approchee": false,
"dpe_trouve": null
},
"risques": {
"inondation": {
"concerne": true,
"libelles": [],
"atlas": [
"Lot"
]
},
"seisme": {
"zone": 1,
"libelle": "1 - TRES FAIBLE"
},
"argiles": {
"niveau": 2,
"libelle": "Exposition moyenne"
},
"radon": {
"potentiel": 1,
"libelle": "Potentiel faible"
},
"risques_recenses": [
{
"code": "12",
"libelle": "Mouvement de terrain"
},
{
"code": "121",
"libelle": "Affaissements et effondrements d'origine anthropique (anciennes carrières souterraines, hors mines)"
},
{
"code": "123",
"libelle": "Eboulement ou chutes de pierres et de blocs"
},
{
"code": "124",
"libelle": "Glissement de terrain"
},
{
"code": "127",
"libelle": "Tassements différentiels"
},
{
"code": "16",
"libelle": "Feu de forêt"
},
{
"code": "23",
"libelle": "Rupture de barrage"
},
{
"code": "24",
"libelle": "Transport de marchandises dangereuses"
}
],
"sites": [],
"statuts": {
"risques_recenses": "ok",
"inondation": "ok",
"seisme": "ok",
"radon": "ok",
"argiles": "ok",
"sites": "ok"
}
},
"urbanisme": {
"zonage": {
"code": "Ub",
"libelle": "Zone urbaine : quartiers à densifier ou à restructurer",
"type_zone": "U",
"document": "PLUI",
"date_validation": "2025-12-18"
},
"servitudes": [
{
"code": "AC1",
"libelle": "COLLEGE GAMBETTA",
"nature": "Périmètre des abords"
},
{
"code": "T1",
"libelle": "SUP T1 du Lot",
"nature": "Zone de protection"
},
{
"code": "PM1",
"libelle": "PM1",
"nature": "Enveloppe des zonages r?glementaires"
}
],
"statuts": {
"zonage": "ok",
"servitudes": "ok"
}
},
"projets": [],
"terrain": null,
"solaire": null,
"copropriete": null,
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "not_used",
"cadastre": "ok",
"georisques": "ok",
"gpu": "ok",
"sitadel": "ok",
"bpe": "ok",
"education": "ok",
"arcep": "ok",
"atmo": "ok",
"transit": "not_used"
}
},
"neighborhood": {
"amenities": [
{
"categorie": "sante",
"type": "Masseur kinésithérapeute",
"nom": null,
"distance_m": 348036.1,
"code": "D233",
"lat": 44.457760539675,
"lon": 1.447585132636019
},
{
"categorie": "sante",
"type": "Infirmier",
"nom": null,
"distance_m": 348139.4,
"code": "D232",
"lat": 44.45634199299316,
"lon": 1.450374463658037
},
{
"categorie": "sante",
"type": "Pédicure-podologue",
"nom": null,
"distance_m": 348153.2,
"code": "D237",
"lat": 44.457007419263995,
"lon": 1.445613798237905
},
{
"categorie": "sante",
"type": "Structure psychiatrique en ambulatoire",
"nom": null,
"distance_m": 348242.9,
"code": "D109",
"lat": 44.45625098392544,
"lon": 1.445183798617627
},
{
"categorie": "sante",
"type": "Psychologue",
"nom": null,
"distance_m": 348364.5,
"code": "D243",
"lat": 44.45495993149608,
"lon": 1.446192134879147
},
{
"categorie": "education",
"type": "École maternelle",
"nom": null,
"distance_m": 348375.2,
"code": "C101",
"lat": 44.45475270686691,
"lon": 1.446840309934811
},
{
"categorie": "alimentation",
"type": "Boulangerie",
"nom": null,
"distance_m": 348500.5,
"code": "B203",
"lat": 44.45364137495746,
"lon": 1.446565373837412
},
{
"categorie": "education",
"type": "École primaire",
"nom": null,
"distance_m": 348594.2,
"code": "C104",
"lat": 44.45279354677859,
"lon": 1.446460447750797
},
{
"categorie": "education",
"type": "Ufr",
"nom": null,
"distance_m": 348626.2,
"code": "C501",
"lat": 44.45251315825198,
"lon": 1.446370103813196
},
{
"categorie": "education",
"type": "Institut universitaire",
"nom": null,
"distance_m": 348661.9,
"code": "C502",
"lat": 44.452196892756014,
"lon": 1.446289545446312
},
{
"categorie": "alimentation",
"type": "Épicerie",
"nom": null,
"distance_m": 348698.9,
"code": "B202",
"lat": 44.45293670780534,
"lon": 1.439818211021289
},
{
"categorie": "education",
"type": "Collège",
"nom": null,
"distance_m": 348936.2,
"code": "C201",
"lat": 44.4504552854695,
"lon": 1.441549627874779
}
],
"schools": [
{
"nom": "Lycée polyvalent Gaston Monnerville",
"type": "Lycée",
"distance_m": 347275.4,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.46354320618618,
"lon": 1.4550500739231473,
"uai": null,
"nature": "lycee",
"indicateurs": null
},
{
"nom": "Section d'enseignement général et professionnel adapté du Collège Olivier de Magny",
"type": "Collège",
"distance_m": 347275.4,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.46354320618618,
"lon": 1.4550500739231473,
"uai": null,
"nature": "college",
"indicateurs": null
},
{
"nom": "Ecole élémentaire Lucien Bénac Terre Rouge",
"type": "Ecole",
"distance_m": 347482.8,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.46168794004309,
"lon": 1.4546934307658848,
"uai": null,
"nature": "primaire",
"indicateurs": null
},
{
"nom": "Ecole maternelle publique Lucien Bénac Terre Rouge",
"type": "Ecole",
"distance_m": 347581.3,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.460885623948506,
"lon": 1.4540452753864679,
"uai": null,
"nature": "primaire",
"indicateurs": null
},
{
"nom": "Ecole primaire publique P. Ségala",
"type": "Ecole",
"distance_m": 347997.4,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.460156607721466,
"lon": 1.4354300805942848,
"uai": null,
"nature": "primaire",
"indicateurs": null
}
],
"transit_stops": [],
"transit_source": null,
"connectivity": {
"fibre_disponible": null,
"part_locaux_fibre": null,
"technologies_filaires": [],
"couverture_mobile": [],
"statuts": {
"fixe": "ok",
"mobile": "ok"
}
},
"antennes": [],
"evenements": [],
"air_quality": {
"indice": 3,
"libelle": "Dégradé",
"date_indice": "2026-08-07",
"polluants": [
{
"code": "o3",
"libelle": "Ozone",
"indice": 3
},
{
"code": "no2",
"libelle": "Dioxyde d'azote",
"indice": 1
},
{
"code": "pm10",
"libelle": "Particules PM10",
"indice": 1
},
{
"code": "pm25",
"libelle": "Particules fines PM2,5",
"indice": 1
},
{
"code": "so2",
"libelle": "Dioxyde de soufre",
"indice": 1
}
],
"source": "Atmo HDF",
"zone": "LILLE"
},
"delinquance": null,
"statuts": {
"equipements": "ok",
"ecoles": "ok",
"resultats_ecoles": "ok",
"transports": "not_used",
"connectivite": "ok",
"qualite_air": "ok",
"delinquance": "not_used",
"antennes": "ok",
"evenements": "down"
},
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "not_used",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "ok",
"education": "ok",
"arcep": "ok",
"atmo": "ok",
"transit": "not_used"
},
"duration_ms": 40
},
"diffuseurs": {
"nombre": 0,
"portails": []
},
"sections": [
{
"nom": "resolution",
"statut": "ok",
"detail": null
},
{
"nom": "enrichissement",
"statut": "ok",
"detail": null
},
{
"nom": "quartier",
"statut": "ok",
"detail": null
},
{
"nom": "deal_score",
"statut": "ok",
"detail": null
}
],
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "ok",
"georisques": "ok",
"gpu": "ok",
"sitadel": "ok",
"bpe": "ok",
"education": "ok",
"arcep": "ok",
"atmo": "ok",
"transit": "not_used"
},
"duration_ms": 81
}
/v1/analyses?wait=20
Analyser le texte d'une annonce
0,6 crédits
Le texte est lu par le même lecteur que le site, puis jeté : il n'est ni journalisé, ni mis en mémoire, ni écrit en base.
curl -s -X POST 'https://logiscan.fr/v1/analyses?wait=20' \
-H 'Authorization: Bearer lsk_test_VOTRE_CLE' \
-H 'Content-Type: application/json' \
-d '{"source": {"listing_text": "Appartement T3 65 m² au 2e étage, Villeneuve-sur-Fixture (99999). DPE C. 189 000 €."}}'
import httpx
CLE = "lsk_test_VOTRE_CLE"
reponse = httpx.post(
"https://logiscan.fr/v1/analyses?wait=20",
json={"source": {"listing_text": "Appartement T3 65 m² au 2e étage, Villeneuve-sur-Fixture (99999). DPE C. 189 000 €."}},
headers={"Authorization": f"Bearer {CLE}"},
timeout=30,
)
print(reponse.status_code, reponse.json())
const CLE = "lsk_test_VOTRE_CLE";
const reponse = await fetch("https://logiscan.fr/v1/analyses?wait=20", {
method: "POST",
headers: { Authorization: `Bearer ${CLE}`, "Content-Type": "application/json" },
body: JSON.stringify({"source": {"listing_text": "Appartement T3 65 m² au 2e étage, Villeneuve-sur-Fixture (99999). DPE C. 189 000 €."}}),
});
console.log(reponse.status, await reponse.json());
Réponse du bac à sable — ce qu'une clé lsk_test_ reçoit, données fictives
{
"id": "bac-a-sable",
"statut": "termine",
"billed": false,
"source": "listing_text",
"mode": "test",
"cost_credits": 0.0,
"resolution": {
"request_id": "9336e3757bb54af38e9586bd707875da",
"status": "resolved",
"candidates": [
{
"label": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"ban_id": "99999_0001_00012",
"lat": 47.501,
"lon": 2.501,
"parcelle": null,
"confidence": 1.0,
"method": "adresse_saisie",
"matched_criteria": [
"adresse choisie dans la Base Adresse Nationale"
],
"diverged_criteria": [],
"comparaisons": [],
"position_approchee": false,
"dpe_trouve": null
}
],
"confidence_label": "eleve",
"resolved_by_level": null,
"levels_attempted": [],
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "not_used",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"search_area": null,
"duration_ms": 0,
"interrompue": false
},
"deal_scores": [
{
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"par_rayon": {
"300": {
"statut": "calcule",
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"score": 6.0,
"libelle": "dans le marché",
"explication": "Prix affiché comparé à 10 vente(s) enregistrée(s) dans un rayon de 300 m depuis moins de 3 ans, de surface voisine : l'écart à l'estimation médiane est de +5.0%.",
"avertissement": null,
"ecart_relatif": 0.05,
"prix_m2_annonce": 2100.0,
"prix_m2_median": 2000.0,
"estimation_basse_eur": 200000.0,
"estimation_mediane_eur": 200000.0,
"estimation_haute_eur": 200000.0,
"nb_comparables": 10,
"ventes_examinees": 10,
"rayon_m": 300.0,
"etapes": [
{
"etape": "un seul logement par vente",
"restants": 10
},
{
"etape": "nature « Vente »",
"restants": 10
},
{
"etape": "type de bien",
"restants": 10
},
{
"etape": "surface comparable",
"restants": 10
},
{
"etape": "vente récente",
"restants": 10
},
{
"etape": "prix au m² plausible",
"restants": 10
},
{
"etape": "à moins de 300 m",
"restants": 10
}
],
"mutations_comparables": [
"2024-900000",
"2024-900001",
"2024-900002",
"2024-900003",
"2024-900004",
"2024-900005",
"2024-900006",
"2024-900007",
"2024-900008",
"2024-900009"
],
"methodology_version": "1.1",
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"duration_ms": 0
},
"500": {
"statut": "calcule",
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"score": 6.0,
"libelle": "dans le marché",
"explication": "Prix affiché comparé à 10 vente(s) enregistrée(s) dans un rayon de 500 m depuis moins de 3 ans, de surface voisine : l'écart à l'estimation médiane est de +5.0%.",
"avertissement": null,
"ecart_relatif": 0.05,
"prix_m2_annonce": 2100.0,
"prix_m2_median": 2000.0,
"estimation_basse_eur": 200000.0,
"estimation_mediane_eur": 200000.0,
"estimation_haute_eur": 200000.0,
"nb_comparables": 10,
"ventes_examinees": 10,
"rayon_m": 500.0,
"etapes": [
{
"etape": "un seul logement par vente",
"restants": 10
},
{
"etape": "nature « Vente »",
"restants": 10
},
{
"etape": "type de bien",
"restants": 10
},
{
"etape": "surface comparable",
"restants": 10
},
{
"etape": "vente récente",
"restants": 10
},
{
"etape": "prix au m² plausible",
"restants": 10
},
{
"etape": "à moins de 500 m",
"restants": 10
}
],
"mutations_comparables": [
"2024-900000",
"2024-900001",
"2024-900002",
"2024-900003",
"2024-900004",
"2024-900005",
"2024-900006",
"2024-900007",
"2024-900008",
"2024-900009"
],
"methodology_version": "1.1",
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"duration_ms": 0
},
"800": {
"statut": "calcule",
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"score": 6.0,
"libelle": "dans le marché",
"explication": "Prix affiché comparé à 10 vente(s) enregistrée(s) dans un rayon de 800 m depuis moins de 3 ans, de surface voisine : l'écart à l'estimation médiane est de +5.0%.",
"avertissement": null,
"ecart_relatif": 0.05,
"prix_m2_annonce": 2100.0,
"prix_m2_median": 2000.0,
"estimation_basse_eur": 200000.0,
"estimation_mediane_eur": 200000.0,
"estimation_haute_eur": 200000.0,
"nb_comparables": 10,
"ventes_examinees": 10,
"rayon_m": 800.0,
"etapes": [
{
"etape": "un seul logement par vente",
"restants": 10
},
{
"etape": "nature « Vente »",
"restants": 10
},
{
"etape": "type de bien",
"restants": 10
},
{
"etape": "surface comparable",
"restants": 10
},
{
"etape": "vente récente",
"restants": 10
},
{
"etape": "prix au m² plausible",
"restants": 10
},
{
"etape": "à moins de 800 m",
"restants": 10
}
],
"mutations_comparables": [
"2024-900000",
"2024-900001",
"2024-900002",
"2024-900003",
"2024-900004",
"2024-900005",
"2024-900006",
"2024-900007",
"2024-900008",
"2024-900009"
],
"methodology_version": "1.1",
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"duration_ms": 0
},
"1000": {
"statut": "calcule",
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"score": 6.0,
"libelle": "dans le marché",
"explication": "Prix affiché comparé à 10 vente(s) enregistrée(s) dans un rayon de 1000 m depuis moins de 3 ans, de surface voisine : l'écart à l'estimation médiane est de +5.0%.",
"avertissement": null,
"ecart_relatif": 0.05,
"prix_m2_annonce": 2100.0,
"prix_m2_median": 2000.0,
"estimation_basse_eur": 200000.0,
"estimation_mediane_eur": 200000.0,
"estimation_haute_eur": 200000.0,
"nb_comparables": 10,
"ventes_examinees": 10,
"rayon_m": 1000.0,
"etapes": [
{
"etape": "un seul logement par vente",
"restants": 10
},
{
"etape": "nature « Vente »",
"restants": 10
},
{
"etape": "type de bien",
"restants": 10
},
{
"etape": "surface comparable",
"restants": 10
},
{
"etape": "vente récente",
"restants": 10
},
{
"etape": "prix au m² plausible",
"restants": 10
},
{
"etape": "à moins de 1000 m",
"restants": 10
}
],
"mutations_comparables": [
"2024-900000",
"2024-900001",
"2024-900002",
"2024-900003",
"2024-900004",
"2024-900005",
"2024-900006",
"2024-900007",
"2024-900008",
"2024-900009"
],
"methodology_version": "1.1",
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"duration_ms": 0
}
}
}
],
"comparables": [
{
"date": "2026-06-08",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "10 RUE DE L'EXEMPLE",
"distance_m": 0.0
},
{
"date": "2026-06-07",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "11 RUE DE L'EXEMPLE",
"distance_m": 27.0
},
{
"date": "2026-06-06",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "12 RUE DE L'EXEMPLE",
"distance_m": 54.0
},
{
"date": "2026-06-05",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "13 RUE DE L'EXEMPLE",
"distance_m": 81.0
},
{
"date": "2026-06-04",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "14 RUE DE L'EXEMPLE",
"distance_m": 107.0
},
{
"date": "2026-06-03",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "15 RUE DE L'EXEMPLE",
"distance_m": 134.0
},
{
"date": "2026-06-02",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "16 RUE DE L'EXEMPLE",
"distance_m": 161.0
},
{
"date": "2026-06-01",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "17 RUE DE L'EXEMPLE",
"distance_m": 188.0
},
{
"date": "2026-05-31",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "18 RUE DE L'EXEMPLE",
"distance_m": 215.0
},
{
"date": "2026-05-30",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "19 RUE DE L'EXEMPLE",
"distance_m": 242.0
}
],
"enrichment": {
"adresse": {
"label": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"ban_id": "99999_0001_00012",
"lat": 47.501,
"lon": 2.501,
"parcelle": null,
"confidence": 1.0,
"method": "adresse_saisie",
"matched_criteria": [
"adresse choisie dans la Base Adresse Nationale"
],
"diverged_criteria": [],
"comparaisons": [],
"position_approchee": false,
"dpe_trouve": null
},
"risques": {
"inondation": {
"concerne": true,
"libelles": [],
"atlas": [
"Lot"
]
},
"seisme": {
"zone": 1,
"libelle": "1 - TRES FAIBLE"
},
"argiles": {
"niveau": 2,
"libelle": "Exposition moyenne"
},
"radon": {
"potentiel": 1,
"libelle": "Potentiel faible"
},
"risques_recenses": [
{
"code": "12",
"libelle": "Mouvement de terrain"
},
{
"code": "121",
"libelle": "Affaissements et effondrements d'origine anthropique (anciennes carrières souterraines, hors mines)"
},
{
"code": "123",
"libelle": "Eboulement ou chutes de pierres et de blocs"
},
{
"code": "124",
"libelle": "Glissement de terrain"
},
{
"code": "127",
"libelle": "Tassements différentiels"
},
{
"code": "16",
"libelle": "Feu de forêt"
},
{
"code": "23",
"libelle": "Rupture de barrage"
},
{
"code": "24",
"libelle": "Transport de marchandises dangereuses"
}
],
"sites": [],
"statuts": {
"risques_recenses": "ok",
"inondation": "ok",
"seisme": "ok",
"radon": "ok",
"argiles": "ok",
"sites": "ok"
}
},
"urbanisme": {
"zonage": {
"code": "Ub",
"libelle": "Zone urbaine : quartiers à densifier ou à restructurer",
"type_zone": "U",
"document": "PLUI",
"date_validation": "2025-12-18"
},
"servitudes": [
{
"code": "AC1",
"libelle": "COLLEGE GAMBETTA",
"nature": "Périmètre des abords"
},
{
"code": "T1",
"libelle": "SUP T1 du Lot",
"nature": "Zone de protection"
},
{
"code": "PM1",
"libelle": "PM1",
"nature": "Enveloppe des zonages r?glementaires"
}
],
"statuts": {
"zonage": "ok",
"servitudes": "ok"
}
},
"projets": [],
"terrain": null,
"solaire": null,
"copropriete": null,
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "not_used",
"cadastre": "ok",
"georisques": "ok",
"gpu": "ok",
"sitadel": "ok",
"bpe": "ok",
"education": "ok",
"arcep": "ok",
"atmo": "ok",
"transit": "not_used"
}
},
"neighborhood": {
"amenities": [
{
"categorie": "sante",
"type": "Masseur kinésithérapeute",
"nom": null,
"distance_m": 348036.1,
"code": "D233",
"lat": 44.457760539675,
"lon": 1.447585132636019
},
{
"categorie": "sante",
"type": "Infirmier",
"nom": null,
"distance_m": 348139.4,
"code": "D232",
"lat": 44.45634199299316,
"lon": 1.450374463658037
},
{
"categorie": "sante",
"type": "Pédicure-podologue",
"nom": null,
"distance_m": 348153.2,
"code": "D237",
"lat": 44.457007419263995,
"lon": 1.445613798237905
},
{
"categorie": "sante",
"type": "Structure psychiatrique en ambulatoire",
"nom": null,
"distance_m": 348242.9,
"code": "D109",
"lat": 44.45625098392544,
"lon": 1.445183798617627
},
{
"categorie": "sante",
"type": "Psychologue",
"nom": null,
"distance_m": 348364.5,
"code": "D243",
"lat": 44.45495993149608,
"lon": 1.446192134879147
},
{
"categorie": "education",
"type": "École maternelle",
"nom": null,
"distance_m": 348375.2,
"code": "C101",
"lat": 44.45475270686691,
"lon": 1.446840309934811
},
{
"categorie": "alimentation",
"type": "Boulangerie",
"nom": null,
"distance_m": 348500.5,
"code": "B203",
"lat": 44.45364137495746,
"lon": 1.446565373837412
},
{
"categorie": "education",
"type": "École primaire",
"nom": null,
"distance_m": 348594.2,
"code": "C104",
"lat": 44.45279354677859,
"lon": 1.446460447750797
},
{
"categorie": "education",
"type": "Ufr",
"nom": null,
"distance_m": 348626.2,
"code": "C501",
"lat": 44.45251315825198,
"lon": 1.446370103813196
},
{
"categorie": "education",
"type": "Institut universitaire",
"nom": null,
"distance_m": 348661.9,
"code": "C502",
"lat": 44.452196892756014,
"lon": 1.446289545446312
},
{
"categorie": "alimentation",
"type": "Épicerie",
"nom": null,
"distance_m": 348698.9,
"code": "B202",
"lat": 44.45293670780534,
"lon": 1.439818211021289
},
{
"categorie": "education",
"type": "Collège",
"nom": null,
"distance_m": 348936.2,
"code": "C201",
"lat": 44.4504552854695,
"lon": 1.441549627874779
}
],
"schools": [
{
"nom": "Lycée polyvalent Gaston Monnerville",
"type": "Lycée",
"distance_m": 347275.4,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.46354320618618,
"lon": 1.4550500739231473,
"uai": null,
"nature": "lycee",
"indicateurs": null
},
{
"nom": "Section d'enseignement général et professionnel adapté du Collège Olivier de Magny",
"type": "Collège",
"distance_m": 347275.4,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.46354320618618,
"lon": 1.4550500739231473,
"uai": null,
"nature": "college",
"indicateurs": null
},
{
"nom": "Ecole élémentaire Lucien Bénac Terre Rouge",
"type": "Ecole",
"distance_m": 347482.8,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.46168794004309,
"lon": 1.4546934307658848,
"uai": null,
"nature": "primaire",
"indicateurs": null
},
{
"nom": "Ecole maternelle publique Lucien Bénac Terre Rouge",
"type": "Ecole",
"distance_m": 347581.3,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.460885623948506,
"lon": 1.4540452753864679,
"uai": null,
"nature": "primaire",
"indicateurs": null
},
{
"nom": "Ecole primaire publique P. Ségala",
"type": "Ecole",
"distance_m": 347997.4,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.460156607721466,
"lon": 1.4354300805942848,
"uai": null,
"nature": "primaire",
"indicateurs": null
}
],
"transit_stops": [],
"transit_source": null,
"connectivity": {
"fibre_disponible": null,
"part_locaux_fibre": null,
"technologies_filaires": [],
"couverture_mobile": [],
"statuts": {
"fixe": "ok",
"mobile": "ok"
}
},
"antennes": [],
"evenements": [],
"air_quality": {
"indice": 3,
"libelle": "Dégradé",
"date_indice": "2026-08-07",
"polluants": [
{
"code": "o3",
"libelle": "Ozone",
"indice": 3
},
{
"code": "no2",
"libelle": "Dioxyde d'azote",
"indice": 1
},
{
"code": "pm10",
"libelle": "Particules PM10",
"indice": 1
},
{
"code": "pm25",
"libelle": "Particules fines PM2,5",
"indice": 1
},
{
"code": "so2",
"libelle": "Dioxyde de soufre",
"indice": 1
}
],
"source": "Atmo HDF",
"zone": "LILLE"
},
"delinquance": null,
"statuts": {
"equipements": "ok",
"ecoles": "ok",
"resultats_ecoles": "ok",
"transports": "not_used",
"connectivite": "ok",
"qualite_air": "ok",
"delinquance": "not_used",
"antennes": "ok",
"evenements": "down"
},
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "not_used",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "ok",
"education": "ok",
"arcep": "ok",
"atmo": "ok",
"transit": "not_used"
},
"duration_ms": 40
},
"diffuseurs": {
"nombre": 0,
"portails": []
},
"sections": [
{
"nom": "resolution",
"statut": "ok",
"detail": null
},
{
"nom": "enrichissement",
"statut": "ok",
"detail": null
},
{
"nom": "quartier",
"statut": "ok",
"detail": null
},
{
"nom": "deal_score",
"statut": "ok",
"detail": null
}
],
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "ok",
"georisques": "ok",
"gpu": "ok",
"sitadel": "ok",
"bpe": "ok",
"education": "ok",
"arcep": "ok",
"atmo": "ok",
"transit": "not_used"
},
"duration_ms": 81
}
/v1/analyses?wait=20
Analyser une adresse, sans annonce
0,6 crédits
Sans prix, le Deal Score ne note pas : il rend une fourchette (estimation basse, médiane, haute) à partir des ventes voisines, avec le statut annonce_incomplete. Avec prix_eur, il note.
curl -s -X POST 'https://logiscan.fr/v1/analyses?wait=20' \
-H 'Authorization: Bearer lsk_test_VOTRE_CLE' \
-H 'Content-Type: application/json' \
-d '{"source": {"address": "12 rue de l'\''Exemple 99999 Villeneuve-sur-Fixture", "facts": {"type_bien": "appartement", "surface_m2": 65}}, "radii": [500, 1000]}'
import httpx
CLE = "lsk_test_VOTRE_CLE"
reponse = httpx.post(
"https://logiscan.fr/v1/analyses?wait=20",
json={"source": {"address": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture", "facts": {"type_bien": "appartement", "surface_m2": 65}}, "radii": [500, 1000]},
headers={"Authorization": f"Bearer {CLE}"},
timeout=30,
)
print(reponse.status_code, reponse.json())
const CLE = "lsk_test_VOTRE_CLE";
const reponse = await fetch("https://logiscan.fr/v1/analyses?wait=20", {
method: "POST",
headers: { Authorization: `Bearer ${CLE}`, "Content-Type": "application/json" },
body: JSON.stringify({"source": {"address": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture", "facts": {"type_bien": "appartement", "surface_m2": 65}}, "radii": [500, 1000]}),
});
console.log(reponse.status, await reponse.json());
Réponse du bac à sable — ce qu'une clé lsk_test_ reçoit, données fictives
{
"id": "bac-a-sable",
"statut": "termine",
"billed": false,
"source": "address",
"mode": "test",
"cost_credits": 0.0,
"resolution": {
"request_id": "9336e3757bb54af38e9586bd707875da",
"status": "resolved",
"candidates": [
{
"label": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"ban_id": "99999_0001_00012",
"lat": 47.501,
"lon": 2.501,
"parcelle": null,
"confidence": 1.0,
"method": "adresse_saisie",
"matched_criteria": [
"adresse choisie dans la Base Adresse Nationale"
],
"diverged_criteria": [],
"comparaisons": [],
"position_approchee": false,
"dpe_trouve": null
}
],
"confidence_label": "eleve",
"resolved_by_level": null,
"levels_attempted": [],
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "not_used",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"search_area": null,
"duration_ms": 0,
"interrompue": false
},
"deal_scores": [
{
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"par_rayon": {
"500": {
"statut": "calcule",
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"score": 6.0,
"libelle": "dans le marché",
"explication": "Prix affiché comparé à 10 vente(s) enregistrée(s) dans un rayon de 500 m depuis moins de 3 ans, de surface voisine : l'écart à l'estimation médiane est de +5.0%.",
"avertissement": null,
"ecart_relatif": 0.05,
"prix_m2_annonce": 2100.0,
"prix_m2_median": 2000.0,
"estimation_basse_eur": 200000.0,
"estimation_mediane_eur": 200000.0,
"estimation_haute_eur": 200000.0,
"nb_comparables": 10,
"ventes_examinees": 10,
"rayon_m": 500.0,
"etapes": [
{
"etape": "un seul logement par vente",
"restants": 10
},
{
"etape": "nature « Vente »",
"restants": 10
},
{
"etape": "type de bien",
"restants": 10
},
{
"etape": "surface comparable",
"restants": 10
},
{
"etape": "vente récente",
"restants": 10
},
{
"etape": "prix au m² plausible",
"restants": 10
},
{
"etape": "à moins de 500 m",
"restants": 10
}
],
"mutations_comparables": [
"2024-900000",
"2024-900001",
"2024-900002",
"2024-900003",
"2024-900004",
"2024-900005",
"2024-900006",
"2024-900007",
"2024-900008",
"2024-900009"
],
"methodology_version": "1.1",
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"duration_ms": 0
},
"1000": {
"statut": "calcule",
"adresse": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"score": 6.0,
"libelle": "dans le marché",
"explication": "Prix affiché comparé à 10 vente(s) enregistrée(s) dans un rayon de 1000 m depuis moins de 3 ans, de surface voisine : l'écart à l'estimation médiane est de +5.0%.",
"avertissement": null,
"ecart_relatif": 0.05,
"prix_m2_annonce": 2100.0,
"prix_m2_median": 2000.0,
"estimation_basse_eur": 200000.0,
"estimation_mediane_eur": 200000.0,
"estimation_haute_eur": 200000.0,
"nb_comparables": 10,
"ventes_examinees": 10,
"rayon_m": 1000.0,
"etapes": [
{
"etape": "un seul logement par vente",
"restants": 10
},
{
"etape": "nature « Vente »",
"restants": 10
},
{
"etape": "type de bien",
"restants": 10
},
{
"etape": "surface comparable",
"restants": 10
},
{
"etape": "vente récente",
"restants": 10
},
{
"etape": "prix au m² plausible",
"restants": 10
},
{
"etape": "à moins de 1000 m",
"restants": 10
}
],
"mutations_comparables": [
"2024-900000",
"2024-900001",
"2024-900002",
"2024-900003",
"2024-900004",
"2024-900005",
"2024-900006",
"2024-900007",
"2024-900008",
"2024-900009"
],
"methodology_version": "1.1",
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "not_used",
"education": "not_used",
"arcep": "not_used",
"atmo": "not_used",
"transit": "not_used"
},
"duration_ms": 0
}
}
}
],
"comparables": [
{
"date": "2026-06-08",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "10 RUE DE L'EXEMPLE",
"distance_m": 0.0
},
{
"date": "2026-06-07",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "11 RUE DE L'EXEMPLE",
"distance_m": 27.0
},
{
"date": "2026-06-06",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "12 RUE DE L'EXEMPLE",
"distance_m": 54.0
},
{
"date": "2026-06-05",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "13 RUE DE L'EXEMPLE",
"distance_m": 81.0
},
{
"date": "2026-06-04",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "14 RUE DE L'EXEMPLE",
"distance_m": 107.0
},
{
"date": "2026-06-03",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "15 RUE DE L'EXEMPLE",
"distance_m": 134.0
},
{
"date": "2026-06-02",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "16 RUE DE L'EXEMPLE",
"distance_m": 161.0
},
{
"date": "2026-06-01",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "17 RUE DE L'EXEMPLE",
"distance_m": 188.0
},
{
"date": "2026-05-31",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "18 RUE DE L'EXEMPLE",
"distance_m": 215.0
},
{
"date": "2026-05-30",
"prix_eur": 200000.0,
"surface_m2": 100.0,
"type_local": "Appartement",
"voie": "19 RUE DE L'EXEMPLE",
"distance_m": 242.0
}
],
"enrichment": {
"adresse": {
"label": "12 rue de l'Exemple 99999 Villeneuve-sur-Fixture (BAN)",
"ban_id": "99999_0001_00012",
"lat": 47.501,
"lon": 2.501,
"parcelle": null,
"confidence": 1.0,
"method": "adresse_saisie",
"matched_criteria": [
"adresse choisie dans la Base Adresse Nationale"
],
"diverged_criteria": [],
"comparaisons": [],
"position_approchee": false,
"dpe_trouve": null
},
"risques": {
"inondation": {
"concerne": true,
"libelles": [],
"atlas": [
"Lot"
]
},
"seisme": {
"zone": 1,
"libelle": "1 - TRES FAIBLE"
},
"argiles": {
"niveau": 2,
"libelle": "Exposition moyenne"
},
"radon": {
"potentiel": 1,
"libelle": "Potentiel faible"
},
"risques_recenses": [
{
"code": "12",
"libelle": "Mouvement de terrain"
},
{
"code": "121",
"libelle": "Affaissements et effondrements d'origine anthropique (anciennes carrières souterraines, hors mines)"
},
{
"code": "123",
"libelle": "Eboulement ou chutes de pierres et de blocs"
},
{
"code": "124",
"libelle": "Glissement de terrain"
},
{
"code": "127",
"libelle": "Tassements différentiels"
},
{
"code": "16",
"libelle": "Feu de forêt"
},
{
"code": "23",
"libelle": "Rupture de barrage"
},
{
"code": "24",
"libelle": "Transport de marchandises dangereuses"
}
],
"sites": [],
"statuts": {
"risques_recenses": "ok",
"inondation": "ok",
"seisme": "ok",
"radon": "ok",
"argiles": "ok",
"sites": "ok"
}
},
"urbanisme": {
"zonage": {
"code": "Ub",
"libelle": "Zone urbaine : quartiers à densifier ou à restructurer",
"type_zone": "U",
"document": "PLUI",
"date_validation": "2025-12-18"
},
"servitudes": [
{
"code": "AC1",
"libelle": "COLLEGE GAMBETTA",
"nature": "Périmètre des abords"
},
{
"code": "T1",
"libelle": "SUP T1 du Lot",
"nature": "Zone de protection"
},
{
"code": "PM1",
"libelle": "PM1",
"nature": "Enveloppe des zonages r?glementaires"
}
],
"statuts": {
"zonage": "ok",
"servitudes": "ok"
}
},
"projets": [],
"terrain": null,
"solaire": null,
"copropriete": null,
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "not_used",
"cadastre": "ok",
"georisques": "ok",
"gpu": "ok",
"sitadel": "ok",
"bpe": "ok",
"education": "ok",
"arcep": "ok",
"atmo": "ok",
"transit": "not_used"
}
},
"neighborhood": {
"amenities": [
{
"categorie": "sante",
"type": "Masseur kinésithérapeute",
"nom": null,
"distance_m": 348036.1,
"code": "D233",
"lat": 44.457760539675,
"lon": 1.447585132636019
},
{
"categorie": "sante",
"type": "Infirmier",
"nom": null,
"distance_m": 348139.4,
"code": "D232",
"lat": 44.45634199299316,
"lon": 1.450374463658037
},
{
"categorie": "sante",
"type": "Pédicure-podologue",
"nom": null,
"distance_m": 348153.2,
"code": "D237",
"lat": 44.457007419263995,
"lon": 1.445613798237905
},
{
"categorie": "sante",
"type": "Structure psychiatrique en ambulatoire",
"nom": null,
"distance_m": 348242.9,
"code": "D109",
"lat": 44.45625098392544,
"lon": 1.445183798617627
},
{
"categorie": "sante",
"type": "Psychologue",
"nom": null,
"distance_m": 348364.5,
"code": "D243",
"lat": 44.45495993149608,
"lon": 1.446192134879147
},
{
"categorie": "education",
"type": "École maternelle",
"nom": null,
"distance_m": 348375.2,
"code": "C101",
"lat": 44.45475270686691,
"lon": 1.446840309934811
},
{
"categorie": "alimentation",
"type": "Boulangerie",
"nom": null,
"distance_m": 348500.5,
"code": "B203",
"lat": 44.45364137495746,
"lon": 1.446565373837412
},
{
"categorie": "education",
"type": "École primaire",
"nom": null,
"distance_m": 348594.2,
"code": "C104",
"lat": 44.45279354677859,
"lon": 1.446460447750797
},
{
"categorie": "education",
"type": "Ufr",
"nom": null,
"distance_m": 348626.2,
"code": "C501",
"lat": 44.45251315825198,
"lon": 1.446370103813196
},
{
"categorie": "education",
"type": "Institut universitaire",
"nom": null,
"distance_m": 348661.9,
"code": "C502",
"lat": 44.452196892756014,
"lon": 1.446289545446312
},
{
"categorie": "alimentation",
"type": "Épicerie",
"nom": null,
"distance_m": 348698.9,
"code": "B202",
"lat": 44.45293670780534,
"lon": 1.439818211021289
},
{
"categorie": "education",
"type": "Collège",
"nom": null,
"distance_m": 348936.2,
"code": "C201",
"lat": 44.4504552854695,
"lon": 1.441549627874779
}
],
"schools": [
{
"nom": "Lycée polyvalent Gaston Monnerville",
"type": "Lycée",
"distance_m": 347275.4,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.46354320618618,
"lon": 1.4550500739231473,
"uai": null,
"nature": "lycee",
"indicateurs": null
},
{
"nom": "Section d'enseignement général et professionnel adapté du Collège Olivier de Magny",
"type": "Collège",
"distance_m": 347275.4,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.46354320618618,
"lon": 1.4550500739231473,
"uai": null,
"nature": "college",
"indicateurs": null
},
{
"nom": "Ecole élémentaire Lucien Bénac Terre Rouge",
"type": "Ecole",
"distance_m": 347482.8,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.46168794004309,
"lon": 1.4546934307658848,
"uai": null,
"nature": "primaire",
"indicateurs": null
},
{
"nom": "Ecole maternelle publique Lucien Bénac Terre Rouge",
"type": "Ecole",
"distance_m": 347581.3,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.460885623948506,
"lon": 1.4540452753864679,
"uai": null,
"nature": "primaire",
"indicateurs": null
},
{
"nom": "Ecole primaire publique P. Ségala",
"type": "Ecole",
"distance_m": 347997.4,
"secteur": "Public",
"education_prioritaire": null,
"commune": "Cahors",
"lat": 44.460156607721466,
"lon": 1.4354300805942848,
"uai": null,
"nature": "primaire",
"indicateurs": null
}
],
"transit_stops": [],
"transit_source": null,
"connectivity": {
"fibre_disponible": null,
"part_locaux_fibre": null,
"technologies_filaires": [],
"couverture_mobile": [],
"statuts": {
"fixe": "ok",
"mobile": "ok"
}
},
"antennes": [],
"evenements": [],
"air_quality": {
"indice": 3,
"libelle": "Dégradé",
"date_indice": "2026-08-07",
"polluants": [
{
"code": "o3",
"libelle": "Ozone",
"indice": 3
},
{
"code": "no2",
"libelle": "Dioxyde d'azote",
"indice": 1
},
{
"code": "pm10",
"libelle": "Particules PM10",
"indice": 1
},
{
"code": "pm25",
"libelle": "Particules fines PM2,5",
"indice": 1
},
{
"code": "so2",
"libelle": "Dioxyde de soufre",
"indice": 1
}
],
"source": "Atmo HDF",
"zone": "LILLE"
},
"delinquance": null,
"statuts": {
"equipements": "ok",
"ecoles": "ok",
"resultats_ecoles": "ok",
"transports": "not_used",
"connectivite": "ok",
"qualite_air": "ok",
"delinquance": "not_used",
"antennes": "ok",
"evenements": "down"
},
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "not_used",
"cadastre": "not_used",
"georisques": "not_used",
"gpu": "not_used",
"sitadel": "not_used",
"bpe": "ok",
"education": "ok",
"arcep": "ok",
"atmo": "ok",
"transit": "not_used"
},
"duration_ms": 40
},
"diffuseurs": {
"nombre": 0,
"portails": []
},
"sections": [
{
"nom": "resolution",
"statut": "ok",
"detail": null
},
{
"nom": "enrichissement",
"statut": "ok",
"detail": null
},
{
"nom": "quartier",
"statut": "ok",
"detail": null
},
{
"nom": "deal_score",
"statut": "ok",
"detail": null
}
],
"sources_status": {
"ademe": "not_used",
"ademe_local": "not_used",
"ban": "not_used",
"ign": "not_used",
"dvf": "ok",
"cadastre": "ok",
"georisques": "ok",
"gpu": "ok",
"sitadel": "ok",
"bpe": "ok",
"education": "ok",
"arcep": "ok",
"atmo": "ok",
"transit": "not_used"
},
"duration_ms": 81
}
Attendre ou relire : 200, 202 et GET /v1/analyses/{id}
Une analyse prend de quelques secondes à une vingtaine. Avec ?wait=20, la réponse arrive en ligne (200) dès qu'elle est prête. Sans attente, ou si le délai est dépassé, vous recevez 202 avec id, status: en_cours et status_url : relisez GET /v1/analyses/{id} (lui aussi accepte ?wait=). Un résultat reste lisible une heure ; ensuite 404 not_found. Un travail qui a échoué rend statut: echec, son code et sa raison — et le crédit a été rendu.
Lire la réponse
La réponse (ReponseAnalyse) est la même pour les trois sources. Les objets sont décrits champ par champ dans la référence ; voici comment les lire.
| Bloc | Ce qu'il dit | Comment le lire |
|---|---|---|
resolution | Les adresses candidates, triées par confiance décroissante, cinq au plus. | status dit si le moteur a tranché (resolved), hésite entre plusieurs (ambiguous) ou n'a rien (unresolved) — jamais s'il a raison. confidence_label (eleve ≥ 0,80, moyen ≥ 0,50, faible) vient du premier candidat. Chaque candidat porte sa method, ses critères qui concordent et divergent, et comparaisons : les deux valeurs face à face. |
deal_scores | Une entrée par candidat, dans le même ordre ; pour chacun, une note par rayon demandé. | statut: calcule → une note de 0 à 10 et un écart à la médiane ; donnees_insuffisantes → moins de huit ventes comparables, pas de note, et l'explication le dit ; annonce_incomplete → pas de prix : une fourchette (estimation_basse_eur, _mediane_eur, _haute_eur) ; source_indisponible → DVF muet, crédit rendu. |
comparables | Les ventes retenues pour le premier candidat. | Date, prix, surface, type, voie, distance. Ni parcelle, ni personne : DVF publie la vente, pas le vendeur. |
enrichment | L'environnement de l'adresse retenue. | Risques (inondation, séisme, argiles, radon), zonage d'urbanisme, chantiers autorisés à proximité, terrain, toiture. Chaque famille porte son statuts : un champ vide se lit « la source n'a rien dit », jamais « il n'y a rien ». |
neighborhood | La vie du quartier. | Équipements, écoles (avec leurs résultats publiés — la valeur ajoutée prime sur le taux brut), arrêts de transport, connectivité, qualité de l'air. Même règle : une liste vide n'est pas un désert. |
diffuseurs | Combien de portails publient cette annonce, et lesquels. | Le nombre et les noms. Plusieurs agences pour un même bien → mandat non exclusif, probablement. |
sections et sources_status | Ce qui a marché et ce qui a manqué. | Une section absente ou partielle dit pourquoi, en français ; sources_status donne l'état de chaque source publique (ok, degraded, down, not_used). |
billed, cost_credits, mode | La facturation de cet appel. | billed: false avec statut: termine = un rejeu par Idempotency-Key ou le bac à sable. |
Jamais une adresse présentée comme sûre. Le moteur rend des candidats et dit combien il leur fait confiance ; c'est à votre programme, ou à votre utilisateur, de trancher — la carte du site fait exactement cela.
Idempotence et cache
Envoyez un en-tête Idempotency-Key (jusqu'à 200 caractères, à vous de le choisir) : rejouer le même appel pendant vingt-quatre heures rend la réponse du premier, avec billed: false. Un appel qui travaille encore sous la même clé répond 409 idempotency_in_progress. C'est ce qui rend un client sûr face à un réseau qui coupe : réessayez sans crainte de payer deux fois.
Indépendamment, un même lien demandé deux fois dans l'heure est servi de notre mémoire — vite, au tarif plein, avec un nouvel identifiant. Le cache protège nos coûts (l'agrégateur facture chaque résolution), ce n'est pas une remise : un cache gratuit apprendrait aux clients à sonder ce que d'autres ont demandé.
Concurrence
Une analyse à la fois par clé. Un second POST pendant qu'un premier travaille répond 429 too_many_inflight, avant même que le solde soit touché. Attendez le résultat, ou relisez-le par son identifiant. Le plafond d'appels par minute s'ajoute (voir Erreurs et plafonds).
Les liens d'annonce reconnus
Un lien d'annonce est d'abord résolu par un agrégateur (Stream Estate), qui a déjà collecté l'annonce et la rend avec ses diffuseurs : c'est ce qui permet de lire des portails qui refusent toute lecture serveur. Les portails ci-dessous sont ceux qu'il reconnaît. Un lien hors de cet index est lu directement par LogiScan si le site l'accepte (agences qui publient leurs données structurées) ; s'il refuse, l'appel rend une réponse sans candidat, facturée, et la seule voie qui reste est le texte de l'annonce.
- leboncoin
- SeLoger
- Logic-Immo
- PAP
- Bien'ici
- ParuVendu
- Belles Demeures
- Lux-Résidence
- Immobilier des notaires
Liste relevée le 16 septembre 2026 sur l'index de l'agrégateur.