c0mm0.com — the continuously verified register of European data

Register record·API·FRVERIFIED · checked 2d ago
R

Detailed results of the second round of the 2021 regional electionsRésultats du second tour des élections régionales 2021 - version détaillée

Résultats du second tour des élections régionales 2021 - version détailléeDetailed results of the second round of the 2021 regional elections

APIExecutable4/7Query nowOpen workbenchSubscribe🇫🇷France

Dataset providing detailed results of the second round of the 2021 French regional elections in Strasbourg. The data are drawn from official polling station tallies and are described as fully reliable. Each row corresponds to one candidate's result at a single polling station. The dataset also includes the geographic mapping of voting sectors, allowing results to be linked to specific areas of the city. It is published via the Strasbourg open-data portal.”Résultat aux élections régionales de 2021 à Strasbourg. Les données sont issues des décomptes des bureaux de vote et fiables à 100%. Une ligne du tableau correspond au résultat d'un candidat sur un bureau de vote. Le jeu de données intégre la cartographie des secteurs de vote.

government
45
fair

Weighted across five axes. Tap a ring for what it measures.

Data schema (52 fields)

Filterable via the API (50)
bur_distcod_bureaucod_cantoncod_circonscod_comm_extcod_communecod_lib_bureaucod_lieucod_listecod_particod_postalcod_scrutinlib_adr1lib_bureaulib_listelib_liste_afficheelib_partilibelle_secteurmillesimenb_blancnb_bureaux_depouilles_cantonnb_bureaux_depouilles_tournb_emargenb_enveloppenb_inscritnb_nulnb_procuratnb_sans_enveloppenb_suffrage_exprimenb_voixnb_votantnomnom_candidat1_listenum_listenum_ordrenum_tourtotal_nb_blancs_cantontotal_nb_blancs_tourtotal_nb_inscrits_cantontotal_nb_inscrits_tourtotal_nb_nuls_cantontotal_nb_nuls_tourtotal_nb_suffrages_exprimes_cantontotal_nb_suffrages_exprimes_tourtotal_nb_votants_cantontotal_nb_votants_tourtraitement_datetraitement_heurenb_bureauxnb_bureaux_canton

Click a field to see example values.

FillFieldTypeDescription
—geo_point_2dGeo Pointgeo_point_2dGeographic coordinates (latitude/longitude) of the polling station.Geographic coordinates (latitude/longitude) of the polling station.
—geo_shapeShapegeo_shapeGeographic boundary shape of the voting sector.Geographic boundary shape of the voting sector.
—bur_distFilterable via the APIBur disttextDistance-related identifier for the polling station, if applicable.Distance-related identifier for the polling station, if applicable.
—cod_bureauFilterable via the APICod bureautextPolling station code.Polling station code.
—cod_cantonFilterable via the APICod cantontextCanton code where the polling station is located.Canton code where the polling station is located.
—cod_circonsFilterable via the APICod circonstextElectoral constituency code.Electoral constituency code.
—cod_comm_extFilterable via the APICod comm exttextExternal commune code, if applicable.External commune code, if applicable.
—cod_communeFilterable via the APICod communetextMunicipality (commune) code.Municipality (commune) code.
—cod_lib_bureauFilterable via the APICod lib bureautextCombined code and label of the polling station.Combined code and label of the polling station.
—cod_lieuFilterable via the APICod lieutextCode of the polling location.Code of the polling location.
100%cod_listeFilterable via the APICod listetextCode identifying the candidate list.Code identifying the candidate list.
100%cod_partiFilterable via the APICod partitextCode identifying the political party.Code identifying the political party.
100%cod_postalFilterable via the APICod postaltextPostal code of the polling station location.Postal code of the polling station location.
100%cod_scrutinFilterable via the APICod scrutintextCode identifying the election ballot.Code identifying the election ballot.
100%lib_adr1Filterable via the APILib adr1textStreet address of the polling station.Street address of the polling station.
100%lib_bureauFilterable via the APILib bureautextName of the polling station.Name of the polling station.
100%lib_listeFilterable via the APILib listetextFull name of the candidate list.Full name of the candidate list.
100%lib_liste_afficheeFilterable via the APILib liste afficheetextDisplayed name of the candidate list with leading candidate.Displayed name of the candidate list with leading candidate.
100%lib_partiFilterable via the APILib partitextName of the political party.Name of the political party.
100%libelle_secteurFilterable via the APILibelle secteurtextLabel of the voting sector, combining code and name.Label of the voting sector, combining code and name.
100%millesimeFilterable via the APItextYear of the election.Year of the election.
100%nb_blancFilterable via the APINb blancintNumber of blank ballots cast at the polling station.Number of blank ballots cast at the polling station.
100%nb_bureaux_depouilles_cantonFilterable via the APINb bureaux depouilles cantontextNumber of polling stations counted in the canton.Number of polling stations counted in the canton.
100%nb_bureaux_depouilles_tourFilterable via the APINb bureaux depouilles tourtextNumber of polling stations counted in this round.Number of polling stations counted in this round.
100%nb_emargeFilterable via the APINb emargeintNumber of voters who signed in at the polling station.Number of voters who signed in at the polling station.
0%nb_enveloppeFilterable via the APINb enveloppetextNumber of ballot envelopes counted.Number of ballot envelopes counted.
100%nb_inscritFilterable via the APINb inscritintNumber of registered voters at the polling station.Number of registered voters at the polling station.
100%nb_nulFilterable via the APINb nulintNumber of invalid (null) votes at the polling station.Number of invalid (null) votes at the polling station.
0%nb_procuratFilterable via the APINb procuratintNumber of votes cast by proxy.Number of votes cast by proxy.
0%nb_sans_enveloppeFilterable via the APINb sans enveloppetextNumber of ballots found without an envelope.Number of ballots found without an envelope.
100%nb_suffrage_exprimeFilterable via the APINb suffrage exprimeintNumber of valid votes cast at the polling station.Number of valid votes cast at the polling station.
100%nb_voixFilterable via the APINb voixintNumber of votes received by the candidate list.Number of votes received by the candidate list.
100%nb_votantFilterable via the APINb votantintNumber of voters who voted at the polling station.Number of voters who voted at the polling station.
99.3%nomFilterable via the APItextName of the polling station.Name of the polling station.
100%nom_candidat1_listeFilterable via the APINom candidat1 listetextName of the lead candidate on the list.Name of the lead candidate on the list.
100%num_listeFilterable via the APINum listetextOrder number of the candidate list.Order number of the candidate list.
100%num_ordreFilterable via the APINum ordreintRanking order of the candidate list's results.Ranking order of the candidate list's results.
100%num_tourFilterable via the APINum tourtextRound number of the election.Round number of the election.
100%total_nb_blancs_cantonFilterable via the APITotal nb blancs cantontextTotal number of blank ballots across the canton.Total number of blank ballots across the canton.
100%total_nb_blancs_tourFilterable via the APITotal nb blancs tourtextTotal number of blank ballots for this round.Total number of blank ballots for this round.
100%total_nb_inscrits_cantonFilterable via the APITotal nb inscrits cantontextTotal number of registered voters in the canton.Total number of registered voters in the canton.
100%total_nb_inscrits_tourFilterable via the APITotal nb inscrits tourtextTotal number of registered voters for this round.Total number of registered voters for this round.
100%total_nb_nuls_cantonFilterable via the APITotal nb nuls cantontextTotal number of invalid votes in the canton.Total number of invalid votes in the canton.
100%total_nb_nuls_tourFilterable via the APITotal nb nuls tourtextTotal number of invalid votes for this round.Total number of invalid votes for this round.
100%total_nb_suffrages_exprimes_cantonFilterable via the APITotal nb suffrages exprimes cantontextTotal number of valid votes in the canton.Total number of valid votes in the canton.
100%total_nb_suffrages_exprimes_tourFilterable via the APITotal nb suffrages exprimes tourtextTotal number of valid votes for this round.Total number of valid votes for this round.
100%total_nb_votants_cantonFilterable via the APITotal nb votants cantontextTotal number of voters in the canton.Total number of voters in the canton.
100%total_nb_votants_tourFilterable via the APITotal nb votants tourtextTotal number of voters for this round.Total number of voters for this round.
100%traitement_dateFilterable via the APITraitement datedateDate the results were processed.Date the results were processed.
100%traitement_heureFilterable via the APITraitement heuretextTime the results were processed.Time the results were processed.
100%nb_bureauxFilterable via the APINb bureauxtextTotal number of polling stations in the commune.Total number of polling stations in the commune.
100%nb_bureaux_cantonFilterable via the APINb bureaux cantontextTotal number of polling stations in the canton.Total number of polling stations in the canton.

Schema captured from opendatasoft 3 days ago.

Query the data

Pick columns and a sort, then fetch a live preview straight from the source. Choose an API-filterable column (marked ▾) under “Where” to pick from its list of values.

=

Sample data (5 records)

Record 1nom: Pavillon Joséphine · nb_nul: 0
{
  "nom": "Pavillon Joséphine",
  "nb_nul": 0,
  "nb_voix": 61,
  "bur_dist": null,
  "cod_lieu": "005",
  "lib_adr1": "Orangerie",
  "nb_blanc": 1,
  "num_tour": "2",
  "cod_liste": "02",
  "cod_parti": "LDVC",
  "geo_shape": "[large value omitted]",
  "lib_liste": "La force de nos territoires",
  "lib_parti": "La force de nos territoires",
  "millesime": "2021",
  "nb_emarge": 337,
  "nb_votant": 337,
  "num_liste": "01",
  "num_ordre": 1,
  "cod_bureau": "504",
  "cod_canton": "5",
  "cod_postal": "67000",
  "lib_bureau": "Pavillon Joséphine",
  "nb_bureaux": "144",
  "nb_inscrit": 761,
  "cod_circons": "01",
  "cod_commune": "67482",
  "cod_scrutin": "R0621",
  "nb_procurat": null,
  "cod_comm_ext": "-1",
  "geo_point_2d": {
    "lat": 48.5922542705,
    "lon": 7.77465214765
  },
  "nb_enveloppe": null,
  "cod_lib_bureau": "504-Pavillon Joséphine",
  "libelle_secteur": "504 - Pavillon Joséphine",
  "traitement_date": "2021-06-27",
  "traitement_heure": "22:19",
  "nb_bureaux_canton": "23",
  "nb_sans_enveloppe": null,
  "lib_liste_affichee": "Brigitte KLINKERT (Divers centre)",
  "total_nb_nuls_tour": "357",
  "nb_suffrage_exprime": 336,
  "nom_candidat1_liste": "Brigitte KLINKERT",
  "total_nb_blancs_tour": "691",
  "total_nb_nuls_canton": "48",
  "total_nb_votants_tour": "42293",
  "total_nb_blancs_canton": "88",
  "total_nb_inscrits_tour": "139881",
  "total_nb_votants_canton": "7058",
  "total_nb_inscrits_canton": "19720",
  "nb_bureaux_depouilles_tour": "144",
  "nb_bureaux_depouilles_canton": "23",
  "total_nb_suffrages_exprimes_tour": "41245",
  "total_nb_suffrages_exprimes_canton": "6922"
}
Record 2nom: Ecole maternelle du Neuhof B · nb_nul: 0
{
  "nom": "Ecole maternelle du Neuhof B",
  "nb_nul": 0,
  "nb_voix": 96,
  "bur_dist": null,
  "cod_lieu": "006",
  "lib_adr1": "34 route d'Alltenheim",
  "nb_blanc": 12,
  "num_tour": "2",
  "cod_liste": "09",
  "cod_parti": "LUGE",
  "geo_shape": "[large value omitted]",
  "lib_liste": "Il est temps ! Pour l'écologie et la justice sociale en Grand Est",
  "lib_parti": "Il est temps ! Pour l'écologie et la justice sociale en Gran",
  "millesime": "2021",
  "nb_emarge": 370,
  "nb_votant": 370,
  "num_liste": "04",
  "num_ordre": 4,
  "cod_bureau": "621",
  "cod_canton": "6",
  "cod_postal": "67100",
  "lib_bureau": "Ecole maternelle du Neuhof B",
  "nb_bureaux": "144",
  "nb_inscrit": 1197,
  "cod_circons": "02",
  "cod_commune": "67482",
  "cod_scrutin": "R0621",
  "nb_procurat": null,
  "cod_comm_ext": "-1",
  "geo_point_2d": {
    "lat": 48.5423557844,
    "lon": 7.76552997616
  },
  "nb_enveloppe": null,
  "cod_lib_bureau": "621-Ecole maternelle du Neuhof B",
  "libelle_secteur": "621 - Ecole maternelle du Neuhof B",
  "traitement_date": "2021-06-27",
  "traitement_heure": "22:19",
  "nb_bureaux_canton": "28",
  "nb_sans_enveloppe": null,
  "lib_liste_affichee": "Eliane ROMANI (Union à gauche avec des écologistes)",
  "total_nb_nuls_tour": "357",
  "nb_suffrage_exprime": 358,
  "nom_candidat1_liste": "Eliane ROMANI",
  "total_nb_blancs_tour": "691",
  "total_nb_nuls_canton": "84",
  "total_nb_votants_tour": "42293",
  "total_nb_blancs_canton": "116",
  "total_nb_inscrits_tour": "139881",
  "total_nb_votants_canton": "7346",
  "total_nb_inscrits_canton": "28434",
  "nb_bureaux_depouilles_tour": "144",
  "nb_bureaux_depouilles_canton": "28",
  "total_nb_suffrages_exprimes_tour": "41245",
  "total_nb_suffrages_exprimes_canton": "7146"
}
Record 3nom: Ecole élémentaire du Neufeld · nb_nul: 4
{
  "nom": "Ecole élémentaire du Neufeld",
  "nb_nul": 4,
  "nb_voix": 95,
  "bur_dist": null,
  "cod_lieu": "001",
  "lib_adr1": "1 rue du Sundgau",
  "nb_blanc": 9,
  "num_tour": "2",
  "cod_liste": "08",
  "cod_parti": "LUCD",
  "geo_shape": {
    "type": "Feature",
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            7.758907923062268,
            48.56009056170951
          ],
          [
            7.759045548244977,
            48.56022569102376
          ],
          [
            7.759026834546986,
            48.561472462332354
          ],
          [
            7.759026835382772,
            48.56147247130828
          ],
          [
            7.759026836218558,
            48.56147248028419
          ],
          [
            7.759024502482089,
            48.56154697762892
          ],
          [
            7.759024436785862,
            48.561549074775385
          ],
          [
            7.759022503856396,
            48.561613317458644
          ],
          [
            7.759007111478372,
            48.56220518285032
          ],
          [
            7.759007101861192,
            48.56220576118112
          ],
          [
            7.759016633640257,
            48.56225028690579
          ],
          [
            7.75901675480918,
            48.56225085292071
          ],
          [
            7.759013337655199,
            48.56234669774501
          ],
          [
            7.758998286745646,
            48.56262660616775
          ],
          [
            7.758989400542968,
            48.56266748058125
          ],
          [
            7.758968604597424,
            48.563058619562696
          ],
          [
            7.759249647257836,
            48.563062533031605
          ],
          [
            7.760402969277997,
            48.56296205132708
          ],
          [
            7.761862629991121,
            48.562843883483914
          ],
          [
            7.761859212051107,
            48.56291778145872
          ],
          [
            7.760370207621943,
            48.56304214496532
          ],
          [
            7.760138139614146,
            48.5630615880127
          ],
          [
            7.75931939693008,
            48.563138006509185
          ],
          [
            7.759319383407004,
            48.56313800706398
          ],
          [
            7.759319384242868,
            48.56313801603991
          ],
          [
            7.7589895543044,
            48.56400872353561
          ],
          [
            7.758803944698918,
            48.56399255070265
          ],
          [
            7.758803931175614,
            48.56399255125739
          ],
          [
            7.757600308101201,
            48.56381377214204
          ],
          [
            7.757342518942738,
            48.56377481505151
          ],
          [
            7.756662479356958,
            48.56367980178037
          ],
          [
            7.756662465833711,
            48.56367980233487
          ],
          [
            7.755874875131965,
            48.56403918961508
          ],
          [
            7.755626876717393,
            48.5640558435912
          ],
          [
            7.755626863194037,
            48.56405584414557
          ],
          [
            7.755509173560863,
            48.56414299456412
          ],
          [
            7.755107068830647,
            48.56411672395269
          ],
          [
            7.754824912607865,
            48.56410285326493
          ],
          [
            7.752653441448619,
            48.56398230334486
          ],
          [
            7.75265342792525,
            48.56398230389888
          ],
          [
            7.752630028079538,
            48.563992849345
          ],
          [
            7.752547012865656,
            48.563898057649034
          ],
          [
            7.752302506720837,
            48.563846570856064
          ],
          [
            7.752522490824426,
            48.56370223549404
          ],
          [
            7.754388991813375,
            48.562592234858066
          ],
          [
            7.755281196928719,
            48.56207747271118
          ],
          [
            7.755937434749643,
            48.56170631415159
          ],
          [
            7.758907923062268,
            48.56009056170951
          ]
        ]
      ]
    },
    "properties": {}
  },
  "lib_liste": "Plus forts ensemble avec Jean Rottner",
  "lib_parti": "Plus forts ensemble avec Jean Rottner",
  "millesime": "2021",
  "nb_emarge": 322,
  "nb_votant": 322,
  "num_liste": "03",
  "num_ordre": 3,
  "cod_bureau": "114",
  "cod_canton": "1",
  "cod_postal": "67100",
  "lib_bureau": "Ecole élémentaire du Neufeld",
  "nb_bureaux": "144",
  "nb_inscrit": 976,
  "cod_circons": "02",
  "cod_commune": "67482",
  "cod_scrutin": "R0621",
  "nb_procurat": null,
  "cod_comm_ext": "-1",
  "geo_point_2d": {
    "lat": 48.5626467446,
    "lon": 7.75671312931
  },
  "nb_enveloppe": null,
  "cod_lib_bureau": "114-Ecole élémentaire du Neufeld",
  "libelle_secteur": "114 - Ecole élémentaire du Neufeld",
  "traitement_date": "2021-06-27",
  "traitement_heure": "22:19",
  "nb_bureaux_canton": "26",
  "nb_sans_enveloppe": null,
  "lib_liste_affichee": "Jean ROTTNER (Union au centre et à droite)",
  "total_nb_nuls_tour": "357",
  "nb_suffrage_exprime": 309,
  "nom_candidat1_liste": "Jean ROTTNER",
  "total_nb_blancs_tour": "691",
  "total_nb_nuls_canton": "71",
  "total_nb_votants_tour": "42293",
  "total_nb_blancs_canton": "135",
  "total_nb_inscrits_tour": "139881",
  "total_nb_votants_canton": "8458",
  "total_nb_inscrits_canton": "24357",
  "nb_bureaux_depouilles_tour": "144",
  "nb_bureaux_depouilles_canton": "26",
  "total_nb_suffrages_exprimes_tour": "41245",
  "total_nb_suffrages_exprimes_canton": "8252"
}
Record 4nom: Lycée d'Ens. Prof. Eco. C. Frey · nb_nul: 1
{
  "nom": "Lycée d'Ens. Prof. Eco. C. Frey",
  "nb_nul": 1,
  "nb_voix": 55,
  "bur_dist": null,
  "cod_lieu": "001",
  "lib_adr1": "3 quai Charles Frey",
  "nb_blanc": 4,
  "num_tour": "2",
  "cod_liste": "02",
  "cod_parti": "LDVC",
  "geo_shape": "[large value omitted]",
  "lib_liste": "La force de nos territoires",
  "lib_parti": "La force de nos territoires",
  "millesime": "2021",
  "nb_emarge": 226,
  "nb_votant": 226,
  "num_liste": "01",
  "num_ordre": 1,
  "cod_bureau": "106",
  "cod_canton": "1",
  "cod_postal": "67000",
  "lib_bureau": "Lycée Professionnel Charles Frey",
  "nb_bureaux": "144",
  "nb_inscrit": 663,
  "cod_circons": "01",
  "cod_commune": "67482",
  "cod_scrutin": "R0621",
  "nb_procurat": null,
  "cod_comm_ext": "-1",
  "geo_point_2d": {
    "lat": 48.5761138818,
    "lon": 7.7438721651
  },
  "nb_enveloppe": null,
  "cod_lib_bureau": "106-Lycée Professionnel Charles Frey",
  "libelle_secteur": "106 - Lycée d'Ens. Prof. Eco. C. Frey",
  "traitement_date": "2021-06-27",
  "traitement_heure": "22:19",
  "nb_bureaux_canton": "26",
  "nb_sans_enveloppe": null,
  "lib_liste_affichee": "Brigitte KLINKERT (Divers centre)",
  "total_nb_nuls_tour": "357",
  "nb_suffrage_exprime": 221,
  "nom_candidat1_liste": "Brigitte KLINKERT",
  "total_nb_blancs_tour": "691",
  "total_nb_nuls_canton": "71",
  "total_nb_votants_tour": "42293",
  "total_nb_blancs_canton": "135",
  "total_nb_inscrits_tour": "139881",
  "total_nb_votants_canton": "8458",
  "total_nb_inscrits_canton": "24357",
  "nb_bureaux_depouilles_tour": "144",
  "nb_bureaux_depouilles_canton": "26",
  "total_nb_suffrages_exprimes_tour": "41245",
  "total_nb_suffrages_exprimes_canton": "8252"
}
Record 5nom: Ecole élém. Guynemer - Gymnase · nb_nul: 2
{
  "nom": "Ecole élém. Guynemer - Gymnase",
  "nb_nul": 2,
  "nb_voix": 48,
  "bur_dist": null,
  "cod_lieu": "006",
  "lib_adr1": "11 rue d'Argenton",
  "nb_blanc": 7,
  "num_tour": "2",
  "cod_liste": "09",
  "cod_parti": "LUGE",
  "geo_shape": "[large value omitted]",
  "lib_liste": "Il est temps ! Pour l'écologie et la justice sociale en Grand Est",
  "lib_parti": "Il est temps ! Pour l'écologie et la justice sociale en Gran",
  "millesime": "2021",
  "nb_emarge": 155,
  "nb_votant": 155,
  "num_liste": "04",
  "num_ordre": 4,
  "cod_bureau": "617",
  "cod_canton": "6",
  "cod_postal": "67100",
  "lib_bureau": "Ecole élémentaire Guynemer-Gymnase",
  "nb_bureaux": "144",
  "nb_inscrit": 1318,
  "cod_circons": "02",
  "cod_commune": "67482",
  "cod_scrutin": "R0621",
  "nb_procurat": null,
  "cod_comm_ext": "-1",
  "geo_point_2d": {
    "lat": 48.5478388541,
    "lon": 7.76382784102
  },
  "nb_enveloppe": null,
  "cod_lib_bureau": "617-Ecole élémentaire Guynemer-Gymnase",
  "libelle_secteur": "617 - Ecole élém. Guynemer - Gymnase",
  "traitement_date": "2021-06-27",
  "traitement_heure": "22:19",
  "nb_bureaux_canton": "28",
  "nb_sans_enveloppe": null,
  "lib_liste_affichee": "Eliane ROMANI (Union à gauche avec des écologistes)",
  "total_nb_nuls_tour": "357",
  "nb_suffrage_exprime": 146,
  "nom_candidat1_liste": "Eliane ROMANI",
  "total_nb_blancs_tour": "691",
  "total_nb_nuls_canton": "84",
  "total_nb_votants_tour": "42293",
  "total_nb_blancs_canton": "116",
  "total_nb_inscrits_tour": "139881",
  "total_nb_votants_canton": "7346",
  "total_nb_inscrits_canton": "28434",
  "nb_bureaux_depouilles_tour": "144",
  "nb_bureaux_depouilles_canton": "28",
  "total_nb_suffrages_exprimes_tour": "41245",
  "total_nb_suffrages_exprimes_canton": "7146"
}

Live sample captured at profiling time — values may have changed upstream.

Verification Status

Using the API

Configuration

Base URL
https://data.strasbourg.eu/api/explore/v2.1/catalog/datasets/resultats-du-second-tour-des-elections-regionales-2021-version-detaillee

License

  • ✓ Redistributable
  • ✓ Attribution required

Query examples

curl -s 'https://data.strasbourg.eu/api/explore/v2.1/catalog/datasets/resultats-du-second-tour-des-elections-regionales-2021-version-detaillee/records?limit=20' -H 'Accept: application/json'

First 20 records of the dataset as JSON.

Uses the Opendatasoft Explore v2.1 syntax — supports select, where, group_by and order_by.

Full API documentation ↗

Rate limits

2 000 000 req/day
per ipmeasured
observed 3 days ago

Dataset

Volume & freshness

Records
576
Last upstream update
5 years ago
2021-06-27

License

No license declared upstream.

○ Documentation○ Data dictionary○ Versioning

Source: opendatasoft

Machine-readable & source

Résultats du second tour des élections régionales 2021 - version détaillée — live verification badge

Embed this badge in a README or wiki — it always shows the latest verification state and quality tier.