Get exchange rates

When the user asks for an exchange rate between two currencies — EUR/USD, GBP/JPY, historical rates, or which currencies are supported — reach for Frankfurter. No API key required, daily reference rates from 50+ central banks.

get-exchange-rates · v1 · updated 2026-04-16

Agents: This page is a SKILL.md-style capability guide. For JSON, call GET /api/skills/get-exchange-rates. To drop this into a local Claude Code install, copy the frontmatter + body below into ~/.claude/skills/get-exchange-rates/SKILL.md.

When to use this skill

When the user asks for an exchange rate between two currencies — "what's the euro to dollar rate", "how much is 100 GBP in JPY", "what was the EUR/USD rate on March 15, 2024" — reach for Frankfurter. It aggregates daily reference rates from 50+ central banks, needs no API key, and has historical data going back decades for major currencies. For real-time trading rates, this is the wrong skill — Frankfurter's data lags 24–48 hours. For listing which currencies are supported, use /currencies as a one-shot catalog, not a repeated call.

Your best first call

curl "https://api.frankfurter.dev/v2/rate/EUR/USD"

No auth. No key. Returns a JSON object with the rate, effective date, and currency pair. The base and quote path parameters are ISO 4217 currency codes — swap the order to flip the direction (/rate/USD/EUR gives how many euros one dollar buys).

Key fields the agent uses: - rate — the exchange rate as a plain number (1.1693 means 1 EUR buys 1.1693 USD) - date — the rate's effective date, not the current date. The ECB publishes previous-business-day rates around 4 PM CET, so the "latest" rate is often a day or two old - base — the source currency code - quote — the target currency code

Fallbacks (when the best call isn't enough)

Pitfalls

One-line summary for the user

I can get current and historical exchange rates from Frankfurter with no API key — daily reference rates from 50+ central banks going back decades, though the data lags 24–48 hours and isn't suitable for live trading.

APIs this skill uses

Frankfurter API · primary · verified

Free foreign exchange rates API providing current and historical currency exchange rates from multiple central banks and financial institutions worldwide.

Generated from

Frankfurter API tutorial Getting Started with Frankfurter

SKILL.md source (frontmatter + body)
---
name: get-exchange-rates
description: When the user asks for an exchange rate between two currencies — EUR/USD, GBP/JPY, historical rates, or which currencies are supported — reach for Frankfurter. No API key required, daily reference rates from 50+ central banks.
---

## When to use this skill

When the user asks for an exchange rate between two currencies — "what's the euro to dollar rate", "how much is 100 GBP in JPY", "what was the EUR/USD rate on March 15, 2024" — reach for Frankfurter. It aggregates daily reference rates from 50+ central banks, needs no API key, and has historical data going back decades for major currencies. For real-time trading rates, this is the wrong skill — Frankfurter's data lags 24–48 hours. For listing which currencies are supported, use `/currencies` as a one-shot catalog, not a repeated call.

## Your best first call

```bash
curl "https://api.frankfurter.dev/v2/rate/EUR/USD"
```

No auth. No key. Returns a JSON object with the rate, effective date, and currency pair. The `base` and `quote` path parameters are ISO 4217 currency codes — swap the order to flip the direction (`/rate/USD/EUR` gives how many euros one dollar buys).

Key fields the agent uses:
- `rate` — the exchange rate as a plain number (1.1693 means 1 EUR buys 1.1693 USD)
- `date` — the rate's effective date, not the current date. The ECB publishes previous-business-day rates around 4 PM CET, so the "latest" rate is often a day or two old
- `base` — the source currency code
- `quote` — the target currency code

## Fallbacks (when the best call isn't enough)

- **Need a rate for a past date** → add `?date=2024-03-15` to the `/rate` call, or use `/v2/rates?from=2024-01-01&to=2024-03-15` for a date range. The `/rates` endpoint accepts either `date` OR `from`/`to`, not both — combining them returns a 422.
- **Need to verify a currency is supported or check historical coverage** → `/v2/currency/{code}` returns the provider list and date range for a specific currency. Call it before requesting historical data for exotic currencies — the Colombian peso (COP) has one provider; EUR has 50+.
- **Need a full currency catalog** → `/v2/currencies` returns 150+ currencies with ISO codes, numeric codes, symbols, and date ranges. Fetch once per session and index by `iso_code`.

## Pitfalls

- Rates are daily reference rates with a 24–48 hour lag — the ECB publishes at ~4 PM CET for the previous business day. Do not use for live trading.
- The `/rates` endpoint rejects `date` combined with `from`/`to` — it returns a 422 "conflicting params" error. Use one or the other.
- Provider coverage varies wildly: COP has one provider (Banco de la República); EUR has 50+. Check `/currency/{code}` before assuming deep historical coverage for exotic currencies.
- No conversion endpoint exists. Frankfurter returns the rate; you do the multiplication. The rate is always "how many quote-currency units per one base-currency unit."

## One-line summary for the user

I can get current and historical exchange rates from Frankfurter with no API key — daily reference rates from 50+ central banks going back decades, though the data lags 24–48 hours and isn't suitable for live trading.

« Back to all skills