LogiScan

Analyser une annonce : POST /v1/analyses

Une même requête accepte trois sources, et la réponse a la même forme dans les trois cas : une résolution, des notes par rayon, des ventes, un environnement.

POST /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.

ChampTypeRôle
source.listing_urlchaî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_textchaîneLe 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.addresschaîneUne adresse postale, géocodée par la Base Adresse Nationale, avec ban_id et facts (type, surface, prix…) facultatifs. 0,6 crédit.
radiiliste d'entiersLes rayons de comparaison en mètres, parmi 300, 500, 800, 1000, 1500 et 3000. Par défaut : 300, 500, 800 et 1000.
?wait=Nparamètre de requête, 0 à 60Attendre 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_eur dans facts, 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.transaction vaut location, le montant est dans loyer_mensuel_eur, prix_eur reste vide, et deal_score.statut vaut annonce_incomplete avec l'explication : un loyer ne se compare pas aux ventes voisines.
POST /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
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]}'
Python · httpx
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())
JavaScript · fetch
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
JSON · 200
{
  "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
}
POST /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
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 €."}}'
Python · httpx
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())
JavaScript · fetch
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
JSON · 200
{
  "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
}
POST /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
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]}'
Python · httpx
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())
JavaScript · fetch
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
JSON · 200
{
  "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.

BlocCe qu'il ditComment le lire
resolutionLes 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_scoresUne 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.
comparablesLes ventes retenues pour le premier candidat.Date, prix, surface, type, voie, distance. Sans parcelle ni identité : ce sont les données que DVF publie.
enrichmentL'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.
neighborhoodLa 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.
diffuseursCombien 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_statusCe 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, modeLa 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.

Miroir des diagnostics : dump ADEME chargé le 23/09/2026.Ventes : DVF, millésimes 2021, 2022, 2023, 2024, 2025 (Etalab). Le schéma qui fait foi est servi sur /v1/openapi.json.