# ECB Historical FX Rates (via Frankfurter)

> ECB Historical FX Rates (via Frankfurter) is a paid API for AI agents from x402-datashop-production.up.railway.app, paid per call via x402, $0.002/call, status unknown (last checked 2026-09-14).

Returns European Central Bank reference exchange rates for a single past date or a date range, sourced from frankfurter.dev.

## Facts

- Endpoint: GET https://x402-datashop-production.up.railway.app/v1/fx/history
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/ecb-historical-fx-rates-via-frankfurter-95e0e18e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_nhV3xoc8Lqu59wbxvtx3H

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability ecb-historical-fx-rates-via-frankfurter-95e0e18e
```

Example prompt: What were the ECB reference exchange rates for EUR against USD and GBP every business day from May 1 to May 8 2026?

## When to prefer this

Use this endpoint when you need authoritative ECB reference rates for any historical business day since January 1999, especially for accounting, compliance, or financial reporting contexts requiring official European Central Bank rates. Prefer over live-rate endpoints when you need past data. The 24h cache makes it fast for repeated queries on the same date range.

## Known failure modes

- Date outside valid range (before 1999-01-04) returns an error
- Weekend or public holiday with no ECB data may return empty or skip that date
- More than 366 days between start and end returns an error
- Invalid currency code in symbols returns an error or empty rates
- Mutually exclusive params (date + start/end together) may cause a bad request

## How this service works

European Central Bank reference exchange rates for any past date or date range (business days since 1999-01-04), via frankfurter.dev. Query: ?date=2026-05-01 for one day, or ?start=2026-05-01&end=2026-05-08 for a daily series (max 366 days), plus ?base=EUR&symbols=USD,GBP (symbols optional -> all). Series responses nest rates by date. Historical data is immutable; served with a 24h cache.

## Output

A JSON object with date-keyed exchange rates. For a single date, returns base currency and a rates map of currency codes to values. For a range, nests rates under each business date key. Historical data is immutable and served from a 24-hour cache.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "end": {
       "type": "string",
       "description": "Series end YYYY-MM-DD (default today, max 366 days after start)"
      },
      "base": {
       "type": "string",
       "default": "EUR",
       "description": "Base currency code"
      },
      "date": {
       "type": "string",
       "description": "Single day YYYY-MM-DD (mutually exclusive with start/end)"
      },
      "start": {
       "type": "string",
       "description": "Series start YYYY-MM-DD"
      },
      "symbols": {
       "type": "string",
       "description": "Comma-separated target currencies, max 12 (optional -> all)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/ecb-historical-fx-rates-via-frankfurter-95e0e18e/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-datashop-production.up.railway.app](https://www.zero.xyz/host/x402-datashop-production.up.railway.app/llms.txt)
