{"id":"a4c2139e-6b1e-49f5-a13a-b03495a7a1cd","type":"API","name":"[Observatoire habitat] Observatoire Local des Loyers","slug":"observatoire-habitat-observatoire-local-des-loyers","description":"L’Observatoire local des loyers (OLL 13) collecte des données portant sur les loyers du parc privé à l’exception des logements des HLM, des Sociétés d’Economie Mixte (SEM) et des logements en maîtrise d’ouvrage d’insertion. Cette collecte est réalisée auprès des bailleurs institutionnels, des adm...","free_access_class":"FREE_NO_AUTH","auth_type":"NONE","homepage_url":"https://data.ampmetropole.fr/explore/dataset/oll-complet/","docs_url":"https://data.ampmetropole.fr/explore/dataset/oll-complet/","repo_url":null,"status":"ACTIVE","verification_state":"VERIFIED","tags":[],"logo_url":"https://s3-eu-west-1.amazonaws.com/aws-ec2-eu-1-opendatasoft-staticfileset/ampmetropole/favicon?tstamp=158498047026","primary_source_url":"https://data.ampmetropole.fr/explore/dataset/oll-complet/","extraction_confidence":"0.40","created_at":"2026-07-24T18:05:58.540Z","updated_at":"2026-09-07T03:53:56.891Z","last_verified_at":"2026-09-07T03:53:56.891Z","deprecated_at":null,"ranking_score":60,"last_ranked_at":"2026-09-03T23:03:13.131Z","last_seen_at":null,"last_validated_at":null,"last_uptime_at":"2026-09-05T11:16:20.939Z","search_vector":"'13':18B,74B,170B,226B 'a':181B 'access':64B,216B 'adm':60B,212B 'administr':113B 'administrators':265B 'afford':142B 'affordability':294B 'aix':85B,127B,237B,279B 'aix-marseille-prov':84B,126B 'aix-marseille-provence':236B,278B 'analyz':135B 'analyzing':287B 'and':252B,266B,283B,295B 'api':62B,214B 'area':152B,304B 'aupres':207B 'auprè':55B 'bailleur':57B 'bailleurs':209B 'by':220B,276B 'cett':51B 'cette':203B 'collect':19B,52B,67B 'collecte':171B,204B 'collected':219B 'compani':97B 'company':249B 'd':38B,47B,49B,190B,199B,201B 'data':66B,105B,218B,257B 'dataset':121B,273B 'des':5A,15B,20B,32B,34B,36B,43B,56B,59B,157A,167B,172B,184B,186B,188B,195B,208B,211B 'donnees':173B 'donné':21B 'du':26B,178B 'economi':39B,96B 'economie':191B 'economy':248B 'en':45B,197B 'est':53B,205B 'et':42B,194B 'except':31B 'exception':183B 'exclud':90B 'excludes':242B 'for':286B 'from':260B 'gather':107B 'gathered':259B 'habitat':2A,154A 'hlm':35B,93B,187B,245B 'hous':7A,80B,92B,99B,104B,141B,148B 'housing':159A,232B,244B,251B,256B,293B,300B 'in':229B 'insert':50B,102B 'insertion':202B,254B 'insertion-manag':101B 'insertion-managed':253B 'institut':109B 'institutional':261B 'institutionnel':58B 'institutionnels':210B 'is':258B,274B,284B 'it':241B 'l':12B,30B,164B,182B 'landlord':110B 'landlords':262B 'les':24B,176B 'local':4A,9A,14B,70B,136B,156A,161A,166B,222B,288B 'logement':33B,44B 'logements':185B,196B 'loyer':6A,16B,25B 'loyers':158A,168B,177B 'maintain':123B 'maintained':275B 'maitrise':198B 'manag':103B,112B 'managed':255B 'management':264B 'market':138B,290B 'marseill':86B,128B 'marseille':238B,280B 'maîtris':46B 'metropoli':88B,130B 'metropolis':240B,282B 'metropolitan':151B,303B 'mix':95B 'mixed':247B 'mixed-economi':94B 'mixed-economy':246B 'mixt':40B 'mixte':192B 'monitor':140B 'monitoring':292B 'observatoir':1A,3A,13B 'observatoire':153A,155A,165B 'observatori':8A,11A,72B 'observatory':160A,163A,224B 'oll':17B,73B,169B,225B 'on':227B,299B 'other':267B 'ouvrag':48B 'ouvrage':200B 'parc':27B,179B 'polici':146B 'policy':298B 'portant':22B,174B 'privat':79B,117B 'private':231B,269B 'private-sector':116B,268B 'prive':180B 'privé':28B 'properti':111B 'property':263B 'provenc':87B,129B 'provence':239B,281B 'provid':63B 'provides':215B 'public':145B,297B 'realisee':206B 'rent':10A,71B,76B,162A,223B 'rental':137B,289B 'rents':228B 'réalisé':54B 'sector':118B,270B 'sem':41B,98B,193B,250B 'social':91B,243B 'societes':189B 'société':37B 'sourc':119B 'sources':271B 'stock':81B,233B 'support':144B 'supporting':296B 'sur':23B,175B 'the':221B,230B,235B,272B,277B,302B 'this':213B 'to':217B 'trend':139B 'trends':291B 'use':133B 'useful':285B 'within':82B,149B,234B,301B 'à':29B","popularity_score":"0.0000","maintenance_score":"0.7000","institution_id":"d014fa31-f333-4e94-80a3-ea8b4459cfd5","institution_type":"MUNICIPALITY","country_code":"FR","official_confidence":40,"proof_summary":"40% - Official domain (ampmetropole.fr)","source_seed_url":null,"is_public_sector":true,"published_at":"2026-07-25T17:07:00.000Z","geographic_scope":"LOCAL","name_en":"[Housing Observatory] Local Rent Observatory","description_en":"This API provides access to data collected by the Local Rent Observatory (OLL 13) on rents in the private housing stock within the Aix-Marseille-Provence Metropolis. It excludes social housing (HLM), mixed-economy company (SEM) housing, and insertion-managed housing. Data is gathered from institutional landlords, property management administrators, and other private-sector sources. The dataset is maintained by the Aix-Marseille-Provence Metropolis and is useful for analyzing local rental market trends, monitoring housing affordability, and supporting public policy on housing within the metropolitan area.","native_lang":"fr","access_level":"direct","formats":["CSV"],"capability_tier":"live","trust_score":50.75,"merged_into_entry_id":null,"identity_key":"API|https://data.ampmetropole.fr/explore/dataset/oll-complet|[observatoire habitat] observatoire local des loyers","upstream_ref":"data.ampmetropole.fr:dataset:oll-complet","access":{"level":"direct","primary":{"kind":"download","label":"Export CSV","method":"GET","url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet/exports/csv","format":"CSV","source":"query_example","runnable":true,"direct":true},"actions":[{"kind":"download","label":"Export CSV","method":"GET","url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet/exports/csv","format":"CSV","source":"query_example","runnable":true,"direct":true},{"kind":"query","label":"List records","method":"GET","url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet/records?limit=20","source":"query_example","runnable":true,"direct":true},{"kind":"query","label":"Select & filter","method":"GET","url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet/records?select=objectid%2Cmillesime%2Ccommune&where=millesime+is+not+null&limit=20","source":"query_example","runnable":true,"direct":true},{"kind":"query","label":"Run verified request","method":"GET","url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet","source":"probe","runnable":true},{"kind":"landing","label":"Read the docs","method":"GET","url":"https://data.ampmetropole.fr/explore/dataset/oll-complet/","source":"docs","runnable":false}],"formats":["CSV"]},"maturity":{"entry_id":"a4c2139e-6b1e-49f5-a13a-b03495a7a1cd","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":"joinable","level_index":5,"level_label":"Joinable","meaning":"Canonical identifiers and concepts mapped","counts_as_coverage":true,"blocked_by":null,"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":true,"reached":true,"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":true,"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":true,"reached":true,"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":true,"reached":true,"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":"d014fa31-f333-4e94-80a3-ea8b4459cfd5","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":"data.ampmetropole.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-09-07T23:44:32.614Z"},"api_details":{"id":"a4e0e397-4a0e-40c7-b8a3-f02032876d5b","entry_id":"a4c2139e-6b1e-49f5-a13a-b03495a7a1cd","base_url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet","openapi_url":null,"graphql_url":null,"api_version":null,"spec_format":null,"endpoints_count":null,"endpoints":[],"rate_limit_info":null,"free_tier_limits":null,"ping_url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet","created_at":"2026-07-24T18:05:58.692Z","updated_at":"2026-07-24T18:05:58.692Z"},"dataset_details":{"id":"9608ffbb-76ce-41c4-91d9-9a2e8faf82aa","entry_id":"a4c2139e-6b1e-49f5-a13a-b03495a7a1cd","upstream_issued":null,"upstream_modified":"2026-08-20T13:22:33.000Z","themes":[],"update_frequency":null,"temporal_start":null,"temporal_end":null,"spatial_coverage":null,"landing_page":null,"license_id":null,"license_raw":null,"has_documentation":false,"has_data_dictionary":false,"has_versioning":false,"source_portal":"opendatasoft","source_portal_url":"https://data.ampmetropole.fr","created_at":"2026-07-24T18:10:35.222Z","updated_at":"2026-09-01T10:02:38.626Z","publisher":null,"publisher_url":null,"distributions":[],"license":null},"license":{"id":"lo-2.0","spdx_id":"etalab-2.0","name":"Licence Ouverte 2.0 (France / Etalab)","url":"https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf","is_open":true,"is_redistributable":true,"requires_attribution":true,"category":"national","notes":null,"created_at":"2026-06-12T16:29:19.729Z"},"reuse":{"license_id":"lo-2.0","license_name":"Licence Ouverte 2.0 (France / Etalab)","license_url":"https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf","commercial_use":{"status":"yes","value":true},"redistribution":{"status":"yes","value":true},"attribution_required":{"status":"yes","value":true},"share_alike":{"status":"no","value":false},"personal_data_warning":{"status":"yes","value":true},"cache_and_mirror":{"status":"yes","value":true},"undetermined":[],"basis":"licence_text","confidence":0.95,"confidence_tier":"high","source_text":"Texte de la licence - le reutilisateur est libre \"de la communiquer, la reproduire, la copier ; de l'adapter, la modifier, l'extraire et la transformer, notamment pour creer des Informations derivees ; de la diffuser, la redistribuer, la publier et la transmettre, de l'exploiter a titre commercial\". Seule obligation : \"mentionner la paternite de l'Information : sa source (a minima le nom du Concedant) et la date de la derniere mise a jour\". Le texte rappelle que le reutilisateur doit respecter \"le cadre legal relatif a la protection des donnees a caractere personnel\". Aucune clause de partage a l'identique n'est imposee.","source_url":"https://github.com/etalab/licence-ouverte/blob/master/LO.md","reviewed_at":null},"license_raw":"https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf","latest_check":{"id":"d7d9bed5-899f-4224-8971-d52fe1e48535","entry_id":"a4c2139e-6b1e-49f5-a13a-b03495a7a1cd","status":"VERIFIED","last_checked_at":"2026-09-07T03:53:56.642Z","p50_latency_ms":1791,"p95_latency_ms":null,"last_error":null,"consecutive_failures":0,"created_at":"2026-07-25T09:31:34.098Z","updated_at":"2026-09-07T03:53:56.642Z","consecutive_successes":17,"probe_url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet","probe_method":"GET","probe_http_status":200,"probe_content_type":"application/json; charset=utf-8","probe_succeeded_at":"2026-09-07T03:53:56.642Z"},"data_profile":{"id":"fdcde250-3845-41e2-8918-8387306bf013","entry_id":"a4c2139e-6b1e-49f5-a13a-b03495a7a1cd","profile_source":"opendatasoft","profile_kind":"dataset","dataset_id":"oll-complet","fields":[{"name":"objectid","type":"int","label":null,"fill_pct":100,"filterable":true,"description":null},{"name":"millesime","type":"text","label":"Millésime","fill_pct":100,"filterable":true,"description":null},{"name":"commune","type":"text","label":"Nom de Commune","fill_pct":100,"filterable":true,"description":null},{"name":"iris","type":"text","label":"Code IRIS (court)","fill_pct":85.6,"filterable":true,"description":null},{"name":"code_iris","type":"int","label":null,"fill_pct":85.6,"filterable":true,"description":null},{"name":"nom_iris","type":"text","label":"Nom de l'IRIS","fill_pct":92.8,"filterable":true,"description":null},{"name":"zone","type":"text","label":null,"fill_pct":100,"filterable":true,"description":null},{"name":"nb_enq","type":"int","label":"Nombre d'enquêtes","fill_pct":100,"filterable":true,"description":null},{"name":"plr","type":"text","label":"Parc locatif restreint","fill_pct":100,"filterable":true,"description":null},{"name":"s_q1","type":"double","label":"Loyer du 1er quartile (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_med","type":"double","label":"Loyer médian (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_q3","type":"double","label":"Loyer du 3e quartile (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t1","type":"double","label":"Loyer médian des T1 (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t2","type":"double","label":"Loyer médian des T2 (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t3","type":"double","label":"Loyer médian des T3 (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t4p","type":"double","label":"Loyer médian des T4 et plus (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t1b","type":"double","label":"Loyer bas des T1 (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t2b","type":"double","label":"Loyer bas des T2 (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t3b","type":"double","label":"Loyer bas des T3 (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t4pb","type":"double","label":"Loyer bas des T4 et plus (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t1h","type":"double","label":"Loyer haut des T1 (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t2h","type":"double","label":"Loyer haut des T2 (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t3h","type":"double","label":"Loyer haut des T3 (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_t4ph","type":"double","label":"Loyer haut des T4 et plus (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_maib","type":"double","label":"Loyer bas des maisons (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_mai","type":"double","label":"Loyer médian des maisons (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_maih","type":"double","label":"Loyer haut des maisons (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_appb","type":"double","label":"Loyer bas des appartements (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_app","type":"double","label":"Loyer médian des appartements (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_apph","type":"double","label":"Loyer haut des appartements (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_av46","type":"double","label":"Loyer médian des logements construits avant 1946 (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_46_70","type":"double","label":"Loyer médian des logements construits entre 1946 et 1970 (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_71_90","type":"double","label":"Loyer médian des logements construits entre 1971 et 1990 (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_91_05","type":"double","label":"Loyer médian des logements construits entre 1991 et 2005 (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_ap05","type":"double","label":"Loyer médian des logements construits après 2005 (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_locmob","type":"double","label":"Loyer bas des nouveaux locataires (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_locmo","type":"double","label":"Loyer médian des nouveaux locataires (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_locmoh","type":"double","label":"Loyer haut des nouveaux locataires (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_locstab","type":"double","label":"Loyer bas des locataires stables (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_locsta","type":"double","label":"Loyer médian des locataires stables (€ mensuels/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"s_locstah","type":"double","label":"Loyer haut des locataires stables (€/m²)","fill_pct":100,"filterable":true,"description":null},{"name":"m_q1","type":"int","label":"Loyer du 1er quartile (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_med","type":"int","label":"Loyer médian (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_q3","type":"int","label":"Loyer du 3e quartile (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_t1","type":"int","label":"Loyer médian des T1 (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_t2","type":"int","label":"Loyer médian des T2 (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_t3","type":"int","label":"Loyer médian des T3 (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_t4p","type":"int","label":"Loyer médian des T4 et plus (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_mai","type":"int","label":"Loyer médian des maisons (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_app","type":"int","label":"Loyer médian des appartements (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_av46","type":"int","label":"Loyer médian des logements construits avant 1946 (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_46_70","type":"int","label":"Loyer médian des logements construits entre 1946 et 1970 (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_71_90","type":"int","label":"Loyer médian des logements construits entre 1971 et 1990 (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_91_05","type":"int","label":"Loyer médian des logements construits entre 1991 et 2005 (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_ap05","type":"int","label":"Loyer médian des logements construits après 2005 (€ mensuels)","fill_pct":100,"filterable":true,"description":null},{"name":"m_locmo","type":"int","label":"Loyer médian des locataires mobiles (€ mensuels)","fill_pct":99.9,"filterable":true,"description":null},{"name":"m_locsta","type":"int","label":"Loyer médian des locataires stables (€ mensuels)","fill_pct":99.9,"filterable":true,"description":null},{"name":"sm_med","type":"int","label":"Surface moyenne de la médiane","fill_pct":100,"filterable":true,"description":null},{"name":"sm_mai","type":"int","label":"Surface moyenne des maisons","fill_pct":100,"filterable":true,"description":null},{"name":"sm_app","type":"int","label":"Surface moyenne des appartements","fill_pct":100,"filterable":true,"description":null},{"name":"sm_locmo","type":"int","label":"Surface moyenne pour les nouveaux locataires","filterable":true,"description":null},{"name":"sm_locsta","type":"int","label":"Surface moyenne pour les locataires stables","filterable":true,"description":null},{"name":"codeinsee","type":"text","label":"Code commune INSEE","filterable":true,"description":null},{"name":"shape_area","type":"double","label":"st_area(shape)","filterable":true,"description":null},{"name":"shape_length","type":"double","label":"st_perimeter(shape)","filterable":true,"description":null},{"name":"geo_shape","type":"geo_shape","label":null,"filterable":false,"description":null},{"name":"geo_point_2d","type":"geo_point_2d","label":null,"filterable":false,"description":null},{"name":"commune_regroupee","type":"text","label":null,"filterable":true,"description":null}],"field_count":68,"sample_records":[{"plr":"non","iris":"0403","m_q1":520,"m_q3":740,"m_t1":405,"m_t2":540,"m_t3":660,"s_q1":9.4,"s_q3":13,"s_t1":14.8,"s_t2":12.9,"s_t3":10.7,"zone":"8","m_app":603,"m_mai":750,"m_med":629,"m_t4p":747,"s_app":11.4,"s_mai":10,"s_med":11.2,"s_t1b":12.5,"s_t1h":16.6,"s_t2b":11.2,"s_t2h":14.9,"s_t3b":9.3,"s_t3h":11.8,"s_t4p":9.9,"m_ap05":670,"m_av46":580,"nb_enq":3690,"s_ap05":11.8,"s_appb":9.7,"s_apph":13.2,"s_av46":10.7,"s_maib":8.2,"s_maih":11.9,"s_t4pb":8.6,"s_t4ph":10.8,"sm_app":56,"sm_mai":80,"sm_med":60,"commune":"Marseille 2e Arrondissement","m_46_70":645,"m_71_90":600,"m_91_05":650,"m_locmo":650,"s_46_70":11,"s_71_90":11.1,"s_91_05":11.9,"s_locmo":11.9,"m_locsta":620,"nom_iris":"Forbin","objectid":13829,"s_locmob":10.6,"s_locmoh":14,"s_locsta":10.9,"sm_locmo":56,"code_iris":132020403,"codeinsee":"13202","geo_shape":{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[5.368236551741984,43.30496919201285],[5.368984059164778,43.3051967047089],[5.3694195917986685,43.30532935439525],[5.370543891746138,43.30566919309036],[5.37124504824882,43.305877907715114],[5.371744197799315,43.30602895220217],[5.372301994965437,43.30619760683628],[5.372470246765967,43.30591402131526],[5.372715188510294,43.305457756636834],[5.372811737027956,43.30525854242548],[5.372812894223495,43.30525671707001],[5.37275115846162,43.3052238731963],[5.372694014554699,43.30518282870815],[5.372650377044039,43.30514058774161],[5.3721793536674305,43.30534352090854],[5.37210841798171,43.30526677975234],[5.371982505574839,43.305141746341164],[5.3717430949675435,43.30492380587496],[5.371512637480608,43.30471376829883],[5.371261705833613,43.30448527999172],[5.371158993992177,43.30438493609415],[5.371099030644103,43.30430525375962],[5.370992832440345,43.3041500877459],[5.370685743556953,43.30375453491406],[5.370562299895846,43.30362944598803],[5.3703575475040095,43.303444941847715],[5.370313088501533,43.303412617791324],[5.370174354777793,43.30327526416143],[5.370008780492689,43.30308450049513],[5.369839317555757,43.302919021148114],[5.369324655392031,43.30301940155186],[5.369009805113827,43.30360408587666],[5.368593449954653,43.30432778985096],[5.36841446011944,43.304650302857986],[5.368236551741984,43.30496919201285]]]},"properties":{}},"millesime":"2024","s_locstab":9.1,"s_locstah":12.9,"sm_locsta":61,"shape_area":60749.75499934897,"geo_point_2d":{"lat":43.304683759669345,"lon":5.370330448613157},"shape_length":1140.67701662466,"commune_regroupee":"Marseille"},{"plr":"non","iris":"0403","m_q1":600,"m_q3":840,"m_t1":450,"m_t2":626,"m_t3":760,"s_q1":11,"s_q3":15.3,"s_t1":17.3,"s_t2":14.6,"s_t3":12.3,"zone":"4","m_app":687,"m_mai":900,"m_med":710,"m_t4p":896,"s_app":13.2,"s_mai":11.6,"s_med":13,"s_t1b":15.1,"s_t1h":20,"s_t2b":12.8,"s_t2h":16.2,"s_t3b":10.9,"s_t3h":13.9,"s_t4p":10.8,"m_ap05":750,"m_av46":672,"nb_enq":4197,"s_ap05":14.5,"s_appb":11.3,"s_apph":15.4,"s_av46":12.5,"s_maib":9.9,"s_maih":14.5,"s_t4pb":9.6,"s_t4ph":12,"sm_app":56,"sm_mai":80,"sm_med":60,"commune":"Marseille 12e Arrondissement","m_46_70":700,"m_71_90":750,"m_91_05":800,"m_locmo":14,"s_46_70":11.8,"s_71_90":11.9,"s_91_05":14.3,"s_locmo":14.2,"m_locsta":12,"nom_iris":"Hagueneau-Garoutte","objectid":13830,"s_locmob":12.1,"s_locmoh":16.2,"s_locsta":700,"sm_locmo":58,"code_iris":132120403,"codeinsee":"13212","geo_shape":"[large value omitted]","millesime":"2024","s_locstab":569,"s_locstah":850,"sm_locsta":60,"shape_area":337800.6600007508,"geo_point_2d":{"lat":43.30521077958291,"lon":5.413688298711233},"shape_length":3679.16238344021,"commune_regroupee":"Marseille"},{"plr":"non","iris":"0403","m_q1":540,"m_q3":800,"m_t1":465,"m_t2":586,"m_t3":748,"s_q1":11,"s_q3":15.5,"s_t1":16.4,"s_t2":14.4,"s_t3":11.7,"zone":"5","m_app":643,"m_mai":915,"m_med":650,"m_t4p":867,"s_app":12.9,"s_mai":13.3,"s_med":12.9,"s_t1b":14.3,"s_t1h":19.3,"s_t2b":12.1,"s_t2h":16.7,"s_t3b":10.6,"s_t3h":13.2,"s_t4p":10.3,"m_ap05":730,"m_av46":600,"nb_enq":4151,"s_ap05":14.3,"s_appb":11,"s_apph":15.5,"s_av46":12.9,"s_maib":10.8,"s_maih":15.7,"s_t4pb":8.7,"s_t4ph":11.8,"sm_app":53,"sm_mai":76,"sm_med":55,"commune":"Marseille 5e Arrondissement","m_46_70":643,"m_71_90":700,"m_91_05":720,"m_locmo":650,"s_46_70":12.3,"s_71_90":11.8,"s_91_05":14,"s_locmo":14,"m_locsta":650,"nom_iris":"Louis Loucheur","objectid":13833,"s_locmob":12.2,"s_locmoh":17.1,"s_locsta":12.4,"sm_locmo":50,"code_iris":132050403,"codeinsee":"13205","geo_shape":"[large value omitted]","millesime":"2024","s_locstab":10.7,"s_locstah":15,"sm_locsta":57,"shape_area":273337.89999922906,"geo_point_2d":{"lat":43.29321818123856,"lon":5.4102140130611325},"shape_length":2353.808812634266,"commune_regroupee":"Marseille"},{"plr":"non","iris":"0404","m_q1":649,"m_q3":1119,"m_t1":556,"m_t2":719,"m_t3":933,"s_q1":13.2,"s_q3":19.1,"s_t1":21.9,"s_t2":16.7,"s_t3":14,"zone":"1","m_app":780,"m_mai":1300,"m_med":820,"m_t4p":1290,"s_app":16,"s_mai":14.6,"s_med":15.9,"s_t1b":18.5,"s_t1h":24.4,"s_t2b":15.1,"s_t2h":18.9,"s_t3b":12.3,"s_t3h":16.4,"s_t4p":13.8,"m_ap05":931,"m_av46":719,"nb_enq":3399,"s_ap05":16.3,"s_appb":13.5,"s_apph":19.3,"s_av46":16.7,"s_maib":12.2,"s_maih":18.8,"s_t4pb":11.8,"s_t4ph":15.5,"sm_app":56,"sm_mai":94,"sm_med":63,"commune":"Aix-en-Provence","m_46_70":847,"m_71_90":962,"m_91_05":844,"m_locmo":815,"s_46_70":14.6,"s_71_90":15.2,"s_91_05":17.1,"s_locmo":17.5,"m_locsta":835,"nom_iris":"Campagne Repentance","objectid":13836,"s_locmob":14.5,"s_locmoh":20.9,"s_locsta":15.3,"sm_locmo":59,"code_iris":130010404,"codeinsee":"13001","geo_shape":"[large value omitted]","millesime":"2024","s_locstab":12.8,"s_locstah":18.3,"sm_locsta":65,"shape_area":10285102.754996177,"geo_point_2d":{"lat":43.54371827320572,"lon":5.479494139176647},"shape_length":25778.7754342107,"commune_regroupee":"Aix-en-Provence"},{"plr":"non","iris":"0404","m_q1":525,"m_q3":780,"m_t1":467,"m_t2":590,"m_t3":730,"s_q1":11,"s_q3":15,"s_t1":16.5,"s_t2":13.7,"s_t3":12,"zone":"6","m_app":632,"m_mai":805,"m_med":650,"m_t4p":900,"s_app":12.8,"s_mai":12.6,"s_med":12.7,"s_t1b":14.4,"s_t1h":19.8,"s_t2b":12,"s_t2h":15.3,"s_t3b":10.1,"s_t3h":13.1,"s_t4p":10.3,"m_ap05":720,"m_av46":606,"nb_enq":4606,"s_ap05":13.4,"s_appb":11.1,"s_apph":15,"s_av46":12.7,"s_maib":10,"s_maih":15.5,"s_t4pb":9.3,"s_t4ph":12,"sm_app":54,"sm_mai":80,"sm_med":56,"commune":"Marseille 14e Arrondissement","m_46_70":650,"m_71_90":680,"m_91_05":650,"m_locmo":650,"s_46_70":11.9,"s_71_90":12.1,"s_91_05":14.2,"s_locmo":13.6,"m_locsta":647,"nom_iris":"Château Vento","objectid":13837,"s_locmob":11.7,"s_locmoh":16,"s_locsta":12.5,"sm_locmo":55,"code_iris":132140404,"codeinsee":"13214","geo_shape":"[large value omitted]","millesime":"2024","s_locstab":10.7,"s_locstah":14.6,"sm_locsta":57,"shape_area":538429.4150009027,"geo_point_2d":{"lat":43.336909669018446,"lon":5.402527333655528},"shape_length":4399.482730198262,"commune_regroupee":"Marseille"}],"record_count":"1212","data_size_bytes":null,"dataset_count":null,"query_examples":[{"url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet/records?limit=20","curl":"curl -s 'https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet/records?limit=20' -H 'Accept: application/json'","label":"List records","method":"GET","description":"First 20 records of the dataset as JSON."},{"url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet/records?select=objectid%2Cmillesime%2Ccommune&where=millesime+is+not+null&limit=20","curl":"curl -s 'https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet/records?select=objectid%2Cmillesime%2Ccommune&where=millesime+is+not+null&limit=20' -H 'Accept: application/json'","label":"Select & filter","method":"GET","description":"Project specific fields (objectid, millesime, commune) and filter with ODSQL where clauses."},{"url":"https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet/exports/csv","curl":"curl -sL 'https://data.ampmetropole.fr/api/explore/v2.1/catalog/datasets/oll-complet/exports/csv' -o dataset.csv","label":"Export CSV","method":"GET","description":"Full dataset export as CSV (also available: json, parquet, xlsx)."}],"status":"ok","error_message":null,"profiled_at":"2026-09-01T10:02:37.608Z","run_id":"d79b9030-e0b4-4919-b1d1-5d71c948f0d9","created_at":"2026-07-24T18:10:34.634Z","updated_at":"2026-09-01T10:02:37.608Z","license_raw":"https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf","license_id":"lo-2.0","consecutive_failure_count":0,"last_error_at":null,"last_error_message":null,"previewable":true,"personal_data":{"status":"none","basis":"no_person_column_cited","grain":"none","allowed":true,"columns":{"direct_identifiers":[],"family_names":[],"given_names":[],"attributes":[],"unresolved_names":[],"measures":["nb_enq"],"entity_identifiers":[]},"publication":null,"publication_evidence":null,"notice":"personal data: no cited column names a natural person (the cited columns are all this reads)"}},"datasets":[],"limits":[{"id":"5960a869-cce8-4fbd-b7f3-88609ff7ce05","entry_id":"a4c2139e-6b1e-49f5-a13a-b03495a7a1cd","limit_type":"requests_per_day","value":"5000","unit":"requests","period":"day","scope":"per-ip","source_id":null,"claim_type":"measured","confidence":"0.90","observed_at":"2026-09-01T10:02:38.785Z"}],"source_access":{"status":"accessed_despite_disallow","host":"data.ampmetropole.fr","requested_path_prefix":"/api/explore/v2.1/","robots_url":"https://data.ampmetropole.fr/robots.txt","user_agent_group":"*","robots_rule":"Disallow: /api/","robots_read_at":"2026-08-25T11:29:21.471Z","decision_ref":"owner decision 2026-08-22, recorded in docs/PROGRESS.md NEEDS-HUMAN: public-sector open-data portals whose purpose is machine access; the directive is an Opendatasoft vendor default reflecting no publisher intent. Concern raised and overruled; see the row.","note":"This answer is derived from a host whose robots.txt DISALLOWS the path Commodity requests, and Commodity requests it anyway under the decision named in `decision_ref`. The rule is quoted verbatim so you can read it yourself. Commodity does not send a user-agent it is not, so any `Allow` granted to a named crawler in that file is not claimed here."},"field_provenance_source_access":{"status":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"THIS PLATFORM’S READING OF ITS OWN CONDUCT: that it requests a path this host forbids. No publisher asserts it and none was asked to","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"host":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"the host Commodity addressed, lowercased and stripped of scheme and port by this platform so that one host has one row and one reading","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"requested_path_prefix":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"THE PATH THE VERDICT IS ABOUT, derived from the base URLs this platform stores for the host — not `/`, and not an assumed `/api/`. A verdict about a path we do not call would describe someone else’s traffic","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"robots_url":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"where the file was fetched from — composed by this platform from the host, at the one location the protocol fixes, so it can be re-fetched and the reading disputed","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"user_agent_group":{"basis":"stored_sample","derived":false,"upstream_field":"the `User-agent` line the deciding rule sits under","transform":"the group heading that made the rule OURS, verbatim from the stored file. Where it is `*` the directive addresses everyone; a group naming another crawler was not applied, because Commodity does not send a user-agent it is not","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"robots_rule":{"basis":"stored_sample","derived":false,"upstream_field":"the directive line of the matching group","transform":"THE PUBLISHER’S OWN LINE, QUOTED AND UNCUT, as read from robots.txt at the moment below and stored — not fetched for this request, and not part of this response’s payload. It is here so the verdict beside it can be checked rather than taken from us","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"robots_read_at":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"OUR CLOCK when the file was read, never a `Date` header the origin sent. It bounds how stale this reading may be: a publisher can have changed the file since","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"decision_ref":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"WHO DECIDED TO CALL IT ANYWAY, AND WHEN. Recorded by this platform and required by the database before the exception may exist at all, so it can never be anonymous","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"note":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"this platform’s sentence explaining what the reader is holding. Written here, by us, and not a quotation of anybody","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}}},"manifest":{"answer_sha256":"3d770b5a337840d46d73dd3bfa83e41b36b9a1d5123ed3024dbd5fbc31eccb6d","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":89,"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[] (68 rows).","live":false,"live_basis":"This body was replayed from the worker edge cache (x-edge-cache: hit); the bytes, and therefore answer_sha256, are those of the execution that filled the cache.","created_at":"2026-09-07T23:44:58.898Z","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."}}