À propos & méthodologie
577députés est un explorateur indépendant de l'activité parlementaire de la 17ᵉ législature de l'Assemblée nationale (depuis juillet 2024). Tout est local : pas de service tiers, pas de tracker, pas d'analytics. Données ouvertes officielles uniquement, ré-utilisées sous Licence Ouverte (Etalab).
Les commandes en ligne ci-dessous (anqp …) sont celles du paquet Python
qui propulse le site, à l'usage des personnes qui auto-hébergent l'instance.
Indépendance & neutralité
- Aucune affiliation politique, partisane, syndicale ou institutionnelle.
- Aucune source de financement publique ou privée. Projet entièrement bénévole.
- Aucune donnée n'est inventée, devinée ou enrichie par l'éditeur : les chiffres affichés viennent intégralement des dumps officiels d'open data de l'Assemblée nationale.
- Le code source est public et auditable. La méthodologie de chaque indicateur est documentée ci-dessous.
Sources de données
Toutes les données proviennent du portail data.assemblee-nationale.fr, publié par les services de l'Assemblée nationale. Licence Licence Ouverte v2.0 — Etalab.
| Domaine | Source | Format | Volume actuel |
|---|---|---|---|
| Députés en exercice | AMO10 (acteurs / mandats / organes — actifs) | JSON ZIP, ~5 MB | 577 députés |
| Députés historiques | AMO50 (acteurs / mandats / organes — historiques) | JSON ZIP, ~14 MB | +48 ex-députés indexés |
| Questions écrites | Questions_ecrites.json.zip | JSON ZIP, ~38 MB | 17 159 questions toutes catégories confondues |
| Questions orales | Questions_orales_sans_debat.json.zip | JSON ZIP, ~3 MB | — |
| Questions au Gouvernement | Questions_gouvernement.json.zip | JSON ZIP, ~4 MB | — |
| Dossiers législatifs | Dossiers_Legislatifs.json.zip | JSON ZIP, ~9 MB | 2 744 dossiers |
| Amendements | Amendements.json.zip | JSON ZIP, ~251 MB | 107 938 amendements |
| Scrutins publics nominatifs | Scrutins.json.zip | JSON ZIP, ~21 MB | 6 490 scrutins · 1 043 305 votes individuels |
| Réunions / agenda | Agenda.json.zip | JSON ZIP, ~7 MB | 6 669 réunions |
| Comptes rendus de séance | syseron.xml.zip | XML ZIP, ~45 MB | 507 comptes rendus, ~3 700 interventions extraites |
| Population par circonscription | INSEE — Populations légales 2021 (republiées 25/06/2024) | XLSX, ~32 KB | 566 circos métropole + DOM, mise à jour annuelle |
| Inscrits / votants par circonscription | Ministère de l'Intérieur — Législatives 2024 1er tour (résultats définitifs) | CSV, ~330 KB | 577 circos, mise à jour à chaque scrutin législatif |
Tous les jeux de données sont distribués sous Licence Ouverte 2.0 (Etalab).
Fréquence de mise à jour
- Côté Assemblée nationale : les dumps sont régénérés chaque nuit, vers 03 h UTC. Latence amont < 24 h.
- Côté 577députés :
un thread de fond rafraîchit la base
toutes les 24 heures tant que le serveur tourne (cache HTTP
ETag/Last-Modified : 0 octet téléchargé si la source AN n'a pas bougé).
Prochain rafraîchissement programmé :
dans 7h11 ;
désactivable via
ANQP_AUTO_REFRESH=0.
Comment chaque indicateur est calculé
Statut d'un texte législatif
Déduit du type d'acte de la navette parlementaire (champ
type_xsi du dump dossiers). Règles, par ordre de priorité :
Promulgation_Typeprésent → promulguéeRetraitInitiative_Typeou code*-RTRINI→ retiré- Code
*CADUC*→ caduc - Sinon → en cours (par défaut). La distinction adopté/rejeté
n'est pas extractible de manière fiable depuis le dump (codée comme
Decision_Typegénérique sans valeur explicite) ; non inféré.
Statut d'une question parlementaire
avec_reponse si un texte de réponse ministérielle est publié,
cloturee si l'état de clôture est explicite,
sans_reponse sinon.
Le champ delai_reponse_jours est la différence en jours calendaires
entre la date de publication de la question et celle de la réponse.
Sort d'un amendement
Lu dans cycleDeVie.sort en priorité (texte clair : Adopté, Rejeté,
Retiré, Tombé, Non soutenu, En traitement, Discuté, Effacé). Si le champ est
nul (cas xsi:nil), le sort est déduit de
etatDesTraitements.etat.libelle (ex : « Irrecevable 40 » →
Irrecevable). Aucune autre inférence n'est faite.
Discipline de groupe (votes)
Pour chaque scrutin et chaque groupe, on identifie la
position majoritaire du groupe (champ positionMajoritaire
de la donnée source AN). La discipline d'un député est définie comme :
discipline(d) = (votes alignés sur sa majorité de groupe)
÷ (votes exprimés du député)
× 100
Seuls les votes pour, contre, abstention (votes exprimés) entrent dans le calcul. Les non-votants sont exclus du dénominateur. Important : ces calculs ne portent que sur les scrutins publics nominatifs (~6 500). Les votes à main levée (largement majoritaires en hémicycle) ne laissent aucune trace exploitable et n'apparaissent jamais. La discipline affichée est donc celle observée sur un sous-ensemble représentatif mais pas exhaustif.
Détection d'amendements quasi-identiques
Algorithme MinHash + LSH :
- Le texte du dispositif est nettoyé (HTML retiré, accents pliés, ponctuation supprimée).
- Découpé en shingles de 5 mots consécutifs.
- 64 signatures MinHash sont calculées (BLAKE2b 64-bit avec graines déterministes).
- 16 bandes de 4 signatures bucketent les amendements ; les paires en collision sont vérifiées par le coefficient de Jaccard exact sur les shingles.
- Seuil retenu : Jaccard ≥ 0,80. Deux amendements au-dessus de ce seuil sont considérés comme « quasi-identiques » et regroupés via union-find.
Les amendements de moins de 8 shingles (texte court) sont exclus du calcul.
Re-calculable via anqp cluster-amendements. Voir /clusters.
Score d'activité (cumul)
Sur la page /tops et certaines fiches, le score d'activité d'un député est la simple somme : questions posées + amendements déposés + votes exprimés. Aucune normalisation, aucune pondération : trois actions parlementaires différentes comptent à équivalent. Cette simplicité est volontaire pour rester transparent ; un « score parlementaire » pondéré serait subjectif.
Population & électeurs par circonscription
Sur la carte, chaque circonscription affiche au survol : le nombre d'habitants (résidents tous âges confondus) et le nombre d'inscrits sur les listes électorales. La légende additionne ces deux chiffres par groupe parlementaire.
- Population : INSEE, populations légales municipales 2021 (recensement) republiées le 25 juin 2024. Reflète les résidents au 1ᵉʳ janvier 2021 ; mise à jour annuelle par l'INSEE. Les 11 circonscriptions des Français de l'étranger n'ont pas de population résidente : champ laissé vide.
- Inscrits / votants : Ministère de l'Intérieur, résultats définitifs du 1er tour des législatives des 30 juin et 7 juillet 2024. Stable jusqu'à la prochaine élection législative (sauf élections partielles éventuelles, qui mettent à jour ponctuellement une circonscription).
- Habitants ≠ inscrits : tout résident n'est pas électeur (mineurs, étrangers non communautaires pour les législatives, non-inscrits…). La différence entre les deux chiffres est attendue et significative.
Recherche full-text
SQLite FTS5 avec le tokenizer unicode61 remove_diacritics 2
(insensible à la casse et aux accents). Sur les questions et les amendements.
La syntaxe accepte : phrases entre guillemets, opérateurs AND/OR/NOT/NEAR,
recherche par champ (titre:retraite), négation (-mot).
Limitations connues
- Votes à main levée non tracés : la majorité des votes en hémicycle se font à main levée et ne laissent aucune trace publique exploitable. Toute statistique liée au comportement de vote ne porte donc que sur les scrutins publics nominatifs. Ce n'est pas une lacune du site mais un fait sur les données disponibles.
- Lien dossier ↔ scrutin partiel : ~80 % des scrutins n'ont pas de référence explicite vers le dossier législatif qu'ils tranchent. La page d'un texte ne montre que les scrutins explicitement liés à la source.
- Cosignataires d'amendements : seul le nombre est conservé pour des raisons de volume (108 000 amendements × N cosignataires = plusieurs millions de paires). La liste détaillée est récupérable via le lien PDF de l'amendement.
- Reconstruction de séance QAG : le rattachement entre une question au Gouvernement et la séance se fait par date — cela peut laisser des ambiguïtés rares (deux séances le même jour).
- Statut adopté / rejeté non extractible automatiquement pour les textes : la donnée AN code la décision via un type générique sans valeur d'issue ; aucune inférence n'est faite côté site.
- Plus de détails techniques dans les fichiers
decisions.mdetCHANGELOG.mddu dépôt.
API publique
Tous les listings et fiches sont exposés en JSON sur /api/*.
La spécification OpenAPI est publiée et naviguable :
- Swagger UI — interface interactive, essais de requêtes en direct.
- ReDoc — version lecture (mieux pour la documentation imprimée).
- openapi.json — spécification brute (utilisable avec n'importe quel client OpenAPI : Postman, openapi-generator, etc.).
L'API est en lecture seule, sans authentification ni quota côté local (mais bien sûr local-first : pas de service hébergé public).
Code source & contact
- Code source : projet local Python (FastAPI + SQLite). Voir le fichier
README.mdà la racine du dépôt pour l'installation. - Pour signaler une erreur de calcul, une donnée incorrecte, ou suggérer une fonctionnalité : ouvrir une issue sur le dépôt git du projet (à compléter par l'éditeur).
- Pour citer le site : « 577députés — exploration de l'activité parlementaire de la 17ᵉ législature, à partir des données ouvertes Assemblée nationale ».