{"id":"91a08b62-0011-449e-b529-ae89e023c449","type":"DATASET","name":"Consolidated essential public procurement data (tabular format)","slug":"consolidated-essential-public-procurement-data-tabular-format-1","description":"Consolidated, reprocessed and published essential public procurement data (DDECPP) in Parquet and CSV formats. The DDECPPs are the data published under the Order of 22 December 2022, and describe the data at the time of the award of the public contract. This data is too large to be opened in spreadsheet software. On the other hand, you can explore, filter and download DDECPPs in Excel format on ddecpp.info (see overview below). These data are updated approximately every day by downloading and reprocessing the data made available by the data sources listed on this page. This dataset is for example more comprehensive than the data published by the Ministry of Finance here and here because it exploits more data sources. Source code for data processing and publication: <https://github.com/ColinMaudry/ddecpp-processing> More information on the project at ddecpp.info/a-propos ## Counting Public Procurement each public contract is identified globally via the ‘uid’ column. This field is the concatenation of the buyer's SIRET ('Buyer _id') and the internal market identifier ('id'). the same public contract can be described on several lines because it may have more than one holder (_holder fields) it may have undergone modifications such as amendments (_id modification field). If _id modification is equal to 0, this shall be the data for the initial award of the contract, without modification. a contract amendment may affect only the following fields: ‘_* holder’, ‘amount’ and ‘dureeMonth’. The fields \"dateNotification `\" and \"datePublicationDonnees\" also apply to changes (\"change.","free_access_class":"FREE_NO_AUTH","auth_type":"NONE","homepage_url":null,"docs_url":null,"repo_url":"https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a","status":"ACTIVE","verification_state":"STALE","tags":["procurement","legislation"],"logo_url":"https://www.google.com/s2/favicons?sz=64&domain=data.gouv.fr","primary_source_url":"https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a","extraction_confidence":"0.16","created_at":"2026-06-24T18:58:11.153Z","updated_at":"2026-09-29T10:32:30.168Z","last_verified_at":"2026-09-26T08:48:32.478Z","deprecated_at":null,"ranking_score":52,"last_ranked_at":"2026-09-25T03:13:45.045Z","last_seen_at":null,"last_validated_at":null,"last_uptime_at":"2026-09-25T04:15:36.025Z","search_vector":"'/a-propos':145B,505B '/colinmaudry/ddecpp-processing':136B,496B '0':214B,574B '2022':34B,280B,394B,640B '22':32B,278B,392B,638B 'a':589B,677B 'affect':233B,343B,593B 'affecting':703B 'also':247B,607B 'amend':204B,231B,342B 'amendment':591B 'amendments':564B,702B 'amount':239B,348B,599B,708B 'and':370B,379B,395B,428B,448B,479B,492B,531B,600B,605B,624B,653B,685B,713B 'appli':248B 'apply':608B 'approxim':83B 'approximately':443B 'are':384B,441B,697B,716B 'as':563B,706B 'at':399B,502B,643B 'avail':93B,357B 'available':453B,717B 'award':44B,223B,287B,404B,583B,647B 'be':415B,542B,577B 'because':481B,547B 'below':438B 'buyer':166B,169B,322B,526B,529B,682B 'by':446B,454B,473B,651B,667B,676B 'can':425B,541B 'chang':250B,251B 'change':611B 'changes':610B 'code':128B,352B,488B,712B 'column':158B,518B 'combin':320B 'combining':680B 'comprehens':108B,302B 'comprehensive':468B,662B 'concaten':163B 'concatenation':523B 'consolid':1A,8B,255B 'consolidated':361A,368B,615B 'contract':48B,151B,180B,226B,230B,282B,313B,334B,408B,511B,540B,586B,590B,673B,694B 'contracts':642B 'count':146B 'counting':506B 'csv':20B,265B,380B,625B 'daili':290B 'daily':650B 'data':5A,15B,26B,38B,50B,80B,91B,96B,111B,125B,130B,219B,259B,271B,297B,305B,365A,375B,386B,398B,410B,440B,451B,456B,471B,485B,490B,579B,619B,631B,657B,665B 'dataset':103B,253B,463B,613B 'datenotif':244B 'datenotification':604B 'datepublicationdonne':246B 'datepublicationdonnees':606B 'day':85B,445B 'ddecpp':16B,23B,70B,272B,376B,632B 'ddecpp.info':75B,144B,435B,504B 'ddecpp.info/a-propos':143B,503B 'ddecpps':383B,430B 'decemb':33B,279B 'december':393B,639B 'describ':36B,183B,281B,332B 'describe':396B,692B 'described':543B 'describing':641B 'document':355B 'documentation':715B 'download':69B,87B,292B,429B 'downloading':447B,652B 'drawn':267B,627B 'durat':350B 'duration':710B 'dureemonth':241B,601B 'each':509B,672B 'equal':212B,572B 'equival':304B 'equivalent':664B 'essenti':2A,12B,270B 'essential':362A,372B,630B 'everi':84B 'every':444B 'exampl':106B 'example':466B 'excel':72B,432B 'exploit':123B 'exploits':483B 'explor':66B 'explore':426B 'field':160B,196B,207B,237B,243B,344B,520B,567B 'fields':556B,597B,603B,704B 'filter':67B,427B 'financ':117B,311B 'finance':477B,671B 'follow':236B 'following':596B 'for':465B,489B,580B,620B 'format':7A,21B,73B,266B,367A,433B 'formats':381B,626B 'franc':261B 'france':621B 'from':628B 'further':714B 'github.com':135B,495B 'github.com/colinmaudry/ddecpp-processing':134B,494B 'global':154B 'globally':514B 'hand':63B,423B 'have':550B,559B 'here':478B,480B 'holder':194B,195B,238B,339B,347B,554B,555B,598B,707B 'holders':699B 'id':170B,176B,205B,209B,530B,536B,565B,569B 'identifi':153B,175B,315B,328B 'identified':513B,675B 'identifier':535B,688B 'if':568B 'in':377B,417B,431B,622B 'inform':138B 'information':498B 'initi':222B 'initial':582B 'intern':173B,326B 'internal':533B,686B 'is':411B,464B,512B,521B,571B,660B,674B 'it':482B,548B,557B,659B 'larg':53B 'large':413B 'legisl':360C 'line':186B 'lines':546B 'list':98B 'listed':458B 'made':92B,452B 'market':174B,327B,534B,687B 'may':189B,198B,232B,331B,549B,558B,592B,691B 'ministri':115B,309B 'ministry':475B,669B 'modif':201B,206B,210B,228B 'modification':566B,570B,588B 'modifications':561B 'more':467B,484B,497B,551B,661B 'multipl':295B,329B 'multiple':655B,689B 'of':391B,402B,405B,476B,524B,584B,637B,646B,670B 'offici':296B 'official':656B 'on':420B,434B,459B,499B,544B 'one':193B,333B,553B,693B 'onlin':358B 'online':718B 'only':594B 'open':56B 'opened':416B 'or':700B,709B 'order':30B,276B,390B,636B 'other':422B 'overview':77B,437B 'page':101B,461B 'parquet':18B,263B,378B,623B 'process':131B 'processing':491B 'procur':4A,14B,148B,258B,359C 'procurement':364A,374B,508B,618B 'project':141B,501B 'provid':254B 'provides':614B 'public':3A,13B,47B,133B,147B,150B,179B,257B,363A,373B,407B,507B,510B,539B,617B 'publication':493B 'publish':11B,27B,112B,273B,306B 'published':371B,387B,472B,633B,666B 'reprocess':9B,89B,256B,294B 'reprocessed':369B,616B 'reprocessing':449B,654B 'rough':289B 'roughly':649B 'row':330B 'rows':690B 's':527B,683B 'same':538B 'see':76B,436B 'sever':185B,338B 'several':545B,698B 'shall':216B,576B 'siret':168B,324B,528B,684B 'softwar':59B 'software':419B 'sourc':97B,126B,127B,298B,351B 'source':487B,711B 'sources':457B,486B,658B 'spreadsheet':58B,418B 'subsequ':341B 'subsequent':701B 'such':562B,705B 'tabular':6A,366A 'than':469B,552B,663B 'the':382B,385B,389B,397B,400B,403B,406B,421B,450B,455B,470B,474B,500B,516B,522B,525B,532B,537B,578B,581B,585B,595B,602B,629B,635B,644B,668B,681B 'there':696B 'these':439B 'this':409B,460B,462B,519B,575B,612B 'time':41B,285B,401B,645B 'to':414B,573B,609B 'too':412B 'uid':157B,319B,517B,679B 'under':388B,634B 'undergon':200B 'undergone':560B 'uniqu':318B 'unique':678B 'updat':82B,288B 'updated':442B,648B 'via':155B,515B 'where':695B 'without':227B,587B 'you':424B","popularity_score":"0.0000","maintenance_score":"0.6000","institution_id":"7abf1844-58f2-4b35-a86e-1e4a6b7652f7","institution_type":"AGENCY","country_code":"FR","official_confidence":null,"proof_summary":null,"source_seed_url":null,"is_public_sector":true,"published_at":"2026-06-24T18:58:11.153Z","geographic_scope":"NATIONAL","name_en":null,"description_en":"This dataset provides consolidated, reprocessed public procurement data for France in Parquet and CSV formats, drawn from the essential data (DDECPP) published under the Order of 22 December 2022, describing contracts at the time of award. Updated roughly daily by downloading and reprocessing multiple official data sources, it is more comprehensive than equivalent data published by the Ministry of Finance. Each contract is identified by a unique \"uid\" combining the buyer's SIRET and internal market identifier; multiple rows may describe one contract where there are several holders or subsequent amendments affecting fields such as holder, amount, or duration. Source code and further documentation are available online.","native_lang":"en","access_level":"direct","formats":["CSV"],"capability_tier":"live","trust_score":24.942307692307693,"merged_into_entry_id":null,"identity_key":"DATASET|https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a|consolidated essential public procurement data (tabular format)","upstream_ref":null,"access":{"level":"direct","primary":{"kind":"download","label":"Download CSV","method":"GET","url":"https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a","format":"CSV","source":"distribution","runnable":true},"actions":[{"kind":"download","label":"Download CSV","method":"GET","url":"https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a","format":"CSV","source":"distribution","runnable":true}],"formats":["CSV"]},"maturity":{"entry_id":"91a08b62-0011-449e-b529-ae89e023c449","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":true,"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":null,"proven_threshold":80,"institution_id":"7abf1844-58f2-4b35-a86e-1e4a6b7652f7","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-10-01T18:20:25.853Z"},"api_details":null,"dataset_details":{"id":"f4d25d2b-b705-4aaa-9b1a-55d6852442ba","entry_id":"91a08b62-0011-449e-b529-ae89e023c449","upstream_issued":null,"upstream_modified":null,"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":null,"source_portal_url":null,"created_at":"2026-08-31T22:49:03.526Z","updated_at":"2026-08-31T22:49:03.526Z","publisher":null,"publisher_url":null,"distributions":[{"id":"2ab8b895-e8a6-4551-a620-d6b871f9424b","dataset_details_id":"f4d25d2b-b705-4aaa-9b1a-55d6852442ba","title":"9a4144c0-ee44-4dec-bee5-bbef38191d9a","description":null,"access_url":"https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a","download_url":"https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a","media_type":"text/csv","format":"csv","byte_size":null,"license_id":null,"license_raw":null,"last_checked_at":"2026-09-26T08:48:31.149Z","is_available":true,"last_http_status":200,"created_at":"2026-08-31T22:49:04.018Z","updated_at":"2026-09-26T08:48:31.149Z"}],"license":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":"e25206c1-1b19-4388-918f-497eb77564d6","entry_id":"91a08b62-0011-449e-b529-ae89e023c449","status":"VERIFIED","last_checked_at":"2026-09-26T08:48:32.169Z","p50_latency_ms":3909,"p95_latency_ms":null,"last_error":null,"consecutive_failures":0,"created_at":"2026-06-24T18:58:52.470Z","updated_at":"2026-09-26T08:48:32.169Z","consecutive_successes":42,"probe_url":"https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a","probe_method":"GET","probe_http_status":200,"probe_content_type":"application/json","probe_succeeded_at":"2026-09-26T08:48:32.169Z"},"data_profile":{"id":"0c806ccf-e6d5-409f-8e80-073412d84e4a","entry_id":"91a08b62-0011-449e-b529-ae89e023c449","profile_source":"distribution","profile_kind":"dataset","dataset_id":null,"fields":[{"name":"name: uid","type":"text","label":null,"description":null,"description_en":"Raw schema metadata line for the unique identifier field."},{"name":"column_2","type":"text","label":null,"description":null,"description_en":"Auxiliary or unused column, largely empty."}],"field_count":2,"sample_records":[{"column_2":"","name: uid":"            type: string"},{"column_2":"","name: uid":"            title: Identifiant unique"},{"column_2":"","name: uid":"            description: Concaténation du SIRET de l'acheteur (acheteur_id) et de l'identifiant interne de l'acheteur (id). Utilisé comme identifiant de marché unique au niveau national."},{"column_2":"","name: uid":"        }"},{"column_2":"","name: uid":"            name: id"}],"record_count":null,"data_size_bytes":"23688","dataset_count":null,"query_examples":[{"url":"https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a","curl":"curl -sL 'https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a' -o data.csv","label":"Download distribution","method":"GET","description":"Full csv file download — the schema shown was inferred from the file's first records."},{"url":"https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a","curl":"curl -sL 'https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a' -H 'Range: bytes=0-4095'","label":"Preview first bytes","method":"GET","description":"First 4 KB of the file (servers honoring Range requests)."}],"status":"ok","error_message":null,"profiled_at":"2026-09-28T23:05:52.174Z","run_id":"4d1850c9-2c47-45e5-99fc-bb67ee9a7b71","created_at":"2026-07-20T16:50:54.304Z","updated_at":"2026-09-28T23:05:52.174Z","license_raw":null,"license_id":null,"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":[],"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":[],"manifest":{"answer_sha256":"955d1c66c78e9a0ece5aeeb97572dbfaf99eaa78b724d7d8c3aa312374b90081","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":18,"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: maturity.rungs[] (7 rows).","live":true,"live_basis":"This body was produced by executing the request.","created_at":"2026-10-01T18:20:25.855Z","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."}}