Guides, tutorials, and references

How to read exchange rates, build a time series, tell live spot from a reference fix, and wire the API into Next.js, Python, Java, C#, PHP, spreadsheets, or an LLM agent.

Comparisonexchangerate.host alternatives, now that it requires a keyexchangerate.host used to answer requests with no signup at all. It is now operated by APILayer, and the free plan caps out at 100 requests a month behind a key. Here is what changed and where developers are moving.7 min readComparisonHit Fixer's 100-call limit? Here is the rest of the fieldFixer's free plan gives 100 calls a month, locks the base currency to EUR, and leaves out the conversion endpoint until you pay. None of that is hidden in fine print, but it surprises people who only read the headline "free tier" line. Here is what else is out there.7 min readComparisonOpen Exchange Rates alternatives, once the free plan hits USD-onlyThe free Open Exchange Rates plan gives you 1,000 requests a month, but every one of them is priced in USD. No conversion endpoint, no time series, no other base currency, until you pay $12 a month or more. Here is what that actually costs you, and four other places to look.7 min readComparisonFrankfurter vs ExchangeRate-API: the two free, no-key options comparedBoth let you make a request right now with no signup and no key. Past that, they diverge: one is open-source ECB data with no quota, the other is a commercial API giving away a limited, attributed slice of its feed. Neither is wrong. They fit different jobs.6 min readComparisonFixer vs ExchangeRate-API: which free tier actually fits your projectFixer caps its free plan at 100 calls a month and one base currency. ExchangeRate-API takes a different approach entirely, splitting a keyed tier from a keyless one with its own rules. The right pick depends on what you are building, not which name sounds more established.7 min readComparisonFixer vs Open Exchange Rates: two locked-down free tiers, compared honestlyBoth vendors are established. Both cap their free tier hard. Fixer locks you to EUR at 100 calls a month; Open Exchange Rates locks you to USD at 1,000 calls a month and gates conversion and time-series behind a paid plan. The restrictions look similar until you map them against what you actually need.7 min readBlogUSD/JPY moved above 163. The daily rows don't say when.The ECB-derived USD/JPY cross was 162.74 on July 21 and 163.07 on July 22. Somewhere inside that window, the pair moved through 163. The daily series leaves the time blank.4 min readTutorialExchange rates in Next.js and TypeScriptFetch live exchange rates from a Next.js Server Component, keep the API key off the client, and cache the response without hiding when the underlying rate last changed.6 min readTutorialExchange rates in Java and Spring BootBuild a typed Spring Boot client for live FX rates with RestClient, BigDecimal, environment-based authentication, and explicit freshness fields.6 min readTutorialExchange rates in C# and .NETCreate a typed .NET FX client with IHttpClientFactory, decimal rates, cancellation, a bounded timeout, and source-aware response handling.6 min readTutorialExchange rates in PHP and LaravelFetch and cache live exchange rates with Laravel’s HTTP client, bearer authentication, bounded timeouts, and freshness metadata.6 min readMethodologyA reproducible exchange-rate API freshness benchmarkA public protocol for measuring data age, observed change intervals, availability, timestamp coverage, and weekend labeling without turning one request into a ranking.7 min readBlogWhy the yen stayed weak after a rate hike and ¥11.7tn interventionJapan raised its policy rate to 1% and spent ¥11.7 trillion intervening in foreign exchange, yet USD/JPY was back above 162 by mid-July. The rate gap still matters, but oil, positioning, and fiscal-risk perceptions complete the explanation.7 min readGuideWhy banks, Google, and FX APIs show different exchange ratesThe rates can differ even when nobody is wrong. A reference rate, a card rate, and a dealer quote answer different questions.5 min readMethodologyWas gold up, or was your currency down?From 10 July 2025 to 10 July 2026, USD gold rose 23.93%. The same gold position gained 26.95% in EUR, 37.97% in IDR, and 45.50% in TRY after the local-currency FX leg was included.7 min readCase StudyHow goldprice.dev prices gold in local currenciesHow goldprice.dev combines USD metal prices with exchangerate.dev FX rates to serve local-currency gold prices without hiding freshness boundaries.7 min readBlogWhich currencies are at record lows against the dollar (July 2026)Four currencies sit at or within touching distance of their weakest level ever recorded against the US dollar. Here is the record watch as of 12 July 2026, straight from our own rate history.5 min readBlogWhy the Turkish lira keeps hitting record lowsUSD/TRY is around 46.99, a fresh record. The move is two things stacked together: a structural policy of managed depreciation, and a run of 2026 shocks that forced the central bank to burn reserves defending it.6 min readBlogWhy the Israeli shekel is outperforming in 2026The shekel is the strongest performer in our 33-pair set, up close to 10% against the dollar over the past year. The drivers are a falling risk premium and steady capital inflows, not a high interest rate.6 min readGuideExchange rate API on Stack Overflow: developer troubleshooting, answeredThe FX-API errors developers hit on Stack Overflow, fixed: 401 auth, 429 rate limits, CORS from the browser, stale weekend rates, converting an amount, and pulling historical or time-series data.6 min readGuideExchange rate API on Reddit: the developer questions, answeredThe free-exchange-rate-API questions that come up on Reddit, answered straight: the free tier, how fresh the rates are, rate limits, auth, commercial use, and whether the data is good enough to build on.6 min readGuideCan you predict exchange rates? The forty-year wallThe most-cited result in international finance says no. Here is where that wall holds, where it cracks, and how to check any forecasting claim before you believe it.6 min readTutorialCan you beat a random walk at FX forecasting? Run the test in 30 linesThe classic result says a "no change" forecast beats every model out of sample. Here is the code to put that to the test yourself, against live daily rates.7 min readBlogWe tried to beat the random walk on five currency pairs. Here is the scoreboardWe ran the FX-forecasting test on five years of live data across five pairs. The random walk won. The more interesting result is how easily a couple of defensible choices could have made it look like we had beaten it.8 min readBlogWhy USD/IDR just hit an all-time highThe rupiah set a record low in June 2026. Here is what actually drove it: the market mechanics first, the politics second, and a clear line between what is verified and what is framing.7 min readTutorialLive exchange rates in Excel with Power QueryPull live FX rates into Excel with a Power Query M query against exchangerate.dev. Works on Mac and Windows, no add-in. Free tier: 10,000 calls a month, no card.5 min readTutorialLive exchange rates in Google SheetsWire exchangerate.dev into a custom =FXRATE() formula via Apps Script, with a cache and error handling. Free tier: 10,000 calls a month, no card.5 min readTutorialHow to get exchange rates in PythonRead live and historical FX rates in Python with a few lines of code. No key to start, 10,000 calls a month once you sign up, and every response tells you how fresh the rate is.5 min readTutorialCurrency conversion in JavaScript and Node.jsFetch live exchange rates and convert amounts in JavaScript using the global fetch API. Works in Node 18+, Deno, Bun, and modern browsers. No key to start, 10,000 calls a month on the free tier.5 min readGuideHistorical FX rates and time series in one callPull a multi-currency FX series across a date range with a single request to /v1/range. Daily history back to 1999, returned as a data array of daily rows ready to load into pandas.6 min readGuideHow to backfill FX rates without look-ahead biasWhen you reconstruct a historical EUR/USD series for analytics or backtesting, the rate you query must be the one that was knowable on each simulated date, not a value published later. Here is the pattern.6 min readReferenceReading source and market_session in your pipelineEvery exchangerate.dev response carries two freshness fields: source and market_session. Together they tell you exactly what you are looking at, and whether to accept that rate or wait for a fresher one.5 min readGuideIndicative vs executable FX rates: what a rates API actually gives youEvery FX rate you read from an API is one of two things: a reference price for analysis and display, or a dealer quote you can trade on. These are not interchangeable. Knowing the difference determines whether you are building the right thing.6 min readGuideECB reference rates, explainedThe European Central Bank publishes one official FX reference rate per business day. Here is what that means, how it differs from live spot data, and how to read it from the API.6 min readBlogWhat ECB-based FX APIs miss between fixesThe ECB publishes its reference fix once per business day around 16:00 CET. Any API sourced only from that fix is stale the moment the market moves after 16:00 — and stays stale until the next day's fix. Here's what that means for a "latest" endpoint, and how intraday-sourced data differs.5 min readComparisonHow to compare free exchange-rate APIs in 2026Picking a free FX data source is not just about the price. Six dimensions matter: quota, intraday freshness, freshness metadata, history depth, a conversion endpoint, and agent support. Here is how to think through each one.6 min readGuideGive your LLM agent live FX rates over MCPexchangerate.dev runs a Model Context Protocol server so an LLM agent can request currency rates as structured tool calls, without writing a line of REST client code.6 min read