{
  "department": "94",
  "rulesetVersion": 10,
  "crawlerVersion": 2,
  "crawledOn": "2026-10-19",
  "communes": {
    "total": 47,
    "withWebsite": 47,
    "reachable": 47,
    "pagesCrawled": 1345,
    "delegatedExcluded": 0
  },
  "checks": [
    {
      "code": "A11Y_DECLARATION",
      "kind": "LEGAL",
      "impact": "HIGH",
      "obligationCode": "A11Y_DECL",
      "pass": 30,
      "fail": 17,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 5
    },
    {
      "code": "A11Y_HOMEPAGE_MENTION",
      "kind": "LEGAL",
      "impact": "HIGH",
      "obligationCode": "A11Y_DECL",
      "pass": 17,
      "fail": 30,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 29
    },
    {
      "code": "A11Y_SCHEMA",
      "kind": "LEGAL",
      "impact": "HIGH",
      "obligationCode": "A11Y_DECL",
      "pass": 11,
      "fail": 30,
      "unknown": 6,
      "notApplicable": 0,
      "failHighConfidence": 28
    },
    {
      "code": "DPO_CONTACT",
      "kind": "LEGAL",
      "impact": "HIGH",
      "obligationCode": "DPO",
      "pass": 28,
      "fail": 19,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 16
    },
    {
      "code": "RGPD_POLICY",
      "kind": "LEGAL",
      "impact": "MEDIUM",
      "obligationCode": "RGPD_INFO",
      "pass": 47,
      "fail": 0,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 0
    },
    {
      "code": "MENTIONS_LEGALES",
      "kind": "LEGAL",
      "impact": "MEDIUM",
      "obligationCode": "LCEN",
      "pass": 47,
      "fail": 0,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 0
    },
    {
      "code": "ACTES_PUBLICATION",
      "kind": "LEGAL",
      "impact": "MEDIUM",
      "obligationCode": "ACTES",
      "pass": 38,
      "fail": 8,
      "unknown": 0,
      "notApplicable": 1,
      "failHighConfidence": 4
    },
    {
      "code": "CNIL_COOKIES",
      "kind": "LEGAL",
      "impact": "MEDIUM",
      "obligationCode": "RGPD_INFO",
      "pass": 35,
      "fail": 12,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 12
    },
    {
      "code": "NO_SITE",
      "kind": "TECHNICAL",
      "impact": "HIGH",
      "obligationCode": null,
      "pass": 47,
      "fail": 0,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 0
    },
    {
      "code": "HTTPS",
      "kind": "TECHNICAL",
      "impact": "HIGH",
      "obligationCode": null,
      "pass": 46,
      "fail": 1,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 1
    },
    {
      "code": "MOBILE_VIEWPORT",
      "kind": "TECHNICAL",
      "impact": "HIGH",
      "obligationCode": null,
      "pass": 46,
      "fail": 1,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 1
    },
    {
      "code": "HTML_WEIGHT",
      "kind": "TECHNICAL",
      "impact": "LOW",
      "obligationCode": null,
      "pass": 41,
      "fail": 6,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 6
    },
    {
      "code": "LAST_UPDATED",
      "kind": "TECHNICAL",
      "impact": "MEDIUM",
      "obligationCode": null,
      "pass": 46,
      "fail": 1,
      "unknown": 0,
      "notApplicable": 0,
      "failHighConfidence": 1
    },
    {
      "code": "CMS_FINGERPRINT",
      "kind": "TECHNICAL",
      "impact": "LOW",
      "obligationCode": null,
      "pass": 43,
      "fail": 0,
      "unknown": 4,
      "notApplicable": 0,
      "failHighConfidence": 0
    },
    {
      "code": "CMS_OUTDATED",
      "kind": "TECHNICAL",
      "impact": "HIGH",
      "obligationCode": null,
      "pass": 0,
      "fail": 9,
      "unknown": 38,
      "notApplicable": 0,
      "failHighConfidence": 9
    },
    {
      "code": "EMAIL_DOMAIN",
      "kind": "TECHNICAL",
      "impact": "MEDIUM",
      "obligationCode": null,
      "pass": 32,
      "fail": 0,
      "unknown": 15,
      "notApplicable": 0,
      "failHighConfidence": 0
    }
  ],
  "populationBands": [
    {
      "band": "moins de 500",
      "communes": 0,
      "declarationMissing": 0
    },
    {
      "band": "500 à 1 999",
      "communes": 0,
      "declarationMissing": 0
    },
    {
      "band": "2 000 à 4 999",
      "communes": 5,
      "declarationMissing": 3
    },
    {
      "band": "5 000 à 9 999",
      "communes": 2,
      "declarationMissing": 1
    },
    {
      "band": "10 000 et plus",
      "communes": 40,
      "declarationMissing": 13
    }
  ],
  "cms": [
    {
      "label": "wordpress",
      "count": 26
    },
    {
      "label": "typo3",
      "count": 8
    },
    {
      "label": "drupal",
      "count": 6
    },
    {
      "label": "inconnu",
      "count": 4
    },
    {
      "label": "joomla",
      "count": 2
    },
    {
      "label": "spip",
      "count": 1
    }
  ],
  "freshness": [
    {
      "label": "moins de 6 mois",
      "count": 45
    },
    {
      "label": "6 à 12 mois",
      "count": 1
    },
    {
      "label": "1 à 2 ans",
      "count": 1
    },
    {
      "label": "2 à 5 ans",
      "count": 0
    },
    {
      "label": "plus de 5 ans",
      "count": 0
    }
  ],
  "obligationsMet": [
    {
      "label": "aucune",
      "count": 0
    },
    {
      "label": "1 sur 6",
      "count": 0
    },
    {
      "label": "2 sur 6",
      "count": 10
    },
    {
      "label": "3 sur 6",
      "count": 8
    },
    {
      "label": "4 sur 6",
      "count": 12
    },
    {
      "label": "5 sur 6",
      "count": 14
    },
    {
      "label": "6 sur 6",
      "count": 3
    }
  ],
  "obligationsMeasured": 47,
  "unreachable": [
    {
      "label": "aucun site connu",
      "count": 0
    },
    {
      "label": "site en ligne, accès refusé au robot",
      "count": 0
    },
    {
      "label": "adresse publiée en erreur",
      "count": 0
    },
    {
      "label": "erreur du serveur au moment du relevé",
      "count": 0
    },
    {
      "label": "domaine ou certificat hors service",
      "count": 0
    },
    {
      "label": "autre",
      "count": 0
    }
  ],
  "map": [
    {
      "insee": "94001",
      "name": "Ablon-sur-Seine",
      "lat": 48.7236,
      "lon": 2.4229,
      "population": 5988,
      "declaration": "FAIL",
      "obligationsMet": 3,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "MEDIUM",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://ablon-sur-seine.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ablon-sur-seine.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ablon-sur-seine.fr/"
        }
      ]
    },
    {
      "insee": "94002",
      "name": "Alfortville",
      "lat": 48.7963,
      "lon": 2.4214,
      "population": 45531,
      "declaration": "FAIL",
      "obligationsMet": 4,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://alfortville.fr/mentions-legales"
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://alfortville.fr/mentions-legales"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://alfortville.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://alfortville.fr/"
        }
      ]
    },
    {
      "insee": "94003",
      "name": "Arcueil",
      "lat": 48.8053,
      "lon": 2.3328,
      "population": 22200,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 32,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://arcueil.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://arcueil.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://arcueil.fr/accessibilite"
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://arcueil.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://arcueil.fr/"
        }
      ]
    },
    {
      "insee": "94004",
      "name": "Boissy-Saint-Léger",
      "lat": 48.7453,
      "lon": 2.5251,
      "population": 17325,
      "declaration": "FAIL",
      "obligationsMet": 3,
      "obligationsDecided": 6,
      "pagesCrawled": 28,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://ville-boissy.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-boissy.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-boissy.fr/"
        }
      ]
    },
    {
      "insee": "94011",
      "name": "Bonneuil-sur-Marne",
      "lat": 48.7721,
      "lon": 2.493,
      "population": 18270,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 31,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-bonneuil.fr/746/declaration-d-accessibilite.htm"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-bonneuil.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-bonneuil.fr/746/declaration-d-accessibilite.htm"
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-bonneuil.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-bonneuil.fr/"
        }
      ]
    },
    {
      "insee": "94015",
      "name": "Bry-sur-Marne",
      "lat": 48.8392,
      "lon": 2.5224,
      "population": 18503,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://brysurmarne.fr/declaration-daccessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://brysurmarne.fr/declaration-daccessibilite"
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://brysurmarne.fr/protection-des-donnees"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://brysurmarne.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://brysurmarne.fr/"
        }
      ]
    },
    {
      "insee": "94016",
      "name": "Cachan",
      "lat": 48.7914,
      "lon": 2.3318,
      "population": 31103,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 31,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-cachan.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-cachan.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://ville-cachan.fr/mentions-legales"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-cachan.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-cachan.fr/"
        }
      ]
    },
    {
      "insee": "94017",
      "name": "Champigny-sur-Marne",
      "lat": 48.8173,
      "lon": 2.5206,
      "population": 78072,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 6,
      "pagesCrawled": 33,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://champignysurmarne.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://champignysurmarne.fr/mentions-legales"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://champignysurmarne.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://champignysurmarne.fr/"
        }
      ]
    },
    {
      "insee": "94018",
      "name": "Charenton-le-Pont",
      "lat": 48.8229,
      "lon": 2.405,
      "population": 28830,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 28,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "http://charentonlepont.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "http://charentonlepont.fr/accessibilite"
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "http://charentonlepont.fr/mentions_legales"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "http://charentonlepont.fr/mentions_legales"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "http://charentonlepont.fr/accessibilite"
        }
      ]
    },
    {
      "insee": "94019",
      "name": "Chennevières-sur-Marne",
      "lat": 48.7951,
      "lon": 2.5443,
      "population": 18710,
      "declaration": "FAIL",
      "obligationsMet": 2,
      "obligationsDecided": 6,
      "pagesCrawled": 29,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://chennevieres.com/liens-footer/mentions-legales"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://chennevieres.com/"
        }
      ]
    },
    {
      "insee": "94021",
      "name": "Chevilly-Larue",
      "lat": 48.7679,
      "lon": 2.3507,
      "population": 19826,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 29,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-chevilly-larue.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-chevilly-larue.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-chevilly-larue.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-chevilly-larue.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-chevilly-larue.fr/"
        }
      ]
    },
    {
      "insee": "94022",
      "name": "Choisy-le-Roi",
      "lat": 48.7635,
      "lon": 2.4202,
      "population": 45946,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 5,
      "pagesCrawled": 28,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://choisyleroi.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://choisyleroi.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "UNKNOWN",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://choisyleroi.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://choisyleroi.fr/"
        }
      ]
    },
    {
      "insee": "94028",
      "name": "Créteil",
      "lat": 48.7845,
      "lon": 2.4523,
      "population": 93397,
      "declaration": "FAIL",
      "obligationsMet": 2,
      "obligationsDecided": 6,
      "pagesCrawled": 6,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "MEDIUM",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "MEDIUM",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "MEDIUM",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-creteil.fr/portail-familles"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-creteil.fr/"
        }
      ]
    },
    {
      "insee": "94033",
      "name": "Fontenay-sous-Bois",
      "lat": 48.8503,
      "lon": 2.4736,
      "population": 53757,
      "declaration": "FAIL",
      "obligationsMet": 2,
      "obligationsDecided": 6,
      "pagesCrawled": 2,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "MEDIUM",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "MEDIUM",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "MEDIUM",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://fontenay.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://fontenay.fr/"
        }
      ]
    },
    {
      "insee": "94034",
      "name": "Fresnes",
      "lat": 48.7572,
      "lon": 2.3263,
      "population": 29528,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://fresnes94.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://fresnes94.fr/accessibilite"
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://fresnes94.fr/protection-des-donnees"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://fresnes94.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://fresnes94.fr/"
        }
      ]
    },
    {
      "insee": "94037",
      "name": "Gentilly",
      "lat": 48.812,
      "lon": 2.3426,
      "population": 19963,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 29,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-gentilly.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-gentilly.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://ville-gentilly.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-gentilly.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-gentilly.fr/"
        }
      ]
    },
    {
      "insee": "94038",
      "name": "L'Haÿ-les-Roses",
      "lat": 48.7777,
      "lon": 2.3416,
      "population": 31188,
      "declaration": "FAIL",
      "obligationsMet": 3,
      "obligationsDecided": 6,
      "pagesCrawled": 28,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://lhaylesroses.fr/mentions-legales"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://lhaylesroses.fr/mentions-legales"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://lhaylesroses.fr/"
        }
      ]
    },
    {
      "insee": "94041",
      "name": "Ivry-sur-Seine",
      "lat": 48.8125,
      "lon": 2.3872,
      "population": 65064,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 5,
      "pagesCrawled": 33,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ivry94.fr/accessibilite.htm"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ivry94.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "UNKNOWN",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ivry94.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ivry94.fr/"
        }
      ]
    },
    {
      "insee": "94042",
      "name": "Joinville-le-Pont",
      "lat": 48.8199,
      "lon": 2.4685,
      "population": 20525,
      "declaration": "FAIL",
      "obligationsMet": 3,
      "obligationsDecided": 6,
      "pagesCrawled": 29,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://joinville-le-pont.fr/politique-de-gestion-des-cookies"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://joinville-le-pont.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://joinville-le-pont.fr/"
        }
      ]
    },
    {
      "insee": "94043",
      "name": "Le Kremlin-Bicêtre",
      "lat": 48.8087,
      "lon": 2.356,
      "population": 24110,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 29,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://kremlinbicetre.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://kremlinbicetre.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://kremlinbicetre.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://kremlinbicetre.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://kremlinbicetre.fr/"
        }
      ]
    },
    {
      "insee": "94044",
      "name": "Limeil-Brévannes",
      "lat": 48.7463,
      "lon": 2.4924,
      "population": 27406,
      "declaration": "PASS",
      "obligationsMet": 3,
      "obligationsDecided": 6,
      "pagesCrawled": 29,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://limeil-brevannes.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://limeil-brevannes.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://limeil-brevannes.fr/"
        }
      ]
    },
    {
      "insee": "94046",
      "name": "Maisons-Alfort",
      "lat": 48.8017,
      "lon": 2.44,
      "population": 56799,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 5,
      "pagesCrawled": 31,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://maisons-alfort.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "UNKNOWN",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://maisons-alfort.fr/donnees-personnelles-et-cookies"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://maisons-alfort.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://maisons-alfort.fr/"
        }
      ]
    },
    {
      "insee": "94047",
      "name": "Mandres-les-Roses",
      "lat": 48.7068,
      "lon": 2.5477,
      "population": 4922,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://mandreslesroses.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://mandreslesroses.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://mandreslesroses.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://mandreslesroses.fr/"
        }
      ]
    },
    {
      "insee": "94048",
      "name": "Marolles-en-Brie",
      "lat": 48.7385,
      "lon": 2.5539,
      "population": 4781,
      "declaration": "FAIL",
      "obligationsMet": 2,
      "obligationsDecided": 6,
      "pagesCrawled": 27,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://marollesenbrie.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://marollesenbrie.fr/"
        }
      ]
    },
    {
      "insee": "94052",
      "name": "Nogent-sur-Marne",
      "lat": 48.837,
      "lon": 2.4811,
      "population": 32455,
      "declaration": "FAIL",
      "obligationsMet": 3,
      "obligationsDecided": 5,
      "pagesCrawled": 29,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "UNKNOWN",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://ville-nogentsurmarne.com/mentions-legales"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-nogentsurmarne.com/mentions-legales"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-nogentsurmarne.com/"
        }
      ]
    },
    {
      "insee": "94053",
      "name": "Noiseau",
      "lat": 48.7757,
      "lon": 2.556,
      "population": 4628,
      "declaration": "FAIL",
      "obligationsMet": 2,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://noiseau.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://noiseau.fr/"
        }
      ]
    },
    {
      "insee": "94054",
      "name": "Orly",
      "lat": 48.7402,
      "lon": 2.403,
      "population": 24658,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://mairie-orly.fr/systeme/declaration-accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://mairie-orly.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://mairie-orly.fr/systeme/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://mairie-orly.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://mairie-orly.fr/"
        }
      ]
    },
    {
      "insee": "94055",
      "name": "Ormesson-sur-Marne",
      "lat": 48.7873,
      "lon": 2.5371,
      "population": 10977,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 6,
      "pagesCrawled": 29,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ormesson.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ormesson.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ormesson.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ormesson.fr/"
        }
      ]
    },
    {
      "insee": "94056",
      "name": "Périgny",
      "lat": 48.6974,
      "lon": 2.562,
      "population": 2724,
      "declaration": "FAIL",
      "obligationsMet": 2,
      "obligationsDecided": 6,
      "pagesCrawled": 29,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://perigny-sur-yerres.fr/mentions-legales"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://perigny-sur-yerres.fr/"
        }
      ]
    },
    {
      "insee": "94058",
      "name": "Le Perreux-sur-Marne",
      "lat": 48.8433,
      "lon": 2.5045,
      "population": 35260,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 6,
      "pagesCrawled": 28,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://leperreux94.fr/page/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://leperreux94.fr/page/mentions-legales"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://leperreux94.fr/page/mentions-legales"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://leperreux94.fr/"
        }
      ]
    },
    {
      "insee": "94059",
      "name": "Le Plessis-Trévise",
      "lat": 48.808,
      "lon": 2.5763,
      "population": 21112,
      "declaration": "FAIL",
      "obligationsMet": 3,
      "obligationsDecided": 5,
      "pagesCrawled": 28,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "UNKNOWN",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://leplessistrevise.fr/mentions-legales"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://leplessistrevise.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://leplessistrevise.fr/"
        }
      ]
    },
    {
      "insee": "94060",
      "name": "La Queue-en-Brie",
      "lat": 48.7769,
      "lon": 2.5855,
      "population": 12241,
      "declaration": "FAIL",
      "obligationsMet": 2,
      "obligationsDecided": 6,
      "pagesCrawled": 27,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://laqueueenbrie.fr/mentions-legales"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://laqueueenbrie.fr/"
        }
      ]
    },
    {
      "insee": "94065",
      "name": "Rungis",
      "lat": 48.7493,
      "lon": 2.3499,
      "population": 5611,
      "declaration": "PASS",
      "obligationsMet": 6,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://rungis.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://rungis.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://rungis.fr/accessibilite"
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://rungis.fr/mentions-legales"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://rungis.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://rungis.fr/"
        }
      ]
    },
    {
      "insee": "94067",
      "name": "Saint-Mandé",
      "lat": 48.8414,
      "lon": 2.4195,
      "population": 21071,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://saintmande.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://saintmande.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://saintmande.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://saintmande.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://saintmande.fr/"
        }
      ]
    },
    {
      "insee": "94068",
      "name": "Saint-Maur-des-Fossés",
      "lat": 48.7999,
      "lon": 2.4921,
      "population": 76572,
      "declaration": "PASS",
      "obligationsMet": 3,
      "obligationsDecided": 6,
      "pagesCrawled": 32,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://saint-maur.com/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://saint-maur.com/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://saint-maur.com/"
        }
      ]
    },
    {
      "insee": "94069",
      "name": "Saint-Maurice",
      "lat": 48.8179,
      "lon": 2.4423,
      "population": 14506,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 33,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-saint-maurice.fr/362/politiques-de-confidentialite.htm"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-saint-maurice.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://ville-saint-maurice.fr/138/mentions-legales.htm"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-saint-maurice.fr/138/mentions-legales.htm"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-saint-maurice.fr/"
        }
      ]
    },
    {
      "insee": "94070",
      "name": "Santeny",
      "lat": 48.7362,
      "lon": 2.5771,
      "population": 3913,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 6,
      "pagesCrawled": 29,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://mairie-santeny.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://mairie-santeny.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://mairie-santeny.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://mairie-santeny.fr/"
        }
      ]
    },
    {
      "insee": "94071",
      "name": "Sucy-en-Brie",
      "lat": 48.7688,
      "lon": 2.5374,
      "population": 27764,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 31,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-sucy.fr/declaration-daccessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-sucy.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-sucy.fr/declaration-daccessibilite"
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-sucy.fr/mentions-legales"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-sucy.fr/"
        }
      ]
    },
    {
      "insee": "94073",
      "name": "Thiais",
      "lat": 48.7605,
      "lon": 2.3869,
      "population": 32918,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 6,
      "pagesCrawled": 31,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-thiais.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-thiais.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-thiais.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://ville-thiais.fr/"
        }
      ]
    },
    {
      "insee": "94074",
      "name": "Valenton",
      "lat": 48.7497,
      "lon": 2.46,
      "population": 14406,
      "declaration": "FAIL",
      "obligationsMet": 2,
      "obligationsDecided": 6,
      "pagesCrawled": 27,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://valenton.fr/mentions-legales"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://valenton.fr/"
        }
      ]
    },
    {
      "insee": "94075",
      "name": "Villecresnes",
      "lat": 48.7221,
      "lon": 2.5328,
      "population": 11647,
      "declaration": "FAIL",
      "obligationsMet": 2,
      "obligationsDecided": 6,
      "pagesCrawled": 28,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villecresnes.fr/fr"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villecresnes.fr/fr"
        }
      ]
    },
    {
      "insee": "94076",
      "name": "Villejuif",
      "lat": 48.7934,
      "lon": 2.3603,
      "population": 60183,
      "declaration": "PASS",
      "obligationsMet": 6,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villejuif.fr/accessibilite-partiellement-conforme"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villejuif.fr/accueil"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villejuif.fr/accessibilite-partiellement-conforme"
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://villejuif.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villejuif.fr/accueil"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villejuif.fr/accueil"
        }
      ]
    },
    {
      "insee": "94077",
      "name": "Villeneuve-le-Roi",
      "lat": 48.732,
      "lon": 2.4076,
      "population": 21000,
      "declaration": "PASS",
      "obligationsMet": 5,
      "obligationsDecided": 6,
      "pagesCrawled": 33,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villeneuve-le-roi.fr/declaration-daccessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villeneuve-le-roi.fr/accessibilite"
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "MEDIUM",
          "url": "https://villeneuve-le-roi.fr/protection-des-donnees"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villeneuve-le-roi.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villeneuve-le-roi.fr/declaration-daccessibilite"
        }
      ]
    },
    {
      "insee": "94078",
      "name": "Villeneuve-Saint-Georges",
      "lat": 48.7389,
      "lon": 2.4493,
      "population": 36221,
      "declaration": "FAIL",
      "obligationsMet": 2,
      "obligationsDecided": 5,
      "pagesCrawled": 28,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "FAIL",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "UNKNOWN",
          "confidence": "LOW",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "MEDIUM",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villeneuve-saint-georges.fr/mentions-legales"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villeneuve-saint-georges.fr/"
        }
      ]
    },
    {
      "insee": "94079",
      "name": "Villiers-sur-Marne",
      "lat": 48.8278,
      "lon": 2.5482,
      "population": 33162,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 6,
      "pagesCrawled": 30,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villiers94.fr/accessibilite-non-conforme"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villiers94.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villiers94.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://villiers94.fr/"
        }
      ]
    },
    {
      "insee": "94080",
      "name": "Vincennes",
      "lat": 48.8471,
      "lon": 2.4383,
      "population": 48193,
      "declaration": "PASS",
      "obligationsMet": 6,
      "obligationsDecided": 6,
      "pagesCrawled": 28,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://vincennes.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://vincennes.fr/"
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://vincennes.fr/accessibilite"
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://vincennes.fr/mentions-legales-et-politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://vincennes.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://vincennes.fr/"
        }
      ]
    },
    {
      "insee": "94081",
      "name": "Vitry-sur-Seine",
      "lat": 48.7893,
      "lon": 2.3951,
      "population": 93963,
      "declaration": "PASS",
      "obligationsMet": 4,
      "obligationsDecided": 6,
      "pagesCrawled": 33,
      "readOn": "2026-10-19",
      "checks": [
        {
          "code": "A11Y_DECLARATION",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://vitry94.fr/accessibilite"
        },
        {
          "code": "A11Y_HOMEPAGE_MENTION",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "A11Y_SCHEMA",
          "status": "FAIL",
          "confidence": "HIGH",
          "url": null
        },
        {
          "code": "DPO_CONTACT",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://vitry94.fr/politique-de-confidentialite"
        },
        {
          "code": "RGPD_POLICY",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://vitry94.fr/"
        },
        {
          "code": "MENTIONS_LEGALES",
          "status": "PASS",
          "confidence": "HIGH",
          "url": "https://vitry94.fr/"
        }
      ]
    }
  ]
}
