West Africa FX Rates — Official Central Bank Exchange Rates API
Pricing
from $0.10 / full market snapshot
West Africa FX Rates — Official Central Bank Exchange Rates API
The only API pulling official daily FX rates directly from West African central banks — not World Bank annual releases. 11 countries, 4 currencies, history back to 1996. CBN, Bank of Ghana, BCEAO. Every record source-attributed with legal basis.
Pricing
from $0.10 / full market snapshot
Rating
0.0
(0)
Developer
Simon M
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
West African FX Rates — Daily Central Bank Exchange Rates
Official USD exchange rates published daily by West African central banks, normalised into one consistent schema. Covers Nigeria (CBN), Ghana (BoG), the 8 WAEMU states (Benin, Burkina Faso, Côte d'Ivoire, Guinea-Bissau, Mali, Niger, Senegal, Togo), and Cape Verde (BCV) — 11 countries in total.
Unlike the World Bank, IMF, or ECB datasets already on Apify — which publish African macro data annually with a 6–12 month lag — this actor pulls fresh, daily rates straight from the issuing institutions.
Part of a regional family: West African FX Rates (this actor), with East, Southern, and North African actors in the same normalised schema.
Modes
Choose a mode to match your use case:
| Mode | What you get | When to use it |
|---|---|---|
usd-core (default) | One USD rate per country, latest available date | Daily monitoring, dashboards, FX baskets |
all-currencies | Every currency each central bank publishes, latest date | Multi-currency exposure, FX desks |
historical | USD rate per country, every trading day in a date range | Backtesting, time-series analysis, academic research |
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | usd-core | See modes table above. |
countries | array | all 11 | ISO 3166-1 alpha-2 codes to include. Nigeria: NG. Ghana: GH. Cape Verde: CV. WAEMU: BJ BF CI GW ML NE SN TG. |
dateFrom | string | — | Start date (YYYY-MM-DD). Required in historical mode. |
dateTo | string | — | End date (YYYY-MM-DD). Required in historical mode. All three sources support history: Nigeria back to ~2010, Ghana back to 1996, WAEMU back to 1999. |
maxItems | integer | 5000 | Hard cap on output rows. |
Output
One record per country per run (in usd-core), per country-currency (in all-currencies), or per country-day (in historical).
Nigeria example:
{"id": "NG:USD:2026-06-02:official","country": "NG","centralBank": "CBN","baseCurrency": "USD","quoteCurrency": "NGN","pair": "USD/NGN","date": "2026-06-02","buying": 1360.0497,"selling": 1361.0497,"mid": 1360.5497,"midMethod": "published","inverseMid": 0.00073499,"rateType": "official","warnings": [],"source": {"name": "Central Bank of Nigeria","url": "https://www.cbn.gov.ng/rates/ExchRateByCurrency.html","retrievedAt": "2026-06-02T15:00:00.000Z","asOfDate": "2026-06-02","licenseNote": "Reproduced with attribution per the CBN website Legal Disclaimer."}}
Read it as: 1 USD = 1360.55 NGN (buying rate: 1360.05, selling rate: 1361.05).
WAEMU/XOF example (Senegal):
{"id": "SN:USD:2026-06-02:derived","country": "SN","centralBank": "BCEAO","baseCurrency": "USD","quoteCurrency": "XOF","pair": "USD/XOF","date": "2026-06-02","buying": null,"selling": null,"mid": 563.1016,"midMethod": "published","inverseMid": 0.001776,"rateType": "derived","sharedRate": true,"warnings": [],"source": {"name": "BCEAO / ECB (derived daily)","url": "https://data-api.ecb.europa.eu/service/data/EXR/D.USD.EUR.SP00.A","retrievedAt": "2026-06-02T15:00:00.000Z","asOfDate": "2026-06-02","licenseNote": "EUR/USD source: ECB Statistical Data Warehouse (free reuse with attribution). USD/XOF derived using the fixed EUR/XOF peg of 655.957.","derivationNote": "USD/XOF = 655.957 ÷ ECB daily EUR/USD reference rate. The EUR/XOF peg is fixed by the French Treasury / EU treaty; derivation is exact, not estimated."}}
Field reference
| Field | Meaning |
|---|---|
country / centralBank | ISO 3166-1 alpha-2 country code + issuing bank abbreviation |
baseCurrency / quoteCurrency / pair | ISO 4217 codes. pair = base/quote. Read as: "price of 1 baseCurrency in quoteCurrency." |
date | The rate's as-of date (ISO 8601, YYYY-MM-DD) |
buying / selling / mid | Rates as published. null where the source doesn't publish that leg. CBN (NG) and BoG (GH) publish all three. WAEMU and Cape Verde rates are derived from a fixed peg — no bid/ask spread exists, so buying and selling are always null for those rows; use mid. |
midMethod | How the mid was obtained: published (bank's own figure), midpoint (computed as (buy+sell)/2), or unavailable |
inverseMid | 1/mid — units of base per 1 quote (e.g. NGN per USD) |
rateType | official (CBN NFEM rate), interbank (BoG), derived (WAEMU/XOF — see below). Rates of different types are not directly comparable. |
sharedRate | true on WAEMU/XOF rows. All 8 states share one rate — see below. |
warnings | Data-quality flags from the source, e.g. buying_gt_selling, mid_out_of_range |
id | Deterministic natural key (country:baseCurrency:date:rateType) — safe to use for upsert/dedup |
source | Full attribution and provenance block: bank name, URL, retrieval timestamp, as-of date, licence note |
Coverage and source notes
| Country / Region | Bank | Rate type | buying / selling | Historical |
|---|---|---|---|---|
| Nigeria (NG) | Central Bank of Nigeria | official — NFEM daily closing rate | ✓ published | Available; arbitrary date range via CBN API |
| Ghana (GH) | Bank of Ghana | interbank — daily interbank mid, buying, selling | ✓ published | Available back to 1996-01-02 |
| 8 WAEMU states (BJ BF CI GW ML NE SN TG) | BCEAO / ECB | derived — see note | null (peg, no spread) | Available back to 1999-01-04 (ECB EUR/USD series start) |
| Cape Verde (CV) | BCV / ECB | derived — see note | null (peg, no spread) | Available back to 1999-01-04 (ECB EUR/USD series start) |
Why are WAEMU and Cape Verde rows derived? Both currencies are permanently pegged to the EUR by treaty:
- XOF (8 WAEMU states): pegged at 655.957 since 1999 (French Treasury / EU treaty)
- CVE (Cape Verde escudo): pegged at 110.265 since 1998 (Portugal, continued with the euro)
There is no independent USD rate for either currency — it is derived mathematically: USD/local = peg ÷ ECB daily EUR/USD. The derivation is exact, not estimated. Each row carries sharedRate: true and rateType: "derived". For billing, all 8 WAEMU rows count as one chargeable event per day (they share a single ECB data point); Cape Verde is a separate event.
Delayed data. Rates are scraped from each institution's published page — not a real-time feed. Expect a few hours' lag after a central bank publishes its daily figure.
Cost
Pay-per-event pricing:
| Mode | Charge | Typical cost |
|---|---|---|
usd-core | One fx-snapshot per run | $0.10 per run |
all-currencies | One fx-country-day per unique (currency, country, date) row | $0.015 per row |
historical | One fx-country-day per unique (currency, country, date) — WAEMU 8 states count as 1 | $0.015 per country-day |
Examples:
- Daily
usd-corefor all 11 countries: $0.10/day (~$2.20/month) - 1 year of
historicalfor Nigeria + Ghana: 2 × ~252 trading days =504 events → **$7.56** - 1 year of
historicalfor all 11 countries: Nigeria + Ghana + 1 WAEMU data point + Cape Verde = 4 × ~252 =1,008 chargeable events → **$15**
Legality & disclaimers
Is the data real-time? No — it is delayed. We scrape each bank's published web page; publishing lag varies by institution.
Legal basis. Official exchange rates are factual data. Copyright protects creative expression, not facts. These central-bank sites carry only a general copyright notice with no contractual restriction on reusing the published rate figures. The Central Bank of Nigeria additionally grants explicit permission to copy material "provided that CBN is stated expressly as the source." Every output record carries the issuing bank's name, URL, and a licence note — we reproduce values exactly as published without alteration.
Accuracy. Values are reproduced as published. If a bank revises a figure, re-run to pick up the change; use asOfDate and retrievedAt to track versions.
Resilience. Each source is fetched independently. If one central bank's site is down, the run still returns data from the others and logs a per-source summary.
Issues / feedback: use the Issues tab on the actor page.
This is not legal or financial advice. Verify rates against the issuing central bank before acting on them.