Documentation e-sotop Market API
Référence complète pour intégrer les données financières africaines et mondiales dans vos applications.
Introduction
e-sotop Market API est une interface REST qui centralise les données de plusieurs marchés financiers en un seul endpoint. Elle a été conçue pour les développeurs qui souhaitent intégrer des données financières dans leurs applications sans gérer plusieurs sources de données.
L'API repose sur un système de cache intelligent : les données sont pré-chargées en arrière-plan à intervalles réguliers, ce qui garantit des temps de réponse inférieurs à 50 ms dans la grande majorité des cas.
Démarrage rapide
Voici le chemin le plus court pour effectuer votre premier appel en moins de 2 minutes.
Étape 1 — Obtenir une clé API
Contactez-nous via le formulaire de contact pour recevoir votre clé API. Elle se présente sous cette forme :
mk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
Étape 2 — Premier appel
curl -X GET \
"{MALAW_ENDPOINT}?type=brvm&asset=SNTS" \
-H "X-API-Key: mk_live_votre_cle_ici"
Étape 3 — Lire la réponse
{
"status": "success",
"request": {
"type": "brvm",
"asset": "SNTS",
"category": "equities"
},
"meta": {
"source": "brvm.org",
"updated_at": "2026-04-07T08:00:00Z",
"currency": "XOF"
},
"cache": { "hit": true, "age_sec": 187 },
"data": {
"ticker": "SNTS",
"name": "Sonatel",
"last_price": 18500,
"change_pct": 1.65,
"volume": 4320,
"prev_close": 18200
}
}
Authentification
Toutes les requêtes doivent inclure une clé API valide. Deux méthodes sont acceptées :
Via le header HTTP (recommandé)
X-API-Key: mk_live_votre_cle_ici
Via le paramètre URL (déconseillé)
GET /api/market.php?type=brvm&asset=SNTS&api_key=mk_live_votre_cle_ici
Gestion des erreurs
L'API retourne toujours un JSON avec un champ status. En cas d'erreur, un champ message décrit le problème.
| Code HTTP | Status | Cause |
|---|---|---|
| 200 | success | Requête traitée avec succès. |
| 400 | error | Paramètre manquant ou invalide (type, asset). |
| 401 | error | Clé API absente ou invalide. |
| 403 | error | Compte suspendu ou type non autorisé par votre plan. |
| 404 | error | Asset introuvable. |
| 429 | error | Rate limit atteint. Attendez la prochaine fenêtre horaire. |
| 502 | error | Échec de récupération côté source externe. |
{
"status": "error",
"code": 401,
"message": "Clé API invalide."
}
Rate limiting
Chaque clé API est soumise à une limite de requêtes par heure, définie par votre plan. L'état du rate limit est transmis dans les headers de chaque réponse :
X-RateLimit-Limit: 500 X-RateLimit-Remaining: 487 X-RateLimit-Reset: 1712345678 X-RateLimit-Window: 3600
| Header | Description |
|---|---|
X-RateLimit-Limit | Nombre maximum de requêtes autorisées par heure. |
X-RateLimit-Remaining | Nombre de requêtes restantes dans la fenêtre courante. |
X-RateLimit-Reset | Timestamp UNIX de réinitialisation du compteur. |
Endpoint unique
Retourne les données d'un asset financier selon son type et son identifiant.
Paramètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
type | string | Requis | Type de marché : brvm, crypto, forex, stocks, commodities |
asset | string | Requis | Identifiant de l'asset (ex: SNTS, BTC, EURUSD) ou ALL pour la liste complète. |
category | string | Optionnel | Sous-catégorie BRVM uniquement : equities (défaut), bonds, indices |
BRVM — Bourse Régionale des Valeurs Mobilières
Couvre l'ensemble des titres cotés à la BRVM : actions, obligations et indices. Les données sont rafraîchies toutes les heures aux horaires d'ouverture du marché.
Actions (equities)
# Action spécifique GET /api/market.php?type=brvm&asset=SNTS # Toutes les actions cotées GET /api/market.php?type=brvm&asset=ALL&category=equities
| Champ | Type | Description |
|---|---|---|
ticker | string | Symbole boursier (ex: SNTS, BOAB) |
name | string | Nom de la société |
last_price | number | Dernier cours en XOF |
prev_close | number | Cours de clôture de la veille |
open | number | Cours d'ouverture |
change | number | Variation absolue en XOF |
change_pct | number | Variation en pourcentage |
volume | integer | Volume de titres échangés |
Obligations (bonds)
GET /api/market.php?type=brvm&asset=ALL&category=bonds
Indices
GET /api/market.php?type=brvm&asset=ALL&category=indices
Retourne les trois indices BRVM : BRVM Composite, BRVM 30, BRVM Prestige.
Cryptomonnaies
Données issues de CoinGecko. Couvre le top 500 par capitalisation boursière. Rafraîchissement toutes les 5 minutes.
# Crypto spécifique GET /api/market.php?type=crypto&asset=BTC GET /api/market.php?type=crypto&asset=ETH # Top 500 complet GET /api/market.php?type=crypto&asset=ALL
| Champ | Type | Description |
|---|---|---|
ticker | string | Symbole (BTC, ETH, SOL...) |
name | string | Nom complet |
last_price | number | Prix en USD |
high_24h | number | Plus haut sur 24h |
low_24h | number | Plus bas sur 24h |
change_pct_24h | number | Variation 24h en % |
volume_24h | number | Volume 24h en USD |
market_cap | number | Capitalisation boursière USD |
rank | integer | Rang par capitalisation |
Forex
160+ paires de devises dont XOF, XAF, GHS, NGN et toutes les devises africaines majeures. Rafraîchissement toutes les 5 minutes.
# Dollar → Franc CFA GET /api/market.php?type=forex&asset=USDXOF # Euro → Dirham marocain GET /api/market.php?type=forex&asset=EURMAD # Toutes les devises (base USD) GET /api/market.php?type=forex&asset=ALL
USDXOF = 1 USD exprimé en XOF.
| Champ | Type | Description |
|---|---|---|
pair | string | Paire (ex: USD/XOF) |
base | string | Devise de base |
quote | string | Devise de cotation |
rate | number | Taux de conversion |
quote_name | string | Nom complet de la devise de cotation |
Stocks
Actions mondiales via Yahoo Finance (NYSE, NASDAQ, LSE, Euronext...). Le screener couvre dynamiquement les 300+ titres les plus actifs. Tout ticker Yahoo Finance est accepté.
# Actions américaines GET /api/market.php?type=stocks&asset=AAPL GET /api/market.php?type=stocks&asset=TSLA # ADR africain GET /api/market.php?type=stocks&asset=MTN # Top 300 actifs du moment GET /api/market.php?type=stocks&asset=ALL
| Champ | Type | Description |
|---|---|---|
ticker | string | Symbole Yahoo Finance |
name | string | Nom de la société |
last_price | number | Dernier cours |
change_pct | number | Variation journalière en % |
volume | number | Volume journalier |
market_cap | number | Capitalisation boursière |
exchange | string | Place boursière |
Matières premières
16 contrats futures couvrant métaux précieux, énergie, céréales et soft commodities. Le cacao, le café et le coton sont inclus en priorité pour leur importance en Afrique de l'Ouest.
# Or GET /api/market.php?type=commodities&asset=GOLD # Cacao (pertinent CI, Ghana) GET /api/market.php?type=commodities&asset=COCOA # Toutes les matières premières GET /api/market.php?type=commodities&asset=ALL
| Ticker | Nom | Unité | Secteur |
|---|---|---|---|
GOLD | Or | troy_oz | Métaux précieux |
SILVER | Argent | troy_oz | Métaux précieux |
BRENT | Brent Crude Oil | barrel | Énergie |
WTI | WTI Crude Oil | barrel | Énergie |
GAS | Natural Gas | MMBtu | Énergie |
COPPER | Cuivre | lb | Métaux industriels |
COCOA | Cacao | metric_ton | Softs |
COFFEE | Café | lb | Softs |
SUGAR | Sucre | lb | Softs |
COTTON | Coton | lb | Softs |
CORN | Maïs | bushel | Céréales |
WHEAT | Blé | bushel | Céréales |
Format de réponse
Toutes les réponses suivent la même enveloppe JSON, quel que soit le type d'asset demandé.
{
"status": "success", // "success" ou "error"
"message": "OK",
"request": { // Echo des paramètres envoyés
"type": "brvm",
"asset": "SNTS",
"category": "equities"
},
"meta": { // Informations sur la source
"source": "brvm.org",
"updated_at": "2026-04-07T08:00:00Z",
"currency": "XOF",
"category": "equities"
},
"cache": { // État du cache
"hit": true, // true = servi depuis le cache
"age_sec": 312 // Âge du cache en secondes
},
"data": { /* ... données de l'asset ... */ }
}
Système de cache
L'API utilise un système de cache fichier JSON côté serveur. Les données sont précachées par un processus cron en arrière-plan, ce qui garantit des réponses rapides même pour les assets très demandés.
| Type | TTL du cache | Rafraîchissement |
|---|---|---|
| BRVM | 60 minutes | Aux heures de marché (Lu–Ve) |
| Crypto | 5 minutes | Continu |
| Forex | 5 minutes | Continu |
| Stocks | 15 minutes | Aux heures de marché |
| Commodities | 15 minutes | Continu |
cache.hit: true indique une réponse servie depuis le cache (temps de réponse < 50 ms). Un cache.hit: false indique un fetch en direct depuis la source (~500 ms–2 s).
Exemples de code — PHP
<?php function marketGet(string $type, string $asset, string $category = 'equities'): ?array { $url = '{MALAW_ENDPOINT}?' . http_build_query([ 'type' => $type, 'asset' => $asset, 'category' => $category, ]); $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_HTTPHEADER => ['X-API-Key: mk_live_votre_cle'], ]); $body = curl_exec($ch); curl_close($ch); $json = json_decode($body, true); return ($json['status'] === 'success') ? $json['data'] : null; } // Cours Sonatel $snts = marketGet('brvm', 'SNTS'); echo $snts['last_price'] . ' XOF'; // Bitcoin $btc = marketGet('crypto', 'BTC'); echo $btc['last_price'] . ' USD'; // Taux USD/XOF $xof = marketGet('forex', 'USDXOF'); echo '1 USD = ' . $xof['rate'] . ' XOF';
Exemples de code — JavaScript
const API_URL = '{MALAW_ENDPOINT}'; const API_KEY = 'mk_live_votre_cle'; async function marketGet(type, asset, category = 'equities') { const params = new URLSearchParams({ type, asset, category }); const res = await fetch(`${API_URL}?${params}`, { headers: { 'X-API-Key': API_KEY } }); const json = await res.json(); return json.status === 'success' ? json.data : null; } // Utilisation const snts = await marketGet('brvm', 'SNTS'); console.log(snts.last_price, 'XOF'); const allBrvm = await marketGet('brvm', 'ALL'); allBrvm.forEach(action => { console.log(action.ticker, action.last_price); });
Exemples de code — Python
import requests API_URL = "{MALAW_ENDPOINT}" API_KEY = "mk_live_votre_cle" def market_get(type_, asset, category="equities"): resp = requests.get(API_URL, params={ "type": type_, "asset": asset, "category": category }, headers={"X-API-Key": API_KEY}, timeout=10) data = resp.json() return data["data"] if data.get("status") == "success" else None # Exemples gold = market_get("commodities", "GOLD") print(f"Or : {gold['last_price']} USD/oz") cocoa = market_get("commodities", "COCOA") print(f"Cacao : {cocoa['last_price']} USD/tonne")
Exemples de code — cURL
# Actions BRVM curl -H "X-API-Key: mk_live_votre_cle" \ "{MALAW_ENDPOINT}?type=brvm&asset=ALL" # Bitcoin curl -H "X-API-Key: mk_live_votre_cle" \ "{MALAW_ENDPOINT}?type=crypto&asset=BTC" # Taux de change USD/XOF curl -H "X-API-Key: mk_live_votre_cle" \ "{MALAW_ENDPOINT}?type=forex&asset=USDXOF" # Or (Gold) curl -H "X-API-Key: mk_live_votre_cle" \ "{MALAW_ENDPOINT}?type=commodities&asset=GOLD"
Plans & limites
| Fonctionnalité | Starter | Pro | Enterprise |
|---|---|---|---|
| BRVM | ✅ | ✅ | ✅ |
| Crypto | ❌ | ✅ | ✅ |
| Forex | ❌ | ✅ | ✅ |
| Stocks | ❌ | ❌ | ✅ |
| Commodities | ❌ | ❌ | ✅ |
| Rate limit | 100 req/h | 500 req/h | 2 000 req/h |
| Historique SQL | ❌ | 90 jours | Illimité |
| Whitelist IP | ❌ | ❌ | ✅ |
| Support | Prioritaire | Dédié + SLA |
Demander une clé API
Remplissez le formulaire ci-dessous. Vous recevrez votre clé API ainsi que l'endpoint d'accès sous 24h ouvrées.
© 2026 e-sotop services · Dakar, Sénégal · Retour à l'accueil