Next free-source hunt
We check for new free financial data every Wednesday.
Datasets / Macro
bankofcanada.ca/

Bank of Canada Valet API

Freeauth: noneCustom#macro#economic-data#historical-data✓ verified Oct 23, 2026

Bank of Canada Valet API

Official Bank of Canada API for daily exchange rates, interest rates, bond yields and other financial and economic statistics. No API key, no registration, no cost.

Valet is the Bank of Canada's free web API at https://www.bankofcanada.ca/valet/. It serves exchange rates, interest rates, bond yields and other economic and financial statistics: 16,237 series in 2,579 groups as of Oct 20, 2026. No registration or access key is needed, and there is no cost.

Exchange rates are daily averages for 24 currencies, expressed as Canadian dollars per unit of foreign currency. They are published by 16:30 ET each business day, and the API can lag publication briefly. The Bank calculates them as a truncated mean of LSEG indicative quotes collected every minute from 8:00 to 16:00 ET. They are indicative only and are not meant as a benchmark for executing FX trades. Daily history starts Jan 3, 2017; older noon and closing rates (to Apr 28, 2017) use the old method and are no longer updated. Past values are not restated.

Terms: the Bank lets you freely use, copy and distribute its content. You must attribute the Bank of Canada as the source and indicate any changes, without implying endorsement. If you include it in a paid product, you must tell buyers that it's free on the Bank's site. The Bank publishes no numeric rate limit, but its terms bar circumventing its request limits; back off on errors and cache daily data.

Required Attribution:

Required: attribute the Bank of Canada as the source and indicate if changes were made, without suggesting endorsement.

Coverage

16,237 series in 2,579 groups (Oct 20, 2026). FX: daily average rates for 24 currencies in Canadian dollars (plus monthly and annual averages), published by 16:30 ET each business day, from Jan 3, 2017; legacy noon rates May 2007 to Apr 2017 under the old method. Rates: CORRA from 1997, the 10-year Government of Canada benchmark yield from 2001, the overnight-rate target from 2009, the Bank rate (monthly) from 1935. JSON, CSV or XML.

Good for

  • Converting CAD-denominated prices, fundamentals or P&L at the Bank of Canada's daily average rate
  • Building Canadian rates features (CORRA, the overnight-rate target, Government of Canada benchmark yields) for macro and fixed-income models
  • Cross-checking another FX feed against an official central-bank daily series that is never restated

Verdict

Free, keyless official source for CAD exchange rates and Canadian rates such as CORRA and benchmark yields, at daily or lower frequency. The FX rates are indicative averages of LSEG quotes (8:00–16:00 ET), "not intended to be used as the benchmark rate for executing foreign exchange trades", so use them for research, conversion and features, not execution. Reuse is free under the Bank's terms: attribute the Bank of Canada, say if you changed the data, and tell buyers it's free on the Bank's site if you include it in a paid product. No numeric rate limit is published; the Bank asks you to back off and cache.

Endpoints

EndpointReturns
/observations/{seriesNames}/jsonObservations for one or more series (e.g. FXUSDCAD,AVG.INTWO); start_date, end_date, recent, order_dir
/observations/group/FX_RATES_DAILY/jsonAll daily exchange rates in one call (csv and xml also work)
/lists/series/jsonEvery available series name with label and description
/series/{seriesName}/jsonDetails for one series
/fx_rssMost recent observation for all exchange rates (RSS)

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load Bank of Canada Valet series into pandas and Parquet. Checked against the provider's documentation on Oct 29, 2026.

Raw skill file (/skills/bank-of-canada-valet.md)Also in our MCP server: call get_ingestion_skill with {"slug": "bank-of-canada-valet"}.

Access

  • No registration and no access key.

Request

bash
curl 'https://www.bankofcanada.ca/valet/observations/FXUSDCAD/json?recent=5'

Format

JSON (also CSV and XML): seriesDetail plus observations, each {"d": date, "<SERIES>": {"v": value}}. Values arrive as strings.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""Bank of Canada Valet API (daily USD/CAD) -> pandas -> Parquet. No key or registration."""
import requests
import pandas as pd

SERIES = "FXUSDCAD"
r = requests.get(f"https://www.bankofcanada.ca/valet/observations/{SERIES}/json",
                 params={"start_date": "2017-01-03"}, timeout=60)
r.raise_for_status()
obs = r.json()["observations"]          # [{"d": "2026-10-28", "FXUSDCAD": {"v": "1.3925"}}, ...]
df = pd.DataFrame({"date": [o["d"] for o in obs],
                   "usd_cad": [o.get(SERIES, {}).get("v") for o in obs]})
df["date"] = pd.to_datetime(df["date"])
df["usd_cad"] = pd.to_numeric(df["usd_cad"])  # values arrive as strings
df.to_parquet("boc_fxusdcad.parquet", index=False)
print(len(df), "rows", df["date"].min().date(), "to", df["date"].max().date())

Run by us on 2026-10-29 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 2,451 daily rows, 2017-01-03 to 2026-10-29.

Limits

  • Rate limit: Not stated. The Bank asks you to start slow at peak times, back off on errors and cache daily data instead of calling again.

Quirks

  • The daily FX series (FXUSDCAD and others) start on 2017-01-03; older noon rates are a separate legacy series.
  • Exchange rates are published once per business day, so cache them.
  • The rates are indicative, for statistical and analytical use, not for executing trades.

Terms and attribution

  • Free to use, copy and distribute: attribute the Bank of Canada as the source and indicate if changes were made, without suggesting endorsement.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer