Nigerian FX.
Three markets.
One call.

CBN official rate. Parallel market rate. USDT/USDC street price. The spread between them. Paid per call in USDC on Base via x402, no API key, no account, no subscription.

USD parallel vs official right now
+2.80%
typical range 1–6%
₦1,366.41·₦1,329.21
Live, refreshed every 15 minutes
status: checking…·checking sources… ⚠ data may be stale
Check freshness first. This one's free.
curl https://nairarate.dev/health
What you get
{
  "timestamp": "2026-07-30T02:30:05Z",
  "base": "NGN",
  "data_age": { "parallel_minutes": 0, "official_minutes": 869 },
  "confidence": "high",
  "rates": {
    "USD": {
      "official":      { "bid": 1364.5303, "ask": 1365.5303, "mid": 1365.5303,
                       "updated_at": "2026-07-28T00:00:00Z", "high": 1368, "low": 1363 },
      "parallel":      { "bid": 1383.0164, "ask": 1404.7282, "mid": 1393.8723,
                       "provider_count": 43 },
      "crypto_street": null
    },
    "USDT": {
      "official": null,
      "parallel": null,
      "crypto_street": { "bid": 1389.5, "ask": 1402.06, "mid": 1395.78,
                       "provider_count": 16 }
    }
    // ... 13 more currencies
  },
  "spreads": {
    "USD": { "parallel_vs_official_pct": 2.08, "usdt_vs_official_pct": 2.22,
            "usdt_vs_parallel_pct": 0.14 }
  },
  "trend_7d": {
    "USD": { "parallel_direction": "stable", "official_direction": "stable",
            "spread_direction": "compressing" }
  }
}
curl https://nairarate.dev/v1/rates \
  -H "X-PAYMENT: <x402-payment-token>"
$0.03 in USDC on Base. No API key. No account.
The hard part

Aggregate the raw provider list naively and USD/NGN comes out at ₦1,181 against a true ₦1,392. The central bank quotes inside the parallel feed. Remittance corridors report a missing side as zero. One feed had GBP at ₦130.

Every quote is classified before it enters the aggregate. Central bank feeds, reference feeds, and mechanical-band quoters are excluded from the parallel market calculation. The remainder is aggregated by median, not mean, with 3× outlier rejection. provider_count is in every response so callers can see AED rests on one quote while USD rests on 43.

The official series reaches back to 2001-12-10, 51,028 daily rows from the CBN's own feed, screened for the 27 data-entry errors that appear in the original (GBP at ₦2,248,433 on one date; EUR at ₦755,240 on another). Parallel and stablecoin history to September 2023.

Full methodology → nairarate.dev/methodology
Endpoints
Endpoint
What it returns
Price
GET /v1/rates
All 15 currencies, all markets, live spreads, 7-day trends
$0.03 / call
GET /v1/rates/history
Daily snapshots up to 365 days, trend analysis
$0.01–$0.05 / call
Payments in USDC on Base via x402
No API key. No account. No subscription.
GET /health is always free, check source freshness before you pay.
/history price scales with depth: 1–7 days $0.01 · 8–30 days $0.02 · 31–90 days $0.03 · 91–365 days $0.05
Coverage
CurrencyOfficial (CBN)Parallel (market)
provider_count is returned in every response. Single-provider currencies are usable but flagged in confidence scoring.