{"id":"c9fd5461-05b4-488b-87d4-4ea390e0f0ca","type":"API","name":"API Géoplateforme - Calcul d’isochrone/isodistance","slug":"api-geoplateforme-calcul-disochroneisodistance","description":"L'API de calcul d'isochrone/isodistance de la Géoplateforme permet de déterminer l’ensemble des lieux que l’on peut atteindre depuis un point de départ ou dont il faut partir pour atteindre un point d’arrivée en un temps (isochrone) ou une distance (isodistance) donné(e). Son usage est limité à 5…","free_access_class":"UNKNOWN","auth_type":"UNKNOWN","homepage_url":"https://www.data.gouv.fr/dataservices/api-geoplateforme-calcul-disochrone-isodistance","docs_url":"https://geoservices.ign.fr/documentation/services/services-geoplateforme/isochrone","repo_url":null,"status":"ACTIVE","verification_state":"FAILING","tags":["geospatial","transport"],"logo_url":"https://udata-avatars.s3.rbx.io.cloud.ovh.net/81/98295ded66449e80a960b8bc20e527-100.jpg","primary_source_url":"https://www.data.gouv.fr/dataservices/api-geoplateforme-calcul-disochrone-isodistance","extraction_confidence":"0.40","created_at":"2026-06-07T22:08:49.086Z","updated_at":"2026-08-22T03:09:59.904Z","last_verified_at":"2026-07-01T09:44:20.137Z","deprecated_at":null,"ranking_score":41,"last_ranked_at":"2026-08-21T04:50:48.101Z","last_seen_at":null,"last_validated_at":null,"last_uptime_at":"2026-08-19T00:21:20.329Z","search_vector":"'5':62B,217B 'a':216B,237B,244B,251B,277B,288B 'access':108B 'accessibility':263B 'analys':109B 'analyses':264B 'and':229B,262B,269B 'api':1A,7A,11B,64B,156A,162A,166B,219B 'arrivee':201B 'arrivé':46B 'as':285B,299B 'at':287B 'atteindr':30B,42B 'atteindre':185B,197B 'base':110B 'based':265B 'be':248B 'by':295B 'calcul':3A,9A,13B,158A,168B 'calculation':164A 'can':247B 'cap':131B 'capped':286B 'comput':72B 'computes':227B 'd':4A,14B,45B,159A,169B,200B 'data':117B,272B 'de':12B,16B,20B,34B,167B,171B,175B,189B 'depart':190B 'depui':31B 'depuis':186B 'des':24B,179B 'descript':129B 'description':284B 'destin':91B 'destination':246B 'determiner':176B 'distanc':53B,102B 'distance':208B,257B 'donne':210B 'donné':55B 'dont':37B,192B 'départ':35B 'détermin':21B 'e':56B,211B 'en':47B,202B 'ensembl':23B 'ensemble':178B 'est':59B,214B 'faut':39B,194B 'french':67B,142B,222B,297B 'from':220B,236B,242B 'geograph':69B 'geographic':224B 'geoplateforme':157A,161A,173B,226B,303B 'geospati':113B,151B,154C 'geospatial':268B,306B 'given':83B,90B,238B,245B 'govern':143B 'government':298B 'géoplateform':2A,6A,18B,71B,148B 'il':38B,193B 'in':281B 'is':274B,293B 'isochron':50B,73B,100B 'isochrone':205B,255B 'isochrone/isodistance':5A,8A,15B,160A,163A,170B 'isochrones':228B 'isodist':54B,75B,103B 'isodistance':209B,258B 'isodistances':230B 'it':259B,292B 'l':10B,22B,27B,165B,177B,182B 'la':17B,172B 'lieux':25B,180B 'limit':124B,279B 'limite':215B 'limité':60B 'locat':79B 'locations':234B 'low':134B,289B 'maintain':139B 'maintained':294B 'nation':68B,112B 'national':223B,267B 'network':116B,271B 'note':125B 'noted':280B 'of':233B,301B,305B 'on':183B,266B 'or':241B,256B 'ou':36B,51B,191B,206B 'part':145B,300B 'partir':40B,195B 'permet':19B,174B 'peut':29B,184B 'platform':70B,225B 'point':33B,44B,85B,188B,199B,240B 'pour':41B,196B 'que':26B,181B 'rate':123B,278B 'reach':94B 'reachabl':80B 'reachable':235B 'reached':249B 'request':135B,290B 'rout':106B 'routing':261B 'servic':153B 'services':308B 'set':77B,232B 'son':57B,212B 'sourc':128B 'source':283B 'specifi':97B 'specified':252B 'start':84B 'starting':239B 'subject':120B,275B 'suit':149B 'suite':304B 'support':105B 'supports':260B 'temp':49B 'temps':204B 'the':221B,231B,282B,296B,302B 'this':218B 'threshold':136B,291B 'time':99B,254B 'to':276B 'transport':115B,155C,270B 'travel':98B,253B 'un':32B,43B,48B,187B,198B,203B 'une':52B,207B 'usag':58B,118B 'usage':213B,273B 'web':152B,307B 'which':243B 'within':95B,250B 'à':61B","popularity_score":"0.0000","maintenance_score":"0.7000","institution_id":"5b86827e-a848-4295-b242-91ac4e71dc2b","institution_type":"GOVERNMENT","country_code":"FR","official_confidence":40,"proof_summary":"official domain (data.gouv.fr) (catalog: api_gouv_fr)","source_seed_url":null,"is_public_sector":true,"published_at":"2026-06-07T22:08:49.086Z","geographic_scope":"NATIONAL","name_en":"Géoplateforme API - Isochrone/isodistance calculation","description_en":"This API from the French national geographic platform (Géoplateforme) computes isochrones and isodistances: the set of locations reachable from a given starting point, or from which a given destination can be reached, within a specified travel time (isochrone) or distance (isodistance). It supports routing and accessibility analyses based on national geospatial and transport network data. Usage is subject to a rate limit, noted in the source description as capped at a low request threshold. It is maintained by the French government as part of the Géoplateforme suite of geospatial web services.","native_lang":"fr","access_level":"documented","formats":[],"capability_tier":"sample","trust_score":48.25,"access":{"level":"documented","primary":{"kind":"spec","label":"OpenAPI spec","method":"GET","url":"https://www.geoportail.gouv.fr/depot/swagger/itineraire.yaml","source":"openapi","runnable":false},"actions":[{"kind":"spec","label":"OpenAPI spec","method":"GET","url":"https://www.geoportail.gouv.fr/depot/swagger/itineraire.yaml","source":"openapi","runnable":false},{"kind":"query","label":"API base URL","method":"GET","url":"https://data.geopf.fr/navigation/isochrone","source":"base_url","runnable":false},{"kind":"landing","label":"Read the docs","method":"GET","url":"https://geoservices.ign.fr/documentation/services/services-geoplateforme/isochrone","source":"docs","runnable":false},{"kind":"landing","label":"Visit homepage","method":"GET","url":"https://www.data.gouv.fr/dataservices/api-geoplateforme-calcul-disochrone-isodistance","source":"homepage","runnable":false}],"formats":[]},"maturity":{"entry_id":"c9fd5461-05b4-488b-87d4-4ea390e0f0ca","granularity":"entry","granularity_label":"One unit = one catalog entry. A PROXY for the SCOPE.md §4 ladder, which governs source families, not entries: a family with 400 entries moves this reading 400 times as much as a family with one. Never compare or combine with the source_family reading.","level":"discovered","level_index":1,"level_label":"Discovered","meaning":"Source and metadata recorded","counts_as_coverage":false,"blocked_by":"verified","rungs":[{"level":"discovered","level_index":1,"label":"Discovered","meaning":"Source and metadata recorded","evidence":"membership of the named population the ladder is taken over","counts_as_coverage":false,"met":true,"reached":true,"criterion":"TRUE"},{"level":"verified","level_index":2,"label":"Verified","meaning":"Access tested successfully","evidence":"entries.verification_state = 'VERIFIED'","counts_as_coverage":false,"met":false,"reached":false,"criterion":"entries.verification_state = 'VERIFIED'"},{"level":"profiled","level_index":3,"label":"Profiled","meaning":"Schema, dimensions and licence understood","evidence":"a data profile with at least one field (entry_data_profiles.field_count > 0)","counts_as_coverage":false,"met":true,"reached":false,"criterion":"EXISTS (SELECT 1 FROM entry_data_profiles p WHERE p.entry_id = entries.id AND COALESCE(p.field_count, 0) > 0)"},{"level":"executable","level_index":4,"label":"Executable","meaning":"Queries run through Commodity","evidence":"entries.capability_tier = 'live' — today's proxy for \"queryable through us\"","counts_as_coverage":true,"met":false,"reached":false,"criterion":"entries.capability_tier = 'live'"},{"level":"joinable","level_index":5,"label":"Joinable","meaning":"Canonical identifiers and concepts mapped","evidence":"a field link to a canonical identifier whose sampled VALUES match its format","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM entry_field_links efl WHERE efl.entry_id = entries.id AND efl.identifier_id IS NOT NULL AND efl.value_status = 'match')"},{"level":"reproducible","level_index":6,"label":"Reproducible","meaning":"Snapshots and transformation evidence retained","evidence":"at least one retained evidence manifest (migration 078)","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM evidence_manifests em WHERE em.entry_id = entries.id)"},{"level":"guaranteed","level_index":7,"label":"Guaranteed","meaning":"Monitored against an operational reliability target","evidence":"an active reliability target with a named monitor (migration 096)","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM entry_reliability_targets rt WHERE rt.entry_id = entries.id AND rt.is_active = true)"}],"officialness":{"basis":"catalog_inherited","label":"Inherited from the upstream catalog: this item came from a trusted official government catalog, and that provenance — not per-item proof — is the warrant. Its own proof score is below 80 or it matched no registered institution (apps/worker/src/connectors/catalog/qualify-store.ts).","proof_confidence":40,"proven_threshold":80,"institution_id":"5b86827e-a848-4295-b242-91ac4e71dc2b","definition":"CASE WHEN COALESCE(entries.is_public_sector, false) IS NOT TRUE THEN 'not_official' WHEN COALESCE(entries.official_confidence, 0) >= 80 AND entries.institution_id IS NOT NULL THEN 'per_item_proven' ELSE 'catalog_inherited' END"},"source_family":{"key":"www.data.gouv.fr","label":"One unit = one source family, approximated by the serving host of the entry's primary source URL (e.g. bdl.stat.gov.pl). A COMPUTED stand-in for the curated families of SCOPE.md §5, which no table holds yet. A family sits at the highest level any of its entries has reached, because a family is integrated to the depth of its deepest working integration. Never compare or combine with the entry reading."},"generated_at":"2026-08-22T19:57:32.172Z"},"api_details":{"id":"2330f6bf-1a7d-458f-b2ab-f22f1b9fac86","entry_id":"c9fd5461-05b4-488b-87d4-4ea390e0f0ca","base_url":"https://data.geopf.fr/navigation/isochrone","openapi_url":"https://www.geoportail.gouv.fr/depot/swagger/itineraire.yaml","graphql_url":null,"api_version":null,"spec_format":"openapi","endpoints_count":null,"endpoints":[],"rate_limit_info":null,"free_tier_limits":null,"ping_url":"https://data.geopf.fr/navigation/isochrone","created_at":"2026-06-07T22:08:49.107Z","updated_at":"2026-07-10T11:13:59.826Z"},"dataset_details":null,"license":null,"reuse":{"license_id":null,"license_name":null,"license_url":null,"commercial_use":{"status":"unknown","value":null},"redistribution":{"status":"unknown","value":null},"attribution_required":{"status":"unknown","value":null},"share_alike":{"status":"unknown","value":null},"personal_data_warning":{"status":"unknown","value":null},"cache_and_mirror":{"status":"unknown","value":null},"undetermined":["commercial_use","redistribution","attribution_required","share_alike","personal_data_warning","cache_and_mirror"],"basis":"unverified","confidence":0.1,"confidence_tier":"low","source_text":null,"source_url":null,"reviewed_at":null},"license_raw":null,"latest_check":{"id":"d51e2649-decc-4bf2-9200-836856c9495e","entry_id":"c9fd5461-05b4-488b-87d4-4ea390e0f0ca","status":"FAILING","last_checked_at":"2026-08-22T03:09:59.578Z","p50_latency_ms":2216,"p95_latency_ms":null,"last_error":"HTTP 405","consecutive_failures":36,"created_at":"2026-06-08T12:43:16.656Z","updated_at":"2026-08-22T03:09:59.578Z","consecutive_successes":0,"probe_url":null,"probe_method":null,"probe_http_status":null,"probe_content_type":null,"probe_succeeded_at":null},"data_profile":{"id":"503ccbb5-2078-4b09-b121-29274104745b","entry_id":"c9fd5461-05b4-488b-87d4-4ea390e0f0ca","profile_source":"openapi","profile_kind":"dataset","dataset_id":null,"fields":[{"name":"resource","role":"parameter","type":"string","label":null,"param_in":"query","required":true,"container":"/itineraire","filterable":true,"description":"Ressource utilisée pour le calcul. Les valeurs disponibles sont présentes dans le GetCapabilities. Une ressource est un graphe de navigation qui peut potentiellement avoir plusieurs modes de transports et de calculs. La ressource va plutôt parler du graphe, de la topologie de la donnée. Par exemple,","description_en":"Navigation graph resource used for the calculation, as listed in GetCapabilities."},{"name":"start","role":"parameter","type":"string","label":null,"param_in":"query","required":true,"container":"/itineraire","filterable":true,"description":"Point de départ. Il devra être exprimé dans le CRS, par défaut, de la ressource (voir le paramètre 'crs' dans le GetCapabilities).","description_en":"Starting point coordinates, expressed in the resource's default CRS."},{"name":"end","role":"parameter","type":"string","label":null,"param_in":"query","required":true,"container":"/itineraire","filterable":true,"description":"Point d'arrivée. Il devra être exprimé dans le CRS, par défaut, de la ressource (voir le paramètre 'crs' dans le GetCapabilities).","description_en":"Destination point coordinates, expressed in the resource's default CRS."},{"name":"intermediates","role":"parameter","type":"string","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Points intermédiaires. Ils devront être exprimés dans le CRS, par défaut, de la ressource (voir le paramètre 'crs' dans le GetCapabilities).","description_en":"Intermediate waypoint coordinates, expressed in the resource's default CRS."},{"name":"profile","role":"parameter","type":"string","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Mode de déplacement utilisé pour le calcul. Les valeurs disponibles et la valeur par défaut utilisées sont présentes dans le GetCapabilities.","description_en":"Travel mode used for the calculation, as listed in GetCapabilities."},{"name":"optimization","role":"parameter","type":"string","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Mode de calcul utilisé pour déterminer l'itinéraire. Les valeurs disponibles et la valeur par défaut utilisées sont présentes dans le GetCapabilities.","description_en":"Route calculation criterion used, as listed in GetCapabilities."},{"name":"geometryFormat","role":"parameter","type":"string","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Format des géométries dans la réponse. Peuvent être au format GeoJSON ou Encoded Polyline.","enum_values":["geojson","polyline"],"description_en":"Format of returned geometries, either GeoJSON or Encoded Polyline."},{"name":"constraints","role":"parameter","type":"array","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Contraintes utilisées pour le calcul. Il s'agit d'un objet JSON (voir la version POST de cette opération). Les paramètres disponibles sont présents dans le GetCapabilities.","description_en":"List of constraints applied to the calculation, per GetCapabilities parameters."},{"name":"getSteps","role":"parameter","type":"boolean","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Présence des étapes dans la réponse. Les valeurs disponibles et la valeur par défaut utilisées sont présentes dans le GetCapabilities.","description_en":"Whether route steps are included in the response."},{"name":"getBbox","role":"parameter","type":"boolean","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Présence de l'emprise de l'itinéraire dans la réponse. Les valeurs disponibles et la valeur par défaut utilisées sont présentes dans le GetCapabilities.","description_en":"Whether the route's bounding box is included in the response."},{"name":"distanceUnit","role":"parameter","type":"string","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Unité des distances renvoyées. Les valeurs disponibles et la valeur par défaut utilisées sont présentes dans le GetCapabilities.","description_en":"Unit used for returned distance values."},{"name":"timeUnit","role":"parameter","type":"string","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Unité du temps renvoyé. Les valeurs disponibles et la valeur par défaut utilisées sont présentes dans le GetCapabilities.","description_en":"Unit used for returned time values."},{"name":"crs","role":"parameter","type":"string","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Projection des géometries. Les valeurs disponibles et la valeur par défaut utilisées sont présentes dans le GetCapabilities.","description_en":"Coordinate reference system used for the returned geometries."},{"name":"waysAttributes","role":"parameter","type":"array","label":null,"param_in":"query","container":"/itineraire","filterable":true,"description":"Attributs des tronçons à afficher dans la réponse. Les valeurs disponibles et les valeurs par défaut utilisées sont présentes dans le GetCapabilities.","description_en":"Road segment attributes to include in the response."},{"name":"point","role":"parameter","type":"string","label":null,"param_in":"query","required":true,"container":"/isochrone","filterable":true,"description":"Coordonnées d'une position ponctuelle. C'est le point à partir duquel seront fait les calculs. Il devra être exprimé dans le CRS, par défaut, de la ressource (voir le paramètre 'crs' dans le GetCapabilities).","description_en":"Coordinates of the point used as calculation origin, in the resource's default CRS."},{"name":"costValue","role":"parameter","type":"number (float)","label":null,"format":"float","param_in":"query","required":true,"container":"/isochrone","filterable":true,"description":"Valeur du coût utilisé pour le calcul. Les valeurs disponibles et la valeur par défaut utilisées sont présentes dans le GetCapabilities. On pourra, par exemple, préciser une distance ou un temps, selon l'optimisation choisie. L'unité dépendra aussi des paramètres distanceUnit et timeUnit.","description_en":"Cost value used for the calculation, e.g. a distance or time threshold."},{"name":"costType","role":"parameter","type":"string","label":null,"param_in":"query","required":true,"container":"/isochrone","filterable":true,"description":"Type du coût utilisé pour le calcul. Les valeurs disponibles et la valeur par défaut utilisées sont présentes dans le GetCapabilities. On pourra, par exemple, préciser une distance ou un temps, selon l'optimisation choisie. L'unité dépendra aussi des paramètres distanceUnit et timeUnit.","description_en":"Type of cost used for the calculation, such as distance or time."},{"name":"direction","role":"parameter","type":"string","label":null,"param_in":"query","container":"/isochrone","filterable":true,"description":"Sens du parcours. Cela permet de définir le sens du parcours. Soit on définit un point de départ et on obtient les points d'arrivé potentiels. Soit on définit un point d'arrivé et on otient les points de départ potentiels. Les valeurs disponibles et la valeur par défaut utilisées sont présentes dans","enum_values":["departure","arrival"],"description_en":"Direction of travel, defining whether departures or arrivals are computed."},{"name":"constraintType","type":"string","label":"constraint","description":null,"enum_values":["banned","preferred","unpreferred"],"description_en":"Type of restriction applied to the route calculation."},{"name":"key","type":"string","label":"constraint","description":null,"description_en":"Attribute key targeted by the constraint."},{"name":"operator","type":"string","label":"constraint","description":null,"description_en":"Comparison operator used to evaluate the constraint."},{"name":"value","type":"string","label":"constraint","description":null,"description_en":"Value compared against the constraint's key using the operator."},{"name":"threshold","type":"object","label":"constraint","description":null,"description_en":"Threshold settings applied to the constraint."},{"name":"error","type":"object","label":"errorResponse","description":null,"description_en":"Error details returned when the request fails."},{"name":"geometry","type":"string","label":"itineraire","description":null,"description_en":"Geometry of the computed route or isochrone/isodistance area."},{"name":"duration","type":"number (float)","label":"itineraire","format":"float","description":null,"description_en":"Total travel time of the computed route."},{"name":"distance","type":"number (float)","label":"itineraire","format":"float","description":null,"description_en":"Total travel distance of the computed route."},{"name":"bbox","type":"string","label":"itineraire","description":null,"description_en":"Bounding box enclosing the computed route geometry."},{"name":"departure","type":"string (date)","label":"itineraire","format":"date","description":null,"description_en":"Departure date and time of the route."},{"name":"arrival","type":"string (date)","label":"itineraire","format":"date","description":null,"description_en":"Arrival date and time of the route."},{"name":"alerts","type":"array<object>","label":"itineraire","description":null,"description_en":"List of alerts or warnings related to the computed route."},{"name":"portions","type":"array<object>","label":"itineraire","description":null,"description_en":"List of route segments composing the full itinerary."},{"name":"info","type":"object","label":"getcapabilities","description":null,"description_en":"General information about the API service."},{"name":"api","type":"object","label":"getcapabilities","description":null,"description_en":"Metadata describing the API and its capabilities."},{"name":"operations","type":"array<object>","label":"getcapabilities","description":null,"description_en":"List of operations supported by the API."},{"name":"resources","type":"array<object>","label":"getcapabilities","description":null,"description_en":"List of navigation graph resources available for calculations."}],"field_count":36,"sample_records":null,"record_count":null,"data_size_bytes":null,"dataset_count":null,"query_examples":[{"url":"https://www.geoportail.gouv.fr/depot/swagger/itineraire.yaml","curl":"curl -s 'https://www.geoportail.gouv.fr/depot/swagger/itineraire.yaml' -H 'Accept: application/json'","label":"OpenAPI spec","method":"GET","description":"Machine-readable API description (use it to generate clients)."}],"status":"partial","error_message":null,"profiled_at":"2026-07-26T01:52:52.076Z","run_id":"6bbf9ff0-8da2-48d2-838b-5c31efb298ff","created_at":"2026-06-12T19:31:41.395Z","updated_at":"2026-07-26T01:52:52.076Z","license_raw":null,"license_id":null,"consecutive_failure_count":0,"last_error_at":null,"last_error_message":null,"previewable":false},"datasets":[],"limits":[],"manifest":{"answer_sha256":"cec16966dd5695b617e6835a06188aeafc813ea32918f9481517c1c8b15af112","answer_sha256_rule":"sha256 (hex, UTF-8) of JSON.stringify(this body) after deleting the keys listed in manifest.stamped_keys from manifest, and deleting manifest itself if it is then empty. The hash was computed before the stamp existed, so no field of the stamp is inside it.","stamped_keys":["answer_sha256","answer_sha256_rule","stamped_keys","row_count","row_count_basis","live","live_basis","created_at","created_at_basis","durable_citation"],"row_count":48,"row_count_basis":"Objects that are elements of a JSON array anywhere in this body, excluding manifest. Not a claim about which collection is the answer. Largest single collection: data_profile.fields[] (36 rows).","live":true,"live_basis":"This body was produced by executing the request.","created_at":"2026-08-22T19:57:32.327Z","created_at_basis":"When this response body was assembled, deliberately OUTSIDE the hashed bytes so the same answer hashes identically on every request. Not the upstream read time — that is provenance[].retrieved_at. A zone-cached replay carries the assembly time, not your receipt time.","durable_citation":"This manifest is produced at response time and is NOT stored. A durable, replayable citation is persisted only on an explicit cite: GET /api/v1/entries/{id-or-slug}/evidence, or the MCP cite_query tool. Both are entry-scoped, because evidence_manifests is entry-shaped; a domain answer spanning several sources has no single entry and cannot be persisted through that path."}}