Bank of Canada Valet API
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
| Endpoint | Returns |
|---|---|
/observations/{seriesNames}/json | Observations for one or more series (e.g. FXUSDCAD,AVG.INTWO); start_date, end_date, recent, order_dir |
/observations/group/FX_RATES_DAILY/json | All daily exchange rates in one call (csv and xml also work) |
/lists/series/json | Every available series name with label and description |
/series/{seriesName}/json | Details for one series |
/fx_rss | Most recent observation for all exchange rates (RSS) |
Get the free weekly email
Free weekly email of newly verified free data. Unsubscribe by emailing us.
By entering your email and clicking Subscribe, you agree to receive the Signal Lab weekly email from Quantum Data Technologies Ltd., 3200-650 West Georgia Street, Vancouver, BC V6B 4P7, Canada (signal-lab@qdt.ai). You can unsubscribe at any time: reply "unsubscribe" to any email or write to signal-lab@qdt.ai. See our Privacy Policy.
Use in your agent
Load Bank of Canada Valet series into pandas and Parquet. Checked against the provider's documentation on Oct 29, 2026.
Access
- No registration and no access key.
Request
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.
"""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
- https://www.bankofcanada.ca/valet-api-how-to/: “No registration is required to use the Valet API. You do not need an access key.”
- https://www.bankofcanada.ca/valet-api-how-to/: “For data that updates only once a day, such as exchange rates, store the response instead of calling the API again.”
- https://www.bankofcanada.ca/terms/: “You must attribute the Bank of Canada as the source of the content, and indicate if changes were made.”
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