L'API Pourquijevote est publique et gratuite pour les usages non-commerciaux. Tous les endpoints renvoient du JSON (UTF-8). La documentation interactive complète est disponible sur /docs (Swagger UI) et /redoc.
⚖️ Attribution requise
Toute réutilisation de données issues de l'API doit citer « Pourquijevote » et inclure un lien vers https://pourquijevote.com. Pour les exports de jeux de données entiers, la licence ODbL 1.0 s'applique.
https://pourquijevote.com/api/v1Toutes les URLs ci-dessous sont relatives à cette racine. Les réponses sont paginées quand limit / cursor sont disponibles.
/politiciansListe paginée des personnalités politiques. Filtres combinables.
| Paramètre | Description |
|---|---|
qopt. | Recherche plein texte sur le nom |
partyopt. | Slug du parti |
sortopt. | freshness | name | updated_at (défaut : name) |
limitopt. | Nombre de résultats (max 100) |
/politicians/{slug}Profil complet d'une personnalité : bio, positions, citations, affiliations, sources.
/partiesListe de tous les partis politiques indexés.
/parties/{slug}Détail d'un parti : description, membres, sources.
/searchRecherche transversale (personnalités, partis, contenus, discours).
| Paramètre | Description |
|---|---|
q | Terme recherché |
/search/semanticRecherche sémantique par embedding (si FEATURE_SEMANTIC_SEARCH activé). Fallback FTS automatique.
| Paramètre | Description |
|---|---|
q | Requête en langage naturel |
topicopt. | Filtre thématique |
kopt. | Nombre de résultats (défaut 20, max 50) |
/feedFlux chronologique des faits sourcés : promesses, positions, citations, contenus.
| Paramètre | Description |
|---|---|
typesopt. | content,promise,position (virgule-séparé) |
topicopt. | Thème |
politicianopt. | Slug personnalité |
partyopt. | Slug parti |
cursoropt. | Token de pagination opaque |
limitopt. | Résultats par page (max 50) |
/votes/{scrutin_id}Détail d'un scrutin (Assemblée nationale ou Sénat) : métadonnées + votes par parti.
| Paramètre | Description |
|---|---|
chamberopt. | AN | Senat (défaut AN) |
/export/datasetExport complet d'un jeu de données en CSV ou Parquet (licence ODbL 1.0).
| Paramètre | Description |
|---|---|
entity | politicians | parties | promises | positions | quotes | sources |
formatopt. | csv | parquet (défaut csv) |
/auditJournal public anonymisé des actions de modération (rôle, type d'entité, date — aucun identifiant personnel).
| Paramètre | Description |
|---|---|
entity_typeopt. | Filtrer par type d'entité |
limitopt. | Max 200 |
# Lister les personnalités
curl "https://pourquijevote.com/api/v1/politicians?limit=10"
# Chercher "écologie urbaine"
curl "https://pourquijevote.com/api/v1/search?q=écologie+urbaine"
# Télécharger les promesses en CSV
curl -o promesses.csv "https://pourquijevote.com/api/v1/export/dataset?entity=promises&format=csv"import pandas as pd
# Charger les positions documentées
df = pd.read_csv("https://pourquijevote.com/api/v1/export/dataset?entity=positions&format=csv")
print(df.head())
# Ou directement via requests
import requests
data = requests.get("https://pourquijevote.com/api/v1/politicians/macron-emmanuel").json()
print(data["full_name"], data["current_role"])// Fil d'actualité — 20 derniers faits
const res = await fetch("https://pourquijevote.com/api/v1/feed?limit=20");
const { items } = await res.json();
// Recherche sémantique
const hits = await fetch(
"https://pourquijevote.com/api/v1/search/semantic?q=transition+énergétique&k=10"
).then(r => r.json());| Profil | Requêtes / minute |
|---|---|
| Anonyme (IP) | 60 |
| Authentifié (viewer) | 600 |
En cas de dépassement, l'API renvoie HTTP 429 avec l'en-tête Retry-After.