Public APIs : 2 100 API gratuites, mais gratuites jusqu'où ?
Lire le dépôt GitHub qui recense plus de 2 100 API : repérer les quotas, les licences non commerciales et les offres d'appel avant de coder.

Vous voulez afficher la météo dans un side project, convertir des devises ou tester un front avec de vraies données. Vous cherchez « API gratuite » et vous tombez, à chaque fois, sur le même dépôt GitHub : public-apis.
Public APIs est une liste collaborative d'API publiques, classées par thème. Créé en 2016, sous licence MIT, le dépôt dépasse les 488 000 étoiles et reçoit encore des contributions chaque jour. Le README annonce « une liste collective d'API gratuites ». Le mot « gratuites » mérite qu'on s'y arrête, et c'est l'objet de cet article.
Ce que contient vraiment le dépôt
J'ai compté les lignes du README en octobre 2026 : 2 107 API réparties dans 51 catégories. Les plus fournies sont Development (210 entrées), Government (120), Geocoding (110), Games & Comics (108) et Finance (95). On y trouve aussi des données publiques françaises : la Base Adresse Nationale, l'API Géo, Météo-France, la SNCF ou les Vélib'.
Chaque API tient sur une ligne de tableau, avec cinq colonnes :
| Colonne | Ce qu'elle indique |
|---|---|
| API | Nom et lien vers la documentation |
| Description | Une phrase sur les données fournies |
| Auth | No, apiKey ou OAuth |
| HTTPS | Si l'API est servie en HTTPS |
| CORS | Si on peut l'appeler directement depuis un navigateur |
Le README a aussi ajouté récemment une section dédiée aux serveurs MCP, ces connecteurs qui permettent à un agent IA d'appeler une API comme un outil. Si le principe vous échappe, le fonctionnement du Model Context Protocol l'explique. La liste reste courte, une quinzaine d'entrées, mais elle montre où va le dépôt.
Lire les colonnes Auth, HTTPS et CORS
La colonne Auth est la première à regarder. Sur les 2 107 API, voici la répartition :
| Auth | Nombre d'API | Ce que ça implique |
|---|---|---|
No | 1 002 | Appel direct, rien à créer |
apiKey | 947 | Inscription, clé à garder secrète |
OAuth | 149 | Application à déclarer, flux d'autorisation |
| Autres | 9 | En-tête spécifique (User-Agent, clé RapidAPI) |
Une API sans authentification n'est pas forcément illimitée. Elle compte simplement les appels par adresse IP plutôt que par clé.
HTTPS pose rarement problème : 88 API seulement ne le proposent pas. Évitez-les quand même. Un navigateur bloque les appels HTTP depuis une page HTTPS, et vos données transitent en clair.
CORS est la colonne la moins fiable. 1 030 API sont marquées Unknown, soit presque la moitié. Si l'API n'autorise pas les appels cross-origin, votre fetch depuis le navigateur échouera, même si la même requête marche avec curl. Dans ce cas, il faut passer par votre propre backend. C'est de toute façon obligatoire dès qu'une clé entre en jeu : une clé placée dans le JavaScript du client est visible par n'importe qui. Sécuriser une API REST détaille comment garder ces secrets côté serveur.
Gratuit, gratuit avec quota, gratuit sans commerce
Le guide de contribution du dépôt fixe une règle claire : une API doit offrir un accès gratuit complet, ou au moins une offre gratuite. Ce « au moins » change tout. La liste mélange quatre réalités très différentes, et le README ne les distingue pas.
Vraiment gratuit. Pas de clé, pas de quota mensuel, usage commercial autorisé. Frankfurter, pour les taux de change, en est le meilleur exemple : pas de clé, « pas de quotas » selon sa FAQ, usage commercial permis, et le code est open source si vous voulez l'héberger. Seul un rate limit anti-abus s'applique.
Gratuit avec quota. L'API est gratuite jusqu'à un plafond par minute, par heure ou par mois. Au-delà, on reçoit une erreur 429 Too Many Requests ou on passe à la caisse. C'est le cas le plus fréquent.
Gratuit sans usage commercial. L'API est gratuite tant que votre projet ne rapporte pas d'argent. Dès qu'il en rapporte, il faut une licence. Open-Meteo, TMDB et CoinGecko fonctionnent ainsi.
Freemium vitrine. L'offre gratuite existe surtout pour vous faire essayer. Elle est si basse qu'elle ne tient pas une semaine en production. IPstack offre 100 requêtes par mois, et son offre gratuite exclut l'usage commercial.
La description d'une API ne suffit pas pour savoir dans quelle case elle tombe. Open-Meteo écrit honnêtement « for non-commercial use » dans sa ligne. ExchangeRate-API se présente comme « Free currency conversion », alors que son offre gratuite plafonne à 1 500 requêtes par mois.
Les limites réelles de dix API populaires
J'ai relevé les conditions sur les pages de tarifs et de documentation officielles en octobre 2026. Elles changent souvent, vérifiez avant de vous engager.
| API | Clé | Limite gratuite | Usage commercial | Au-delà |
|---|---|---|---|---|
| Frankfurter (devises) | Non | Pas de quota, anti-abus seulement | Oui | Gratuit, auto-hébergeable |
| GitHub REST | Optionnelle | 60 req/h sans token, 5 000 req/h avec | Oui | GitHub App pour aller plus haut |
| NASA | Oui (DEMO_KEY possible) | 1 000 req/h avec clé personnelle | Pas de restriction annoncée | Gratuit, blocage d'une heure si dépassement |
| Open-Meteo (météo) | Non | 600/min, 5 000/h, 10 000/jour | Non | Abonnement commercial |
| OpenWeatherMap | Oui | 60 req/min, 1 million/mois | Pas de restriction annoncée | One Call : 1 000 appels/jour, puis facturé à l'appel |
| CoinGecko (crypto) | Oui | 10 000 appels/mois | Licence commerciale dès Basic | 35 $/mois |
| Unsplash (photos) | Oui | 50 req/h en mode démo | Oui, avec attribution | 1 000 req/h après validation |
| TMDB (films) | Oui | Pas de quota mensuel publié | Non, licence à négocier | Contact commercial |
| ExchangeRate-API | Oui | 1 500 req/mois, taux mis à jour 1 fois/jour | Pas de restriction annoncée | 10 $/mois |
| IPstack (géoloc IP) | Oui | 100 req/mois | Non | 12,99 $/mois |
Deux lignes méritent un commentaire. La DEMO_KEY de la NASA sert à tester sans inscription, mais elle est très bridée : la documentation annonce 30 requêtes par heure et 50 par jour, et lors de mon test l'en-tête X-Ratelimit-Limit renvoyait 10. Créez une clé, c'est gratuit et immédiat.
Chez OpenWeatherMap, l'offre gratuite couvre la météo actuelle, les prévisions sur 5 jours et la pollution. L'API One Call, la plus complète, a son propre compteur : 1 000 appels par jour, puis chaque appel est facturé. Un widget mal codé qui rafraîchit toutes les minutes pour chaque visiteur franchit ce seuil vite.
Le sponsor en tête de liste
Ouvrez le README : avant la première catégorie, vous traversez un bandeau publicitaire, un tableau « APILayer APIs » et une liste de produits. Le dépôt est maintenu en partie par des employés d'APILayer, une entreprise qui vend des API sur abonnement : IPstack, Weatherstack, Fixer, Marketstack, Mediastack.
Ces produits figurent aussi dans les catégories normales, avec des liens de tracking. Ils ont tous une offre gratuite, ce qui respecte la règle du dépôt. Mais ce sont des freemiums vitrines, avec des quotas mensuels en centaines de requêtes. Je ne dis pas qu'ils sont mauvais. Je dis que leur place en haut du README tient à la publicité, pas à leur générosité.
Le guide de contribution refuse pourtant les « tentatives de marketing ». La règle vaut pour les contributeurs, moins pour le sponsor.
Les autres pièges
Le prix n'est pas la seule contrainte. Certaines API gratuites imposent des règles d'usage strictes, et les enfreindre coûte un bannissement.
Nominatim, le géocodeur d'OpenStreetMap, est gratuit et sans clé. Sa politique d'usage impose pourtant un maximum d'une requête par seconde, un User-Agent qui identifie votre application, la mise en cache des résultats, et interdit l'autocomplétion. Brancher Nominatim sur un champ d'adresse qui interroge l'API à chaque frappe, c'est l'exemple même de ce qui fait bloquer une IP.
Unsplash exige que vous affichiez les images depuis ses serveurs, sans les télécharger pour les héberger vous-même, et que vous créditiez le photographe. TMDB impose son logo et une mention précise dans la page « À propos ».
Reste la fraîcheur de la liste. J'ai testé 200 liens tirés au hasard : 169 répondaient en 200, 22 ne répondaient pas ou renvoyaient une erreur 404 ou 5xx, et le reste bloquait les robots. Environ une API sur dix est donc morte ou déménagée. Et une page de documentation qui répond ne garantit pas que l'API derrière fonctionne encore.
Vérifier une API avant de l'intégrer
Avant d'écrire du code, un curl -I suffit pour voir les en-têtes de limite. Beaucoup d'API les exposent :
curl -sI https://api.github.com/repos/public-apis/public-apis | grep -i x-ratelimitX-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Used: 1
X-RateLimit-Resource: core
X-RateLimit-Reset: 1792076079Ensuite, lisez trois pages : les tarifs, les conditions d'utilisation et la politique d'usage si elle existe. Cherchez les mots « non-commercial », « attribution », « fair use ». Ces trois pages répondent à 90 % des questions que le README laisse ouvertes.
En production, la meilleure protection contre les quotas reste le cache. Des taux de change mis à jour une fois par jour n'ont pas besoin d'être demandés à chaque visite. Avec ce cache côté serveur, 1 500 requêtes par mois deviennent largement suffisantes :
let cache: { rate: number; expires: number } | null = null
export async function getEurUsd(): Promise<number> {
if (cache && cache.expires > Date.now()) return cache.rate
const res = await fetch('https://api.frankfurter.dev/v2/rate/eur/usd')
if (res.status === 429) {
// Quota atteint : servir l'ancienne valeur plutôt que planter
if (cache) return cache.rate
throw new Error('Rate limit atteint et aucune valeur en cache')
}
if (!res.ok) throw new Error(`Frankfurter a répondu ${res.status}`)
const data: { rate: number } = await res.json()
cache = { rate: data.rate, expires: Date.now() + 60 * 60 * 1000 }
return data.rate
}Un cache en mémoire ne survit pas à un redémarrage et n'est pas partagé entre plusieurs instances. Au-delà d'un petit projet, Redis et le pattern cache-aside font le même travail de façon durable.
Par où commencer
Pour apprendre, les API sans clé et sans quota mensuel sont idéales. Elles renvoient du JSON en une ligne de curl :
curl https://api.frankfurter.dev/v2/rate/eur/usd
curl "https://api.open-meteo.com/v1/forecast?latitude=48.85&longitude=2.35¤t=temperature_2m"
curl https://dog.ceo/api/breeds/image/random
curl https://pokeapi.co/api/v2/pokemon/pikachuPokéAPI et Dog CEO sont parfaites pour un premier front : données stables, documentation claire, CORS ouvert. JSONPlaceholder sert à simuler un backend complet avec utilisateurs, posts et commentaires. Toutes suivent le style REST, de loin le plus répandu dans la liste ; si la différence avec GraphQL ou SOAP reste floue, la comparaison SOAP, REST et GraphQL remet les idées en place.
Pour un projet qui doit tenir en production, inversez la logique. Partez du besoin, trouvez deux ou trois candidates dans la catégorie, puis comparez leurs pages de tarifs. La liste vous donne les noms. Elle ne vous donne jamais le prix.
Public-apis reste le meilleur point de départ pour découvrir ce qui existe. Il faut juste le lire comme un annuaire, pas comme un catalogue de services gratuits. Plus de la moitié des API demandent une clé ou OAuth, une bonne partie interdit l'usage commercial, et les plus visibles sont celles d'un sponsor qui vend des abonnements. Une API vraiment gratuite et sans limite comme Frankfurter existe, mais c'est l'exception. La règle, c'est un quota, et le bon réflexe est de le connaître avant que votre application ne le découvre à votre place.