/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, avec 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 : la source la plus complète. L'agrégateur rend l'annonce dédoublonnée avec le nombre de ses diffuseurs et leurs portails (sans leurs adresses ni leurs photos). Les portails reconnus sont listés en bas de page. Un lien hors de cette liste 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 d'annonce collé tel quel. Il est lu par le même lecteur que le site, puis supprimé.
- 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. - Une location : l'adresse se résout comme pour une vente, mais le loyer n'est pas un prix.
property.transactionvautlocation, le montant est dansloyer_mensuel_eur,prix_eurreste vide, etdeal_score.statutvautannonce_incompleteavec l'explication : un loyer ne se compare pas aux ventes voisines.
/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 sans candidat ou sans assez de ventes est facturée. Une source en panne ne l'est pas (billed: false, crédit rendu).
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,
"maps_url": "https://www.google.com/maps/search/?api=1&query=47.501,2.501"
}
],
"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,
"maps_url": "https://www.google.com/maps/search/?api=1&query=47.501,2.501"
},
"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 supprimé : il n'est ni journalisé ni conservé.
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,
"maps_url": "https://www.google.com/maps/search/?api=1&query=47.501,2.501"
}
],
"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,
"maps_url": "https://www.google.com/maps/search/?api=1&query=47.501,2.501"
},
"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,
"maps_url": "https://www.google.com/maps/search/?api=1&query=47.501,2.501"
}
],
"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,
"maps_url": "https://www.google.com/maps/search/?api=1&query=47.501,2.501"
},
"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, puis répond 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). 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, comparaisons : les deux valeurs face à face, et maps_url : le lien Google Maps qui pose un repère sur l'adresse (nul quand le point n'est pas situé). |
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. Sans parcelle ni identité : ce sont les données que DVF publie. |
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 signifie que la source n'a rien rendu. |
neighborhood | La vie du quartier. | Équipements, écoles (avec leurs résultats publiés, où la valeur ajoutée prime sur le taux brut), arrêts de transport, connectivité, qualité de l'air. Même règle pour une liste vide. |
diffuseurs | Combien de portails publient cette annonce, et lesquels. | Le nombre et les noms. Plusieurs agences pour un même bien indiquent en général un mandat non exclusif. |
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. |
L'API ne tranche pas entre les adresses : elle rend des candidats avec leur score, et c'est à votre programme ou à votre utilisateur de choisir.
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. En cas de coupure réseau, réessayez avec la même clé : vous ne paierez pas deux fois.
Indépendamment, un même lien demandé deux fois dans l'heure est servi depuis le cache, au tarif plein, avec un nouvel identifiant.
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 il reste 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.