Documentation API Zante
Dernière mise à jour : 8 mai 2026
L'API REST de Zante donne accès aux données agrégées de plus de 13 sources publiques françaises (RPPS, FINESS, SIRENE, Ameli, DREES, etc.) couvrant praticiens et établissements de santé sur l'ensemble du territoire. L'API GraphQL est disponible à partir du plan Pro.
Authentification
Chaque requête doit inclure votre clé API dans l'en-tête HTTP Authorization. Les clés sont de la forme zk_xxxxxxxxet sont générées lors de l'inscription ou depuis votre espace compte.
Authorization: Bearer zk_votre_cle_api
Exemple de requête authentifiée :
curl -sS "https://api.zante.fr/api/v1/search?q=medecin+generaliste&city=Lyon" \ -H "Authorization: Bearer zk_votre_cle_api"
Pour générer ou révoquer une clé : Mon espace / Clés API. La clé brute n'est affichée qu'une seule fois à la création ; conservez-la en sécurité.
Les réponses d'erreur d'authentification retournent HTTP 401 avec le corps {"statusCode":401,"error":"UNAUTHORIZED","message":"..."}.
Endpoints principaux
/api/v1/searchRecherche plein texte tolérante aux fautes sur praticiens et établissements. Paramètres : q (obligatoire), type, specialty, department, city, postalCode, conventionnement.
curl -sS "https://api.zante.fr/api/v1/search?q=cardiologue&city=Paris&limit=5" \ -H "Authorization: Bearer zk_votre_cle_api"
/api/v1/practitioners/{rpps}Fiche complète d'un praticien identifié par son numéro RPPS (11 chiffres). Inclut l'historique des sources et la provenance par champ.
curl -sS "https://api.zante.fr/api/v1/practitioners/10000000001" \ -H "Authorization: Bearer zk_votre_cle_api"
/api/v1/practitionersListe paginée de praticiens avec filtres (specialty, city, department, postalCode, name, conventionnement). Pagination par curseur opaque.
curl -sS "https://api.zante.fr/api/v1/practitioners?specialty=Cardiologue&department=75&limit=20" \ -H "Authorization: Bearer zk_votre_cle_api"
/api/v1/establishments/{finess}Fiche complète d'un établissement identifié par son numéro FINESS (9 chiffres). Inclut la hiérarchie EJ/EG et la provenance par champ.
curl -sS "https://api.zante.fr/api/v1/establishments/750100126" \ -H "Authorization: Bearer zk_votre_cle_api"
/api/v1/establishmentsListe paginée d'établissements avec filtres (entityType EJ/EG, categoryCode, city, department, postalCode, name). Pagination par curseur.
curl -sS "https://api.zante.fr/api/v1/establishments?entityType=EG&department=75&limit=20" \ -H "Authorization: Bearer zk_votre_cle_api"
/api/v1/specialtiesToutes les spécialités médicales avec le nombre de praticiens et d'établissements associés. Réponse mise en cache côté serveur (ETag).
curl -sS "https://api.zante.fr/api/v1/specialties" \ -H "Authorization: Bearer zk_votre_cle_api"
/api/v1/locationsRecherche géographique : villes, départements, régions avec les effectifs praticiens/établissements. Paramètre obligatoire : q.
curl -sS "https://api.zante.fr/api/v1/locations?q=Lyon" \ -H "Authorization: Bearer zk_votre_cle_api"
/api/v1/platform-statsStatistiques publiques de la plateforme : nombre de praticiens indexables, établissements, sources, date de dernière synchronisation.
curl -sS "https://api.zante.fr/api/v1/platform-stats"
/healthSonde de disponibilité de l'API. Retourne 200 quand le service est opérationnel.
curl -sS -o /dev/null -w '%{http_code}\n' "https://api.zante.fr/health"Headers de réponse
Chaque réponse API inclut les headers suivants pour suivre votre consommation :
X-RateLimit-Limit: 60 # quota de votre fenêtre glissante X-RateLimit-Remaining: 57 # requêtes restantes dans la fenêtre X-RateLimit-Reset: 23 # secondes avant réinitialisation X-Request-Id: req_abc123 # identifiant unique de la requête
En cas de dépassement, l'API retourne HTTP 429 avec un header Retry-After indiquant en secondes le délai à attendre.
Tarifs et limites
Le débit est mesuré sur une fenêtre glissante de 60 secondes. Les quotas journaliers sont remis à zéro à minuit UTC. Comparer les formules en détail.
API GraphQL
L'API GraphQL est exposée sur /graphql(POST uniquement, plans Pro et supérieurs). Elle couvre les mêmes entités que l'API REST avec la flexibilité de sélectionner uniquement les champs dont vous avez besoin.
Exemple de requête GraphQL :
curl -sS -X POST "https://api.zante.fr/graphql" \
-H "Authorization: Bearer zk_votre_cle_api" \
-H "Content-Type: application/json" \
-d '{"query":"{ practitioners(specialty: \"Cardiologue\", city: \"Paris\") { rpps firstName lastName } }"}'L'explorateur interactif GraphiQL est disponible en environnement de développement sur /graphiql.
Schémas de réponse
Exemples de corps de réponse JSON pour les endpoints principaux. Tous les champs inconnus ou non disponibles dans les sources sont retournés à null.
GET /api/v1/search
{
"data": [
{
"entityType": "PRACTITIONER",
"id": "practitioner_10000000001",
"rppsNumber": "10000000001",
"displayName": "Dr Marie Dupont",
"specialty": "Cardiologie",
"city": "Paris",
"postalCode": "75008",
"conventionnementSector": "SECTOR_1",
"confidenceScore": 0.97
}
],
"meta": {
"total": 142,
"cursor": "eyJpZCI6MTAwfQ==",
"hasNextPage": true
}
}GET /api/v1/practitioners/{rpps}
{
"rppsNumber": "10000000001",
"firstName": "Marie",
"lastName": "Dupont",
"specialty": "Cardiologie",
"phone": "+33 1 23 45 67 89",
"email": null,
"address": {
"street": "10 rue du Faubourg Saint-Honoré",
"city": "Paris",
"postalCode": "75008",
"department": "75",
"region": "Île-de-France"
},
"conventionnementSector": "SECTOR_1",
"languages": ["fr", "en"],
"sources": [
{ "name": "RPPS", "updatedAt": "2026-04-15T00:00:00Z" },
{ "name": "Ameli", "updatedAt": "2026-03-20T00:00:00Z" }
],
"qualityScore": 0.94
}GET /api/v1/establishments/{finess}
{
"finessNumber": "750100126",
"name": "Hôpital Lariboisière",
"entityType": "EG",
"categoryCode": "355",
"categoryLabel": "Centre hospitalier (CH)",
"address": {
"street": "2 rue Ambroise Paré",
"city": "Paris",
"postalCode": "75010",
"department": "75",
"region": "Île-de-France"
},
"phone": "+33 1 49 95 65 65",
"ejFiness": "750100019",
"sources": [
{ "name": "FINESS", "updatedAt": "2026-04-10T00:00:00Z" }
]
}GET /api/v1/platform-stats
{
"practitioners": 1043200,
"establishments": 87400,
"sources": 13,
"lastSyncAt": "2026-05-01T03:00:00Z",
"coverage": {
"withPhone": 0.61,
"withEmail": 0.18,
"withCoordinates": 0.93
}
}Codes d'erreur
L'API utilise les codes HTTP standard. Chaque réponse d'erreur inclut un corps JSON avec les champs statusCode, error et message.
Documentation interactive (Swagger UI)
La documentation interactive complète est disponible via Swagger UI sur /swagger en environnement de développement. Elle liste l'ensemble des endpoints avec leurs paramètres, schémas de réponse et la possibilité de tester directement les requêtes.
En production, l'accès à Swagger UI est restreint aux administrateurs (Story 8.4). Les endpoints documentés ci-dessus sont accessibles à tous les abonnés disposant d'une clé API valide.
Contact et intégrations sur mesure
Pour les intégrations Enterprise, les volumes importants ou toute question technique, contactez l'équipe : contact@zante.fr.
Pour comprendre comment Zante croise les sources publiques et attribue un score qualité à chaque fiche, consultez la page méthodologie.