L'intégralité des données VigiCité est exposée via une API JSON publique, sans inscription. Voici comment l'utiliser en 5 minutes.

Pourquoi une API ?

VigiCité agrège des dizaines de bases publiques officielles (HATVP, DECP, SIRENE, RNA, JO, OFGL, votes Assemblée). L'API permet aux journalistes, chercheurs, ONG, et citoyens de récupérer ces croisements directement, sans avoir à reconstruire le pipeline.

Endpoints principaux

Recherche multi-entités

GET https://vigicite.org/api/v1/search?q=colas&limit=10

Cherche dans les élus, entreprises, et associations en une seule requête.

Détail d'un élu

GET https://vigicite.org/api/v1/elus/{id}

Retourne fonction, mandats, scores, croisements, marchés liés.

Tous les élus d'un département

GET https://vigicite.org/api/v1/departement/59/elus?per_page=50

Bulk fetch

GET https://vigicite.org/api/v1/elus/bulk?ids=1,2,3,4,5

Jusqu'à 50 fiches en une seule requête.

Graphe d'un département (D3.js ready)

GET https://vigicite.org/api/departements/59/graphe.json

Format {nodes, links, stats} directement consommable par D3.js, vis.js, Cytoscape.

Export CSV/JSON complets

GET https://vigicite.org/api/v1/exports/elus.csv
GET https://vigicite.org/api/v1/exports/marches.json

Démo en 30 lignes (Python, zéro dépendance)

import json, urllib.request

API = "https://vigicite.org/api/v1"

def get(url, **params):
    if params:
        from urllib.parse import urlencode
        url = f"{url}?{urlencode(params)}"
    with urllib.request.urlopen(url, timeout=30) as r:
        return json.loads(r.read())

stats = get(f"{API}/stats")
print(stats)

elus = get(f"{API}/departement/59/elus", per_page=5)
for e in elus["items"]:
    print(e["nom"], e.get("score_composite"))

Rate limits

  • Anonyme : 60 requêtes/minute par IP.
  • Avec clé API (gratuite, sur demande email) : 600 requêtes/minute.

Les headers X-RateLimit-* sont retournés sur chaque requête.

Documentation interactive

Swagger UI : /api/docs
ReDoc : /api/redoc
Page de présentation : /api/documentation

Licence des données

Les données sources sont publiques (Licence Ouverte 2.0 ou équivalent). Les croisements et scores produits par VigiCité sont également libres de réutilisation. Mention recommandée : "Source : VigiCité, à partir de données publiques."

Documentation complète