{
  "schemaVersion": 1,
  "slug": "marches-publics-travaux-2026-t1",
  "title": "Baromètre Semagora des marchés publics de travaux — T1 2026",
  "generatedAt": "2026-07-14T16:10:00.000Z",
  "methodology": {
    "version": "v1.2",
    "periodLabel": "T1 2026",
    "periodStartInclusive": "2026-01-01T00:00:00.000Z",
    "periodEndExclusive": "2026-04-01T00:00:00.000Z",
    "timezone": "UTC",
    "cpvPrefix": "45",
    "cpvDefinition": "Caractères non numériques retirés, huit premiers chiffres, préfixe 45.",
    "boampIdentity": "source BOAMP + externalId, avis initiaux uniquement.",
    "decpIdentity": "COALESCE(NULLIF(uid, ''), externalId), version isCurrent = true.",
    "amountRule": "Montants strictement positifs ; médiane, Q1, Q3 et échantillon publiables. P99 et maximum réservés au contrôle interne.",
    "smeShareRule": "Paires distinctes marché × titulaire ; PME / (PME + ETI + GE).",
    "geographyRule": "Lieu d'exécution uniquement ; aucun fallback vers l'acheteur ou le titulaire.",
    "boampSource": "official-api"
  },
  "sources": [
    {
      "key": "BOAMP",
      "label": "Bulletin officiel des annonces des marchés publics — DILA",
      "role": "Consultations publiées",
      "licence": "Licence Ouverte 2.0",
      "url": "https://www.data.gouv.fr/dataservices/api-bulletin-officiel-des-annonces-des-marches-publics-boamp"
    },
    {
      "key": "DECP",
      "label": "Données essentielles de la commande publique — DAJ",
      "role": "Marchés attribués",
      "licence": "Licence Ouverte 2.0",
      "url": "https://www.data.economie.gouv.fr/explore/dataset/decp-2022-marches-valides/"
    }
  ],
  "boamp": {
    "noticeCount": 4518,
    "allQuarterNoticeCount": 18256,
    "broadBusinessSiloNoticeCount": 5130,
    "monthly": [
      {
        "month": "2026-01-01",
        "count": 1429,
        "responseWindowSampleSize": 1404,
        "medianResponseDays": 30.5
      },
      {
        "month": "2026-02-01",
        "count": 1410,
        "responseWindowSampleSize": 1374,
        "medianResponseDays": 30.5
      },
      {
        "month": "2026-03-01",
        "count": 1679,
        "responseWindowSampleSize": 1658,
        "medianResponseDays": 31.4
      }
    ],
    "topCpv4": [
      {
        "code": "4526",
        "count": 1282
      },
      {
        "code": "4523",
        "count": 1179
      },
      {
        "code": "4511",
        "count": 1113
      },
      {
        "code": "4531",
        "count": 1073
      },
      {
        "code": "4542",
        "count": 1000
      },
      {
        "code": "4533",
        "count": 946
      },
      {
        "code": "4522",
        "count": 736
      },
      {
        "code": "4521",
        "count": 637
      },
      {
        "code": "4544",
        "count": 583
      },
      {
        "code": "4543",
        "count": 571
      },
      {
        "code": "4500",
        "count": 420
      },
      {
        "code": "4545",
        "count": 301
      },
      {
        "code": "4541",
        "count": 289
      },
      {
        "code": "4532",
        "count": 194
      },
      {
        "code": "4534",
        "count": 116
      },
      {
        "code": "4525",
        "count": 100
      },
      {
        "code": "4524",
        "count": 98
      },
      {
        "code": "4520",
        "count": 91
      },
      {
        "code": "4530",
        "count": 64
      },
      {
        "code": "4540",
        "count": 47
      }
    ],
    "topBuyers": {
      "publishable": false,
      "minimumCoveragePercent": 90,
      "sampleSize": 0,
      "coveragePercent": 0
    },
    "regions": [],
    "quality": {
      "distinctExternalIdCount": 4518,
      "missingPublicationDateCount": 0,
      "firstPublicationDate": "2026-01-01",
      "lastPublicationDate": "2026-03-31",
      "deadlineCount": 4517,
      "validResponseWindowCount": 4436,
      "canonicalBuyerCount": 0,
      "executionRegionCount": 3365,
      "canonicalBuyerCoveragePercent": 0,
      "executionRegionCoveragePercent": 74.48
    }
  },
  "decp": {
    "contractCount": 31739,
    "monthly": [
      {
        "month": "2026-01-01",
        "count": 9762
      },
      {
        "month": "2026-02-01",
        "count": 9206
      },
      {
        "month": "2026-03-01",
        "count": 12771
      }
    ],
    "amounts": {
      "sampleSize": 30926,
      "q1": 66497.8,
      "median": 159256.23,
      "q3": 470287.16
    },
    "sme": {
      "sharePercent": 65.54,
      "pmePairCount": 26018,
      "categorizedPairCount": 39698,
      "missingCategoryPairCount": 1014,
      "categories": [
        {
          "category": "PME",
          "count": 26018
        },
        {
          "category": "GE",
          "count": 7101
        },
        {
          "category": "ETI",
          "count": 6579
        },
        {
          "category": "MISSING",
          "count": 1014
        }
      ]
    },
    "topCpv4": [
      {
        "code": "4523",
        "count": 4658
      },
      {
        "code": "4526",
        "count": 4021
      },
      {
        "code": "4521",
        "count": 3619
      },
      {
        "code": "4511",
        "count": 3440
      },
      {
        "code": "4500",
        "count": 2735
      },
      {
        "code": "4542",
        "count": 2711
      },
      {
        "code": "4531",
        "count": 2057
      },
      {
        "code": "4533",
        "count": 1596
      },
      {
        "code": "4522",
        "count": 1586
      },
      {
        "code": "4545",
        "count": 1427
      },
      {
        "code": "4544",
        "count": 890
      },
      {
        "code": "4543",
        "count": 845
      },
      {
        "code": "4541",
        "count": 437
      },
      {
        "code": "4532",
        "count": 371
      },
      {
        "code": "4525",
        "count": 319
      },
      {
        "code": "4524",
        "count": 287
      },
      {
        "code": "4520",
        "count": 257
      },
      {
        "code": "4534",
        "count": 165
      },
      {
        "code": "4530",
        "count": 152
      },
      {
        "code": "4510",
        "count": 63
      }
    ],
    "topBuyers": [
      {
        "code": "34749837000027",
        "label": "NEOTOA",
        "count": 280
      },
      {
        "code": "23130002100012",
        "label": "REGION PROVENCE-ALPES-COTE D'AZUR (CONSEIL REGIONAL P.A.C.A.)",
        "count": 195
      },
      {
        "code": "20005375900011",
        "label": "REGION NOUVELLE-AQUITAINE",
        "count": 186
      },
      {
        "code": "21440109300015",
        "label": "COMMUNE DE NANTES (MAIRIE)",
        "count": 173
      },
      {
        "code": "27400001700013",
        "label": "OFFICE PUBLIC DE L HABITAT DU DEPARTEMENT DES LANDES (OPDHLM 40)",
        "count": 158
      },
      {
        "code": "27850001200184",
        "label": "OFFICE PUBLIC DE L HABITAT DE VENDEE",
        "count": 152
      },
      {
        "code": "20005480700017",
        "label": "METROPOLE D'AIX-MARSEILLE-PROVENCE",
        "count": 137
      },
      {
        "code": "21690123100011",
        "label": "COMMUNE DE LYON (MAIRIE)",
        "count": 135
      },
      {
        "code": "20007695800012",
        "label": "COLLECTIVITE DE CORSE",
        "count": 125
      },
      {
        "code": "59920013600241",
        "label": "SEMBREIZH (SEMAEB)",
        "count": 119
      },
      {
        "code": "27220001500027",
        "label": "OFFICE PUBLIC DE L'HABITAT TERRES D'ARMOR HABITAT (TERRES D'ARMOR HABITAT)",
        "count": 114
      },
      {
        "code": "20005226400013",
        "label": "REGION GRAND EST",
        "count": 108
      },
      {
        "code": "21750001600019",
        "label": "VILLE DE PARIS (MAIRIE)",
        "count": 108
      },
      {
        "code": "22830001800113",
        "label": "DEPARTEMENT DU VAR",
        "count": 104
      },
      {
        "code": "21100374400011",
        "label": "COMMUNE DE TROYES (MAIRIE)",
        "count": 85
      },
      {
        "code": "22070001700019",
        "label": "DEPARTEMENT DE L ARDECHE",
        "count": 85
      },
      {
        "code": "35009061900015",
        "label": "BREST METROPOLE HABITAT",
        "count": 85
      },
      {
        "code": "21300189400012",
        "label": "COMMUNE DE NIMES (MAIRIE)",
        "count": 75
      },
      {
        "code": "22350001800013",
        "label": "DEPARTEMENT D ILLE ET VILAINE",
        "count": 75
      },
      {
        "code": "24370075400035",
        "label": "TOURS METROPOLE VAL DE LOIRE",
        "count": 75
      }
    ],
    "regions": [
      {
        "code": "84",
        "label": "Auvergne-Rhône-Alpes",
        "count": 4844
      },
      {
        "code": "53",
        "label": "Bretagne",
        "count": 3106
      },
      {
        "code": "75",
        "label": "Nouvelle-Aquitaine",
        "count": 2998
      },
      {
        "code": "76",
        "label": "Occitanie",
        "count": 2997
      },
      {
        "code": "52",
        "label": "Pays de la Loire",
        "count": 2879
      },
      {
        "code": "44",
        "label": "Grand Est",
        "count": 2736
      },
      {
        "code": "93",
        "label": "Provence-Alpes-Côte d'Azur",
        "count": 2411
      },
      {
        "code": "11",
        "label": "Île-de-France",
        "count": 2091
      },
      {
        "code": "32",
        "label": "Hauts-de-France",
        "count": 1563
      },
      {
        "code": "27",
        "label": "Bourgogne-Franche-Comté",
        "count": 1539
      },
      {
        "code": "24",
        "label": "Centre-Val de Loire",
        "count": 1385
      },
      {
        "code": "28",
        "label": "Normandie",
        "count": 1219
      },
      {
        "code": "04",
        "label": "La Réunion",
        "count": 256
      },
      {
        "code": "01",
        "label": "Guadeloupe",
        "count": 171
      },
      {
        "code": "06",
        "label": "Mayotte",
        "count": 92
      },
      {
        "code": "02",
        "label": "Martinique",
        "count": 86
      },
      {
        "code": "03",
        "label": "Guyane",
        "count": 60
      },
      {
        "code": "94",
        "label": "Corse",
        "count": 17
      }
    ],
    "procedures": [
      {
        "code": "Procédure adaptée",
        "label": "Procédure adaptée",
        "count": 23133
      },
      {
        "code": "Appel d'offres ouvert",
        "label": "Appel d'offres ouvert",
        "count": 6801
      },
      {
        "code": "Marché passé sans publicité ni mise en concurrence préalable",
        "label": "Marché passé sans publicité ni mise en concurrence préalable",
        "count": 865
      },
      {
        "code": "Procédure avec négociation",
        "label": "Procédure avec négociation",
        "count": 657
      },
      {
        "code": "Appel d'offres restreint",
        "label": "Appel d'offres restreint",
        "count": 175
      },
      {
        "code": "Dialogue compétitif",
        "label": "Dialogue compétitif",
        "count": 35
      },
      {
        "code": "Appel d’offres restreint",
        "label": "Appel d’offres restreint",
        "count": 1
      },
      {
        "code": "Marché négocié sans publicité ni mise en concurrence préalable",
        "label": "Marché négocié sans publicité ni mise en concurrence préalable",
        "count": 1
      }
    ],
    "quality": {
      "preCurrentRowCount": 31739,
      "rejectedNonCurrentRowCount": 0,
      "distinctContractKeyCount": 31739,
      "uidFallbackCount": 0,
      "positiveAmountCount": 30926,
      "missingAmountCount": 655,
      "nonPositiveAmountCount": 158,
      "buyerIdCount": 31739,
      "procedureCount": 31668,
      "executionLocationCount": 31733,
      "executionRegionCount": 30450,
      "contractSupplierPairCount": 40712,
      "amountCoveragePercent": 97.44,
      "buyerIdCoveragePercent": 100,
      "procedureCoveragePercent": 99.78,
      "executionRegionCoveragePercent": 95.94,
      "supplierCategoryCoveragePercent": 97.51
    }
  },
  "quality": {
    "readyForEditorial": true,
    "checks": [
      {
        "key": "boamp_minimum_sample",
        "label": "Échantillon BOAMP suffisant",
        "status": "PASS",
        "actual": 4518,
        "threshold": ">= 20"
      },
      {
        "key": "boamp_unique_external_ids",
        "label": "Identifiants BOAMP uniques",
        "status": "PASS",
        "actual": 4518,
        "threshold": "= 4518"
      },
      {
        "key": "boamp_publication_dates",
        "label": "Dates de publication BOAMP complètes",
        "status": "PASS",
        "actual": 0,
        "threshold": "= 0"
      },
      {
        "key": "boamp_response_window_coverage",
        "label": "Fenêtres de réponse BOAMP exploitables",
        "status": "PASS",
        "actual": 98.19,
        "threshold": ">= 95 %"
      },
      {
        "key": "boamp_execution_region_coverage",
        "label": "Région d'exécution BOAMP exploitable",
        "status": "WARN",
        "actual": 74.48,
        "threshold": ">= 90 % pour publier le classement ; >= 60 % avec masquage"
      },
      {
        "key": "decp_minimum_sample",
        "label": "Échantillon DECP suffisant",
        "status": "PASS",
        "actual": 31739,
        "threshold": ">= 20"
      },
      {
        "key": "decp_unique_contracts",
        "label": "Identités marché DECP uniques",
        "status": "PASS",
        "actual": 31739,
        "threshold": "= 31739"
      },
      {
        "key": "decp_amount_coverage",
        "label": "Montants DECP positifs exploitables",
        "status": "PASS",
        "actual": 97.44,
        "threshold": ">= 95 % ; >= 90 % avec avertissement"
      },
      {
        "key": "decp_buyer_coverage",
        "label": "Identifiants acheteur DECP complets",
        "status": "PASS",
        "actual": 100,
        "threshold": ">= 99 %"
      },
      {
        "key": "decp_procedure_coverage",
        "label": "Procédures DECP exploitables",
        "status": "PASS",
        "actual": 99.78,
        "threshold": ">= 95 %"
      },
      {
        "key": "decp_execution_region_coverage",
        "label": "Région d'exécution DECP exploitable",
        "status": "PASS",
        "actual": 95.94,
        "threshold": ">= 90 %"
      },
      {
        "key": "decp_supplier_category_coverage",
        "label": "Catégories de titulaires exploitables",
        "status": "PASS",
        "actual": 97.51,
        "threshold": ">= 90 %"
      }
    ]
  },
  "contentHash": "fb365866b1404e819803427fc33ebc96902104b206bef6206fb9b5ed4fd46700",
  "openData": {
    "schemaVersion": "1.0",
    "license": "Licence Ouverte 2.0",
    "canonicalUrl": "https://semagora.com/barometres/marches-publics-travaux-2026-t1",
    "generatedFromSnapshotHash": "fb365866b1404e819803427fc33ebc96902104b206bef6206fb9b5ed4fd46700",
    "publicExclusions": [
      "decp.amounts.internalControlOnly",
      "boamp.topBuyers.internalCandidates",
      "boamp.regions (couverture du lieu d'exécution inférieure à 90 %)"
    ],
    "note": "Export agrégé. Les corpus BOAMP et DECP sont distincts et ne s'additionnent pas."
  }
}
