API publique · lecture seule
Syli Atlas API
Les indicateurs économiques des 54 pays africains, des 5 régions et du continent, de 2015 à 2030, en JSON ou en CSV. Gratuit, sans inscription, et chaque réponse cite sa source.
https://syliatlas.com/api/v1
- Authentification
- aucune
- Formats
- json · csv
- Limite
- 60 req/min · IP
- Données
- imf_weo · 2026-10
GET /api/v1/areas
Toutes les zones
Toutes les zones : pays, régions, continent, agrégats du FMI.
Paramètres
Aucun paramètre.
Réponses
200 application/json · {data, meta}
429 rate_limited
au-delà de 60 requêtes par minute
- $ curl "https://syliatlas.com/api/v1/areas"
- const res = await fetch("https://syliatlas.com/api/v1/areas");
- const { data, meta } = await res.json();
- console.log(data.length);
- console.log(meta.sources[0]?.attribution.en);
- import requests
- r = requests.get("https://syliatlas.com/api/v1/areas", timeout=10)
- r.raise_for_status()
- body = r.json()
- data, meta = body["data"], body["meta"]
- # spreadsheets read the CSV route
- =IMPORTDATA("https://syliatlas.com/api/v1/areas/CIV/csv")
Réponse 200 OK application/json max-age=3600
Réponse réelle des données en ligne, raccourcie (…).
Schéma de la réponse · 5 champs
meta
object
À propos de la réponse.
meta.count
integer
Nombre de zones.
GET /api/v1/areas/{code}
Une zone, toutes ses séries
Une zone avec toutes ses séries.
Paramètres
code
string
path
requis
Code de la zone : ISO 3 pour un pays, code de région, africa, ou agrégat du FMI (voir /areas).
valeurs : CIV, west_africa, africa…
from
integer
query
Année de départ de la période.
valeurs : 2015 – 2030 · défaut : 2020
to
integer
query
Année d'arrivée, après from.
valeurs : 2015 – 2030 · défaut : 2025
Réponses
200 application/json · {data, meta}
400 invalid_period
années hors 2015–2030, ou from ≥ to
404 unknown_area
code de zone inconnu
429 rate_limited
au-delà de 60 requêtes par minute
- $ curl "https://syliatlas.com/api/v1/areas/CIV?from=2020&to=2025"
- const res = await fetch("https://syliatlas.com/api/v1/areas/CIV?from=2020&to=2025");
- const { data, meta } = await res.json();
- console.log(data.period.change_percent.real_gdp_index);
- console.log(meta.sources[0]?.attribution.en);
- import requests
- r = requests.get("https://syliatlas.com/api/v1/areas/CIV?from=2020&to=2025", timeout=10)
- r.raise_for_status()
- body = r.json()
- data, meta = body["data"], body["meta"]
- # spreadsheets read the CSV route
- =IMPORTDATA("https://syliatlas.com/api/v1/areas/CIV/csv")
Réponse 200 OK application/json max-age=3600
Réponse réelle des données en ligne, raccourcie (…).
Schéma de la réponse · 19 champs
data
object
Une zone avec toutes ses séries.
data.code
string
Code : ISO 3 pour un pays (CIV), sinon le code de la zone (west_africa, africa, SSA).
data.kind
string
Nature de la zone.
Valeurs : country | region | continent | imf_aggregate
data.region
string | null
Région de l'Union africaine d'un pays ; null sinon.
Valeurs : north_africa | west_africa | central_africa | east_africa | southern_africa | null
data.members
string[]
Codes des pays qui composent une région ou le continent. Vide pour un pays et pour les agrégats du FMI (composition du FMI).
data.share_of_africa_gdp
(number | null)[]
Part du PIB de l'Afrique en dollars courants, en %, alignée sur years.list. Calcul Syli Atlas.
Unité : %
meta
object
À propos de la réponse.
meta.from
integer
Année de départ utilisée.
meta.to
integer
Année d'arrivée utilisée.
GET /api/v1/compare
Plusieurs zones côte à côte
Les zones trouvées, dans l'ordre demandé.
Paramètres
codes
string
query
requis
2 à 6 codes de zone séparés par des virgules. Les codes inconnus sont absents de data.
valeurs : CIV,GHA,SEN…
from
integer
query
Année de départ de la période.
valeurs : 2015 – 2030 · défaut : 2020
to
integer
query
Année d'arrivée, après from.
valeurs : 2015 – 2030 · défaut : 2025
Réponses
200 application/json · {data, meta}
400 invalid_period
années hors 2015–2030, ou from ≥ to
429 rate_limited
au-delà de 60 requêtes par minute
- $ curl "https://syliatlas.com/api/v1/compare?codes=CIV,GHA"
- const res = await fetch("https://syliatlas.com/api/v1/compare?codes=CIV,GHA");
- const { data, meta } = await res.json();
- console.log(data.map((a) => a.code));
- console.log(meta.sources[0]?.attribution.en);
- import requests
- r = requests.get("https://syliatlas.com/api/v1/compare?codes=CIV,GHA", timeout=10)
- r.raise_for_status()
- body = r.json()
- data, meta = body["data"], body["meta"]
- # spreadsheets read the CSV route
- =IMPORTDATA("https://syliatlas.com/api/v1/areas/CIV/csv")
Réponse 200 OK application/json max-age=3600
Réponse réelle des données en ligne, raccourcie (…).
Schéma de la réponse · 16 champs
data
CompareItem[]
Les zones trouvées, dans l'ordre demandé.
data[].code
string
Code : ISO 3 pour un pays (CIV), sinon le code de la zone (west_africa, africa, SSA).
data[].kind
string
Nature de la zone.
Valeurs : country | region | continent | imf_aggregate
data[].region
string | null
Région de l'Union africaine d'un pays ; null sinon.
Valeurs : north_africa | west_africa | central_africa | east_africa | southern_africa | null
meta
object
À propos de la réponse.
meta.from
integer
Année de départ utilisée.
meta.to
integer
Année d'arrivée utilisée.
meta.codes
string[]
Les codes demandés.
GET /api/v1/ranking
Les pays classés selon un indicateur
Les pays, valeur la plus haute d'abord ; sans valeur en dernier.
Paramètres
indicator
string
query
Indicateur à classer (voir /indicators).
valeurs : real_gdp_index | real_gdp_growth | gdp_usd_bn | gdp_per_capita_usd | gdp_per_capita_ppp | inflation | public_debt_pct_gdp | population_m | fiscal_balance_pct_gdp | current_account_pct_gdp | unemployment · défaut : real_gdp_index
mode
string
query
change : variation entre from et to ; value : valeur de l'année to.
valeurs : change | value · défaut : change
region
string
query
Ne garder que les pays d'une région.
valeurs : north_africa | west_africa | central_africa | east_africa | southern_africa
from
integer
query
Année de départ de la période.
valeurs : 2015 – 2030 · défaut : 2020
to
integer
query
Année d'arrivée, après from.
valeurs : 2015 – 2030 · défaut : 2025
Réponses
200 application/json · {data, meta}
400 invalid_period
années hors 2015–2030, ou from ≥ to
429 rate_limited
au-delà de 60 requêtes par minute
- $ curl "https://syliatlas.com/api/v1/ranking?indicator=real_gdp_index"
- const res = await fetch("https://syliatlas.com/api/v1/ranking?indicator=real_gdp_index");
- const { data, meta } = await res.json();
- console.log(data[0].name.fr, data[0].value, meta.unit);
- console.log(meta.sources[0]?.attribution.en);
- import requests
- r = requests.get("https://syliatlas.com/api/v1/ranking?indicator=real_gdp_index", timeout=10)
- r.raise_for_status()
- body = r.json()
- data, meta = body["data"], body["meta"]
- # spreadsheets read the CSV route
- =IMPORTDATA("https://syliatlas.com/api/v1/areas/CIV/csv")
Réponse 200 OK application/json max-age=3600
Réponse réelle des données en ligne, raccourcie (…).
Schéma de la réponse · 18 champs
data
RankingItem[]
Les pays, valeur la plus haute d'abord ; sans valeur en dernier.
data[].code
string
Code : ISO 3 pour un pays (CIV), sinon le code de la zone (west_africa, africa, SSA).
data[].kind
string
Nature de la zone.
Valeurs : country | region | continent | imf_aggregate
data[].region
string | null
Région de l'Union africaine d'un pays ; null sinon.
Valeurs : north_africa | west_africa | central_africa | east_africa | southern_africa | null
data[].position
integer | null
Place, 1 = valeur la plus haute ; null quand le pays n'a pas de valeur.
data[].value
number | null
La valeur classée, dans l'unité meta.unit.
meta
object
À propos de la réponse.
meta.from
integer
Année de départ utilisée.
meta.to
integer
Année d'arrivée utilisée.
meta.indicator
string
Indicateur classé.
Valeurs : real_gdp_index | real_gdp_growth | gdp_usd_bn | gdp_per_capita_usd | gdp_per_capita_ppp | inflation | public_debt_pct_gdp | population_m | fiscal_balance_pct_gdp | current_account_pct_gdp | unemployment
meta.mode
string
change ou value.
Valeurs : change | value
meta.unit
string
Unité de value : celle de l'indicateur (mode value) ou de sa variation (mode change).
Valeurs : percent | percent_of_gdp | percent_of_labour_force | usd_billion | usd | intl_dollar | million_people | index_2015 | points
meta.region
string | null
Région gardée, ou null pour toutes.
Valeurs : north_africa | west_africa | central_africa | east_africa | southern_africa | null
GET /api/v1/indicators
Les indicateurs : unité, définition, source
Tous les indicateurs, dans l'ordre des séries.
Paramètres
Aucun paramètre.
Réponses
200 application/json · {data, meta}
429 rate_limited
au-delà de 60 requêtes par minute
- $ curl "https://syliatlas.com/api/v1/indicators"
- const res = await fetch("https://syliatlas.com/api/v1/indicators");
- const { data, meta } = await res.json();
- console.log(data.map((i) => i.key + ": " + i.unit));
- console.log(meta.sources[0]?.attribution.en);
- import requests
- r = requests.get("https://syliatlas.com/api/v1/indicators", timeout=10)
- r.raise_for_status()
- body = r.json()
- data, meta = body["data"], body["meta"]
- # spreadsheets read the CSV route
- =IMPORTDATA("https://syliatlas.com/api/v1/areas/CIV/csv")
Réponse 200 OK application/json max-age=3600
Réponse réelle des données en ligne, raccourcie (…).
Schéma de la réponse · 16 champs
data
Indicator[]
Tous les indicateurs, dans l'ordre des séries.
data[].key
string
Clé utilisée dans les séries et les paramètres.
Valeurs : real_gdp_index | real_gdp_growth | gdp_usd_bn | gdp_per_capita_usd | gdp_per_capita_ppp | inflation | public_debt_pct_gdp | population_m | fiscal_balance_pct_gdp | current_account_pct_gdp | unemployment
data[].unit
string
Unité des valeurs (libellés dans la documentation).
Valeurs : percent | percent_of_gdp | percent_of_labour_force | usd_billion | usd | intl_dollar | million_people | index_2015 | points
data[].kind
string
rate : déjà un pourcentage ; level : un montant ; index : 100 en 2015.
Valeurs : rate | level | index
data[].change_unit
string
Unité de ses variations : points pour les taux, pourcentage sinon.
Valeurs : percent | points
data[].source
object
D'où il vient.
data[].source.id
string
Source.
Valeurs : imf_weo
data[].source.code
string | null
Code de la série chez la source (FMI DataMapper) ; null si calculé par Syli Atlas.
meta
object
À propos de la réponse.
meta.years
object
Années couvertes.
meta.years.first
integer
Première année.
meta.years.last
integer
Dernière année.
GET /api/v1/areas/{code}/csv
Une zone en CSV
La ligne 1 est un commentaire (#) qui nomme la source. Puis un en-tête et une ligne par année de 2015 à 2030. Colonnes : year, status, real_gdp_index, real_gdp_growth, gdp_usd_bn, gdp_per_capita_usd, gdp_per_capita_ppp, inflation, public_debt_pct_gdp, population_m, fiscal_balance_pct_gdp, current_account_pct_gdp, unemployment. status vaut actual, estimate ou projection ; cellule vide = pas de valeur. Unités : voir /indicators.
Paramètres
code
string
path
requis
Code de la zone : ISO 3 pour un pays, code de région, africa, ou agrégat du FMI (voir /areas).
valeurs : CIV, west_africa, africa…
Réponses
200 text/csv
404 unknown_area
code de zone inconnu
429 rate_limited
au-delà de 60 requêtes par minute
- $ curl -O "https://syliatlas.com/api/v1/areas/CIV/csv"
- const res = await fetch("https://syliatlas.com/api/v1/areas/CIV/csv");
- const text = await res.text();
- // line 1: the source; then one row per year
- import pandas as pd
- url = "https://syliatlas.com/api/v1/areas/CIV/csv"
- df = pd.read_csv(url, comment="#")
- print(df[["year", "status", "real_gdp_index"]])
- =IMPORTDATA("https://syliatlas.com/api/v1/areas/CIV/csv")
Réponse 200 OK text/csv max-age=3600
Réponse réelle des données en ligne, raccourcie (…).
Indicateurs
Chaque clé de series, change_percent et change_points, avec son unité. Les taux changent en points de pourcentage, les niveaux et l'indice en pourcentage. Même liste dans GET /api/v1/indicators.
real_gdp_index
PIB réel (indice)Volume du PIB, 100 en 2015, obtenu en enchaînant les taux de croissance réelle du FMI. Calcul Syli Atlas. indice, 100 en 2015
index_2015
percent
—
real_gdp_growth
Croissance du PIB réelVariation annuelle du PIB à prix constants. %
percent
points
NGDP_RPCH
gdp_usd_bn
PIB en dollars courantsProduit intérieur brut aux prix courants, converti en dollars US. milliards de dollars US courants
usd_billion
percent
NGDPD
gdp_per_capita_usd
PIB par habitantPIB en dollars courants divisé par la population. dollars US courants
usd
percent
NGDPDPC
gdp_per_capita_ppp
PIB par habitant en PPAPIB par habitant en parité de pouvoir d'achat (dollars internationaux courants) : compare les niveaux de vie. dollars internationaux courants (PPA)
intl_dollar
percent
PPPPC
inflation
InflationVariation annuelle moyenne des prix à la consommation. %
percent
points
PCPIPCH
public_debt_pct_gdp
Dette publiqueDette brute des administrations publiques, en % du PIB. % du PIB
percent_of_gdp
points
GGXWDG_NGDP
population_m
PopulationPopulation totale. millions d'habitants
million_people
percent
LP
fiscal_balance_pct_gdp
Solde budgétaireCapacité (+) ou besoin (−) de financement des administrations publiques, en % du PIB. % du PIB
percent_of_gdp
points
GGXCNL_NGDP
current_account_pct_gdp
Balance couranteSolde des échanges de biens, services et revenus avec l'extérieur, en % du PIB. % du PIB
percent_of_gdp
points
BCA_NGDPD
unemployment
ChômageChômeurs en % de la population active. Le FMI ne le publie pas pour tous les pays. % de la population active
percent_of_labour_force
points
LUR
Valeurs possibles
Toutes les listes fermées de l'API. Les mêmes, avec leurs libellés, dans GET /api/v1 (values).
kindcountry- Un des 54 pays africains.
region- Une des 5 régions de l'Union africaine ; totaux calculés par Syli Atlas.
continent- L'Afrique entière ; totaux calculés par Syli Atlas.
imf_aggregate- Un agrégat publié tel quel par le FMI : le Monde, l'Afrique subsaharienne.
regionnorth_africa- Afrique du Nord
west_africa- Afrique de l'Ouest
central_africa- Afrique centrale
east_africa- Afrique de l'Est
southern_africa- Afrique australe
years.statusactual- Valeur observée.
estimate- Estimation du FMI : l'année est finie mais les chiffres ne sont pas définitifs.
projection- Projection du FMI.
unitpercent- %
percent_of_gdp- % du PIB
percent_of_labour_force- % de la population active
usd_billion- milliards de dollars US courants
usd- dollars US courants
intl_dollar- dollars internationaux courants (PPA)
million_people- millions d'habitants
index_2015- indice, 100 en 2015
points- points de pourcentage
modechange- Variation entre from et to.
value- Valeur de l'année to.
Schémas communs
Les objets qui reviennent dans plusieurs réponses. Description complète, lisible par une machine : /api/v1/openapi.json (OpenAPI 3.1).
AreaRef · Une zone.
code
string
Code : ISO 3 pour un pays (CIV), sinon le code de la zone (west_africa, africa, SSA).
kind
string
Nature de la zone.
Valeurs : country | region | continent | imf_aggregate
region
string | null
Région de l'Union africaine d'un pays ; null sinon.
Valeurs : north_africa | west_africa | central_africa | east_africa | southern_africa | null
Names · Un texte en français et en anglais.
fr
string
En français.
en
string
En anglais.
Pages · La page de la zone sur le site.
fr
string
Page en français.
en
string
Page en anglais.
Docs · Cette documentation.
fr
string
Documentation en français.
en
string
Documentation en anglais.
Source · Une source des chiffres, avec l'attribution à reprendre (attribution.fr ou attribution.en).
id
string
Code de la source.
Valeurs : imf_weo
edition
string
Édition, AAAA-MM.
label
string
Titre de l'édition chez la source.
url
string
La page de la source.
licence
string
Conditions de réutilisation.
licence_url
string
Les conditions.
Years · Les années des séries.
first
integer
Première année des séries.
last
integer
Dernière année des séries.
estimate_from
integer
Première année estimée par le FMI.
projection_from
integer
Première année projetée par le FMI.
list
integer[]
Toutes les années ; la position i de chaque série est l'année list[i].
status
string[]
Statut de chaque année, aligné sur list.
Valeurs : actual | estimate | projection
Series · Une liste par indicateur, alignée sur years.list.
real_gdp_index
(number | null)[]
PIB réel (indice), indice, 100 en 2015, une valeur par année de years.list (null : pas de valeur).
Unité : indice, 100 en 2015
real_gdp_growth
(number | null)[]
Croissance du PIB réel, %, une valeur par année de years.list (null : pas de valeur).
Unité : %
gdp_usd_bn
(number | null)[]
PIB en dollars courants, milliards de dollars US courants, une valeur par année de years.list (null : pas de valeur).
Unité : milliards de dollars US courants
gdp_per_capita_usd
(number | null)[]
PIB par habitant, dollars US courants, une valeur par année de years.list (null : pas de valeur).
Unité : dollars US courants
gdp_per_capita_ppp
(number | null)[]
PIB par habitant en PPA, dollars internationaux courants (PPA), une valeur par année de years.list (null : pas de valeur).
Unité : dollars internationaux courants (PPA)
inflation
(number | null)[]
Inflation, %, une valeur par année de years.list (null : pas de valeur).
Unité : %
public_debt_pct_gdp
(number | null)[]
Dette publique, % du PIB, une valeur par année de years.list (null : pas de valeur).
Unité : % du PIB
population_m
(number | null)[]
Population, millions d'habitants, une valeur par année de years.list (null : pas de valeur).
Unité : millions d'habitants
fiscal_balance_pct_gdp
(number | null)[]
Solde budgétaire, % du PIB, une valeur par année de years.list (null : pas de valeur).
Unité : % du PIB
current_account_pct_gdp
(number | null)[]
Balance courante, % du PIB, une valeur par année de years.list (null : pas de valeur).
Unité : % du PIB
unemployment
(number | null)[]
Chômage, % de la population active, une valeur par année de years.list (null : pas de valeur).
Unité : % de la population active
Period · Variations sur la période demandée. null quand une année n'a pas de valeur.
from
integer
Année de départ.
to
integer
Année d'arrivée.
ChangePercent · Variations des niveaux et de l'indice, en pourcentage.
real_gdp_index
number | null
Variation de PIB réel (indice) entre from et to, en %.
Unité : %
gdp_usd_bn
number | null
Variation de PIB en dollars courants entre from et to, en %.
Unité : %
gdp_per_capita_usd
number | null
Variation de PIB par habitant entre from et to, en %.
Unité : %
gdp_per_capita_ppp
number | null
Variation de PIB par habitant en PPA entre from et to, en %.
Unité : %
population_m
number | null
Variation de Population entre from et to, en %.
Unité : %
ChangePoints · Écarts des taux, en points de pourcentage.
real_gdp_growth
number | null
Écart de Croissance du PIB réel entre from et to, en points de pourcentage.
Unité : points de pourcentage
inflation
number | null
Écart de Inflation entre from et to, en points de pourcentage.
Unité : points de pourcentage
public_debt_pct_gdp
number | null
Écart de Dette publique entre from et to, en points de pourcentage.
Unité : points de pourcentage
fiscal_balance_pct_gdp
number | null
Écart de Solde budgétaire entre from et to, en points de pourcentage.
Unité : points de pourcentage
current_account_pct_gdp
number | null
Écart de Balance courante entre from et to, en points de pourcentage.
Unité : points de pourcentage
unemployment
number | null
Écart de Chômage entre from et to, en points de pourcentage.
Unité : points de pourcentage
Rank · La place du pays par croissance du PIB réel sur la période par défaut, en Afrique et dans sa région. Calculée une fois par édition : ne dépend pas de from et to.
from
integer
Année de départ du classement (fixe).
to
integer
Année d'arrivée du classement (fixe).
indicator
string
Indicateur classé.
Valeurs : real_gdp_index
change_percent
number | null
Croissance du PIB réel sur la période, en %.
Unité : %
Position · Une place dans un classement.
position
integer
Place, 1 = plus forte croissance.
out_of
integer
Nombre de pays classés.
Missing · Un trou dans une série.
indicator
string
Indicateur.
Valeurs : real_gdp_index | real_gdp_growth | gdp_usd_bn | gdp_per_capita_usd | gdp_per_capita_ppp | inflation | public_debt_pct_gdp | population_m | fiscal_balance_pct_gdp | current_account_pct_gdp | unemployment
years
integer[]
Années sans valeur.
Performance
Temps passé dans le serveur pour chaque route, de l'arrivée de la requête à l'envoi de la réponse, hors réseau. Mesuré sur chaque requête et par une sonde toutes les heures, pour qu'une route peu utilisée ait aussi sa mesure. Budget : 10 ms au 99e centile. Chaque réponse donne aussi son propre temps dans l'en-tête Server-Timing.
/api/v1/areas
1,9 ms
1,9 ms
1,9 ms
dans le budget
/api/v1/areas/{code}
1,0 ms
1,0 ms
1,0 ms
dans le budget
/api/v1/ranking
2,4 ms
2,4 ms
2,4 ms
dans le budget
/api/v1/areas/{code}/csv
0,8 ms
1,3 ms
1,3 ms
dans le budget
dernière heure mesurée : 2026-11-12 08:00 UTC
Temps total : ça dépend du pays
Temps total = aller-retour réseau + temps serveur. Le serveur est aux Pays-Bas. Les réponses sont gardées en cache par Cloudflare, qui a des points de présence dans de nombreuses villes africaines : quand la réponse y est déjà, elle part de la ville la plus proche et le trajet jusqu'en Europe disparaît. Le cache est vidé à chaque publication de nouvelles données.
Ordres de grandeur publiés (Cloudflare, Hats Network, OpenMetal) ; ils varient selon l'opérateur. Un pays sans point de présence passe par la ville la plus proche.
Citer la source
Les chiffres gardent la licence de leur source. Pour les données du FMI, citez : « Source : Fonds monétaire international, Perspectives de l'économie mondiale (octobre 2026) », avec le lien, puis « via Syli Atlas ». La ligne 1 de chaque CSV et la page Méthode donnent la source exacte. Ce que Syli Atlas calcule (totaux, rangs, évolutions) est sous licence CC BY 4.0 : réutilisation libre, y compris commerciale, en citant Syli Atlas.
Erreurs
Toujours le même format, avec un code stable à tester dans vos programmes.
- {
- "error": {
- "code": "unknown_area",
- "message": "Unknown area: XXX",
- "docs": "https://syliatlas.com/fr/api#erreurs"
- }
- }
Limites et cache
- Requêtes par minute et par adresse IP
- 60
- Quota restant
- ratelimit-limit · ratelimit-remaining
- Dépassement
- 429 · retry-after
- Cache
- max-age=3600 · etag
- Temps serveur
- server-timing
Les données changent au plus une fois par jour : envoyez If-None-Match, une réponse 304 ne coûte presque rien.
Hors périmètre
Pas de cours de bourse. Ils viennent de MansaAPI, dont la licence autorise l'affichage sur le site mais pas la rediffusion. Ils restent sur les pages Bourses et entreront dans l'API place par place, quand une source officielle l'autorisera. Voir les bourses