Exchange rates
The 10 most recent exchange rates from the Central Bank of Uruguay (BCU).
Loading exchange rates…
What each column means
The definitions come word for word from the official specification of the exchange-rate web service of the Central Bank of Uruguay (BCU), which does not give more detail. They are translated here from Spanish.
| Data | API field | BCU field | Official BCU definition (translated) |
|---|---|---|---|
| Date | date | Fecha | “Date of the exchange rate.” |
| Currency code | currency_code | Moneda | “Code of the currency.” |
| Currency | currency_name | Nombre | “Name of the currency.” |
| Symbol (next to the currency) | iso | CodigoISO | “Monetary symbol.” |
| Buy | buy | TCC | “Buy exchange rate.” |
| Sell | sell | TCV | “Sell exchange rate.” |
| Arbitrage | arbitrage | ArbAct | “Arbitrage.” |
Good to know
- The BCU field is called CodigoISO, but the specification defines it as a “monetary symbol”: some values are not ISO codes, for example “DLS.”, “U.I.” or “R$”.
- The BCU also publishes how the arbitrage is expressed (field FormaArbitrar): 0 = units of currency per US dollar, 1 = US dollars per unit of currency, 9 = not applicable. This API does not return it yet; judging by the size of the values, the Argentine peso is expressed in units per dollar and the euro in dollars per unit.
- The BCU also publishes the country of each currency (field Emisor), which this API does not return for now either.
- There are no exchange rates for weekends or holidays. UP, UI and UR are published in advance; this site only shows dates up to today.
Source: BCU exchange-rate web service, specification version 3 (28 Sep 2020), updated on 12 Dec 2022. View the specification (PDF, in Spanish) · View the service WSDL
Use this data in your systems
The API is public and free: it returns exchange rates in JSON format, with the whole history since 2020 and no sign-up. If you need other data or a custom service, write to me from the author page.
import requests
URL = "https://apitool.techspot365.com/api/v1/exchange-rates"
# Latest 2 exchange rates for the US dollar (usd)
response = requests.get(URL, params={"currency": "usd", "limit": 2}, timeout=30)
response.raise_for_status()
result = response.json()
for row in result["data"]:
print(row["date"], row["currency_name"], row["buy"], row["sell"])
# If there are more pages, result["meta"]["has_more"] is True: request page=2, 3, ...- Parameters: currency (BCU currency code or short name: usd, usd-banknote, eur, brl, ars, ui, up, ur), from and to (YYYY-MM-DD), limit (up to 1000) and page. Without from, it returns the last 60 days.
- Optional: fill=previous (needs currency) returns one row for every calendar day; a day without a rate (weekend, holiday) takes the rate of the closest earlier day that has one. Each row has rate_date (date of the rate used) and filled (true if the day was filled in). With fill, limit goes up to 366.
- Optional: frequency=monthly (needs currency) returns one row per month with the average buy and sell of the days that have a rate (average), the rate of the last day of the month that has one (month_end), the number of days (days) and complete (false for the current month). It covers whole months, the last 24 by default and at most about 10 years. It cannot be combined with fill.
- Currency codes are listed at /api/v1/currencies.
- Limit: 300 requests per hour per IP.
- Errors: 400 if a parameter is not valid and 429 if you go over the request limit.
- Access keys (headers X-Company-Key and X-Dev-Key, never in the URL) are meant for services that are not public and for higher limits. If you need them, write to me from the author page.
- Power BI: in Get data > Blank query > Advanced editor, paste the code and choose Anonymous access.

