{
  "schemaVersion": 1,
  "slug": "marches-publics-travaux-2026-t2",
  "title": "Baromètre Semagora des marchés publics de travaux — T2 2026",
  "generatedAt": "2026-07-14T16:10:00.000Z",
  "methodology": {
    "version": "v1.2",
    "periodLabel": "T2 2026",
    "periodStartInclusive": "2026-04-01T00:00:00.000Z",
    "periodEndExclusive": "2026-07-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": 4939,
    "allQuarterNoticeCount": 20823,
    "broadBusinessSiloNoticeCount": 5664,
    "monthly": [
      {
        "month": "2026-04-01",
        "count": 1716,
        "responseWindowSampleSize": 1681,
        "medianResponseDays": 32.4
      },
      {
        "month": "2026-05-01",
        "count": 1417,
        "responseWindowSampleSize": 1374,
        "medianResponseDays": 31.4
      },
      {
        "month": "2026-06-01",
        "count": 1806,
        "responseWindowSampleSize": 1756,
        "medianResponseDays": 30.4
      }
    ],
    "topCpv4": [
      {
        "code": "4526",
        "count": 1418
      },
      {
        "code": "4523",
        "count": 1286
      },
      {
        "code": "4511",
        "count": 1199
      },
      {
        "code": "4531",
        "count": 1185
      },
      {
        "code": "4542",
        "count": 1082
      },
      {
        "code": "4533",
        "count": 985
      },
      {
        "code": "4522",
        "count": 817
      },
      {
        "code": "4544",
        "count": 670
      },
      {
        "code": "4543",
        "count": 647
      },
      {
        "code": "4521",
        "count": 605
      },
      {
        "code": "4500",
        "count": 432
      },
      {
        "code": "4545",
        "count": 384
      },
      {
        "code": "4541",
        "count": 343
      },
      {
        "code": "4532",
        "count": 183
      },
      {
        "code": "4524",
        "count": 145
      },
      {
        "code": "4534",
        "count": 130
      },
      {
        "code": "4525",
        "count": 129
      },
      {
        "code": "4520",
        "count": 102
      },
      {
        "code": "4530",
        "count": 64
      },
      {
        "code": "4540",
        "count": 46
      }
    ],
    "topBuyers": {
      "publishable": false,
      "minimumCoveragePercent": 90,
      "sampleSize": 0,
      "coveragePercent": 0
    },
    "regions": [],
    "quality": {
      "distinctExternalIdCount": 4939,
      "missingPublicationDateCount": 0,
      "firstPublicationDate": "2026-04-01",
      "lastPublicationDate": "2026-06-30",
      "deadlineCount": 4935,
      "validResponseWindowCount": 4811,
      "canonicalBuyerCount": 0,
      "executionRegionCount": 3544,
      "canonicalBuyerCoveragePercent": 0,
      "executionRegionCoveragePercent": 71.76
    }
  },
  "decp": {
    "contractCount": 21373,
    "monthly": [
      {
        "month": "2026-04-01",
        "count": 6617
      },
      {
        "month": "2026-05-01",
        "count": 6413
      },
      {
        "month": "2026-06-01",
        "count": 8343
      }
    ],
    "amounts": {
      "sampleSize": 21226,
      "q1": 63714.35,
      "median": 151670.99,
      "q3": 451166.84
    },
    "sme": {
      "sharePercent": 64.17,
      "pmePairCount": 18086,
      "categorizedPairCount": 28184,
      "missingCategoryPairCount": 734,
      "categories": [
        {
          "category": "PME",
          "count": 18086
        },
        {
          "category": "GE",
          "count": 5282
        },
        {
          "category": "ETI",
          "count": 4816
        },
        {
          "category": "MISSING",
          "count": 734
        }
      ]
    },
    "topCpv4": [
      {
        "code": "4523",
        "count": 3351
      },
      {
        "code": "4526",
        "count": 2630
      },
      {
        "code": "4521",
        "count": 2463
      },
      {
        "code": "4511",
        "count": 2342
      },
      {
        "code": "4542",
        "count": 1699
      },
      {
        "code": "4500",
        "count": 1644
      },
      {
        "code": "4531",
        "count": 1270
      },
      {
        "code": "4522",
        "count": 1261
      },
      {
        "code": "4533",
        "count": 1115
      },
      {
        "code": "4545",
        "count": 990
      },
      {
        "code": "4544",
        "count": 568
      },
      {
        "code": "4543",
        "count": 504
      },
      {
        "code": "4541",
        "count": 293
      },
      {
        "code": "4532",
        "count": 254
      },
      {
        "code": "4525",
        "count": 215
      },
      {
        "code": "4524",
        "count": 190
      },
      {
        "code": "4520",
        "count": 189
      },
      {
        "code": "4534",
        "count": 169
      },
      {
        "code": "4530",
        "count": 89
      },
      {
        "code": "4540",
        "count": 55
      }
    ],
    "topBuyers": [
      {
        "code": "34749837000027",
        "label": "NEOTOA",
        "count": 146
      },
      {
        "code": "20005226400013",
        "label": "REGION GRAND EST",
        "count": 138
      },
      {
        "code": "20007695800012",
        "label": "COLLECTIVITE DE CORSE",
        "count": 137
      },
      {
        "code": "27400001700013",
        "label": "OFFICE PUBLIC DE L HABITAT DU DEPARTEMENT DES LANDES (OPDHLM 40)",
        "count": 137
      },
      {
        "code": "27850001200184",
        "label": "OFFICE PUBLIC DE L HABITAT DE VENDEE",
        "count": 124
      },
      {
        "code": "21690123100011",
        "label": "COMMUNE DE LYON (MAIRIE)",
        "count": 123
      },
      {
        "code": "20005375900011",
        "label": "REGION NOUVELLE-AQUITAINE",
        "count": 105
      },
      {
        "code": "27220001500027",
        "label": "OFFICE PUBLIC DE L'HABITAT TERRES D'ARMOR HABITAT (TERRES D'ARMOR HABITAT)",
        "count": 100
      },
      {
        "code": "22830001800113",
        "label": "DEPARTEMENT DU VAR",
        "count": 97
      },
      {
        "code": "59920013600241",
        "label": "SEMBREIZH (SEMAEB)",
        "count": 88
      },
      {
        "code": "45220075100025",
        "label": "OPH RENNES METROPOLE ARCHIPEL HABITAT",
        "count": 78
      },
      {
        "code": "68020136500029",
        "label": "SOC H L M UN TOIT POUR TOUS",
        "count": 78
      },
      {
        "code": "22880001700011",
        "label": "DEPARTEMENT DES VOSGES",
        "count": 77
      },
      {
        "code": "22380001200013",
        "label": "DEPARTEMENT DE L ISERE",
        "count": 75
      },
      {
        "code": "22070001700019",
        "label": "DEPARTEMENT DE L ARDECHE",
        "count": 74
      },
      {
        "code": "22160001800016",
        "label": "DEPARTEMENT DE LA CHARENTE",
        "count": 74
      },
      {
        "code": "24450046800040",
        "label": "ORLEANS METROPOLE",
        "count": 68
      },
      {
        "code": "20009433200018",
        "label": "COLLECTIVITE EUROPEENNE D'ALSACE",
        "count": 66
      },
      {
        "code": "21060029200010",
        "label": "COMMUNE DE CANNES (MAIRIE)",
        "count": 64
      },
      {
        "code": "75920075100130",
        "label": "SEM DE CONSTRUCTION DU DPT DE L AIN (SOCIETE D'ECONOMIE MIXTE DU DEPARTEMENT DE L'AIN)",
        "count": 64
      }
    ],
    "regions": [
      {
        "code": "84",
        "label": "Auvergne-Rhône-Alpes",
        "count": 3369
      },
      {
        "code": "75",
        "label": "Nouvelle-Aquitaine",
        "count": 2281
      },
      {
        "code": "76",
        "label": "Occitanie",
        "count": 2070
      },
      {
        "code": "44",
        "label": "Grand Est",
        "count": 1941
      },
      {
        "code": "53",
        "label": "Bretagne",
        "count": 1922
      },
      {
        "code": "52",
        "label": "Pays de la Loire",
        "count": 1745
      },
      {
        "code": "93",
        "label": "Provence-Alpes-Côte d'Azur",
        "count": 1548
      },
      {
        "code": "11",
        "label": "Île-de-France",
        "count": 1214
      },
      {
        "code": "32",
        "label": "Hauts-de-France",
        "count": 1140
      },
      {
        "code": "27",
        "label": "Bourgogne-Franche-Comté",
        "count": 1015
      },
      {
        "code": "24",
        "label": "Centre-Val de Loire",
        "count": 826
      },
      {
        "code": "28",
        "label": "Normandie",
        "count": 753
      },
      {
        "code": "04",
        "label": "La Réunion",
        "count": 145
      },
      {
        "code": "01",
        "label": "Guadeloupe",
        "count": 88
      },
      {
        "code": "02",
        "label": "Martinique",
        "count": 76
      },
      {
        "code": "06",
        "label": "Mayotte",
        "count": 63
      },
      {
        "code": "03",
        "label": "Guyane",
        "count": 62
      },
      {
        "code": "94",
        "label": "Corse",
        "count": 5
      }
    ],
    "procedures": [
      {
        "code": "Procédure adaptée",
        "label": "Procédure adaptée",
        "count": 16102
      },
      {
        "code": "Appel d'offres ouvert",
        "label": "Appel d'offres ouvert",
        "count": 4178
      },
      {
        "code": "Marché passé sans publicité ni mise en concurrence préalable",
        "label": "Marché passé sans publicité ni mise en concurrence préalable",
        "count": 592
      },
      {
        "code": "Procédure avec négociation",
        "label": "Procédure avec négociation",
        "count": 350
      },
      {
        "code": "Appel d'offres restreint",
        "label": "Appel d'offres restreint",
        "count": 86
      },
      {
        "code": "Dialogue compétitif",
        "label": "Dialogue compétitif",
        "count": 26
      }
    ],
    "quality": {
      "preCurrentRowCount": 21373,
      "rejectedNonCurrentRowCount": 0,
      "distinctContractKeyCount": 21373,
      "uidFallbackCount": 0,
      "positiveAmountCount": 21226,
      "missingAmountCount": 21,
      "nonPositiveAmountCount": 126,
      "buyerIdCount": 21373,
      "procedureCount": 21334,
      "executionLocationCount": 21373,
      "executionRegionCount": 20263,
      "contractSupplierPairCount": 28918,
      "amountCoveragePercent": 99.31,
      "buyerIdCoveragePercent": 100,
      "procedureCoveragePercent": 99.82,
      "executionRegionCoveragePercent": 94.81,
      "supplierCategoryCoveragePercent": 97.46
    }
  },
  "quality": {
    "readyForEditorial": true,
    "checks": [
      {
        "key": "boamp_minimum_sample",
        "label": "Échantillon BOAMP suffisant",
        "status": "PASS",
        "actual": 4939,
        "threshold": ">= 20"
      },
      {
        "key": "boamp_unique_external_ids",
        "label": "Identifiants BOAMP uniques",
        "status": "PASS",
        "actual": 4939,
        "threshold": "= 4939"
      },
      {
        "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": 97.41,
        "threshold": ">= 95 %"
      },
      {
        "key": "boamp_execution_region_coverage",
        "label": "Région d'exécution BOAMP exploitable",
        "status": "WARN",
        "actual": 71.76,
        "threshold": ">= 90 % pour publier le classement ; >= 60 % avec masquage"
      },
      {
        "key": "decp_minimum_sample",
        "label": "Échantillon DECP suffisant",
        "status": "PASS",
        "actual": 21373,
        "threshold": ">= 20"
      },
      {
        "key": "decp_unique_contracts",
        "label": "Identités marché DECP uniques",
        "status": "PASS",
        "actual": 21373,
        "threshold": "= 21373"
      },
      {
        "key": "decp_amount_coverage",
        "label": "Montants DECP positifs exploitables",
        "status": "PASS",
        "actual": 99.31,
        "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.82,
        "threshold": ">= 95 %"
      },
      {
        "key": "decp_execution_region_coverage",
        "label": "Région d'exécution DECP exploitable",
        "status": "PASS",
        "actual": 94.81,
        "threshold": ">= 90 %"
      },
      {
        "key": "decp_supplier_category_coverage",
        "label": "Catégories de titulaires exploitables",
        "status": "PASS",
        "actual": 97.46,
        "threshold": ">= 90 %"
      }
    ]
  },
  "contentHash": "bcd6778dc0a91a0fce8a73924b126d6cd076f8b0b3b7563e846a2d927e8d791a",
  "openData": {
    "schemaVersion": "1.0",
    "license": "Licence Ouverte 2.0",
    "canonicalUrl": "https://semagora.com/barometres/marches-publics-travaux-2026-t2",
    "generatedFromSnapshotHash": "bcd6778dc0a91a0fce8a73924b126d6cd076f8b0b3b7563e846a2d927e8d791a",
    "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."
  }
}
