Integrations
Migrate from Frankfurter
Move a Frankfurter v2 integration to CurrencyCore: add bearer auth, map base and quotes to the path, replace client-side multiplication, and decide when Frankfurter is still the better fit.
Frankfurter is free, open source, and keyless. CurrencyCore is hosted and authenticated. The URL shapes are close, but auth, base placement, and amount handling differ, and CurrencyCore adds plan limits.
Public Frankfurter coverage and hosting details below were checked on 2026-11-10. Verify the project’s current docs before you migrate.
What changes at a glance
| Area | Frankfurter | CurrencyCore |
|---|---|---|
| Entry paid plan | No paid tier; hosted API and self-hosted build are free | Starter, $9/mo for 50,000 requests, full history |
| Free quota | No monthly cap; requests are rate-limited to prevent abuse | 1,000 requests/mo, 60/min |
| Currencies | 219 currencies and 39 other assets from 111 providers | 160 fiat currencies |
| History | Daily history back to 1948 | 1949 parity for GBP/USD and USD/INR, daily majors from 1971, EUR pairs from 1999; Free has the last 30 days |
| Auth | No API key | Authorization: Bearer or x-api-key |
| Cadence | Throughout the day; each source publishes once or a few times a day | Central-bank reference rates polled hourly, daily fixings |
| Sources | 111 central banks and official sources, blended by default, with optional provider scoping | Central-bank reference rates, polled hourly |
| Self-hosting | Open source, Docker deploy | Hosted service only |
| MCP server | MCP server documented | Included on every plan, OAuth and org-scoped |
A snapshot comparison shows the main shape difference. Frankfurter:
{
"amount": 1,
"base": "USD",
"date": "2026-11-10",
"rates": { "EUR": 0.9214, "INR": 83.45 }
}
CurrencyCore:
{
"base": "USD",
"date": "2026-11-10",
"rates": { "USD": 1, "EUR": 0.9214, "INR": 83.45 }
}
The arithmetic is the same. CurrencyCore includes the base in the map at 1,
and the request now needs a bearer header.
1. Add a key and keep the URL close
# Before
curl "https://api.frankfurter.dev/v2/rates?base=USD"es=EUR,GBP,JPY"
# After
curl "https://api.currency-core.com/v1/rates/USD" \
-H "Authorization: Bearer cc_test_your_key"
Frankfurter needs no key; CurrencyCore needs one on every data request. Add the header once in your client. See Authentication.
2. Map calls
| Frankfurter v2 | CurrencyCore | Note |
|---|---|---|
/v2/rates?base=USD"es=EUR,GBP,JPY | /v1/rates/USD | No quotes filter; read the three codes from rates |
/v2/rate/USD/INR | /v1/rates/USD | Read rates.INR, or use /v1/convert |
| A dated rates call | /v1/rates/{base}?date=YYYY-MM-DD | One dated snapshot |
| A historical series | /v1/history?currency=INR&base=USD&from=&to= | One currency per call, inclusive UTC dates |
| Pair rate multiplied by an amount | /v1/convert?from=USD&to=INR&amount=100 | The amount is applied server-side |
Frankfurter v2 has no amount parameter. Fetch the pair rate and multiply, or use /v1/convert. If your chart relies on missing non-trading days, filter the dense CurrencyCore series, which carries the last trading day forward.
3. Plan for the operational differences
CurrencyCore’s 1949 history is annual parity for GBP/USD and USD/INR, daily majors from 1971, and EUR pairs from 1999, not daily data for all 160 codes. Free covers the last 30 days; Starter and above get full history. The feed is fiat only, so confirm every code appears in /v1/currencies. Frankfurter’s blended feed and provider scoping have no direct equivalent.
4. Cut over
- Diff stored codes against
/v1/currenciesand note gaps. - Create a
cc_test_key and add the bearer header. - Map base and quotes to
/v1/rates/{base}; read the codes you need instead of filtering. - Replace client-side multiplication with
/v1/convertwhere an amount is involved. - Compare the same dates on both services, including a weekend.
- Watch
401,403on the Free history window, and429. - Keep the Frankfurter adapter for one billing cycle.
When Frankfurter is the better fit
Frankfurter is free, open source, with no monthly cap. Run it in Docker on your network. It lists 219 currencies and 39 other assets from 111 providers, with daily history to 1948. If you are prototyping, running low volume, using crypto or metals, or need self-hosting, Frankfurter is the better fit. CurrencyCore adds auth and plan limits, so move for a per-key quota, PPP, analytics, or support. For zero-cost prototyping, it is hard to beat.