Bank of England IADB API
Free Bank of England Interactive Database with no key: SONIA, Bank Rate, gilt yields and UK monetary series as CSV by series code and date range. Tested example.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Bank of England IADB API?
The Bank of England's Interactive Database serves its published statistics as free CSV over HTTP with no key. A request names one or more series codes and a date range, and returns one dated row per observation.
The Interactive Database predates the fashion for JSON APIs and it shows — the endpoint is an `.asp` script with a dozen query parameters, several of which look like relics. They are not optional decoration: `csv.x=yes` is what switches the response from an HTML page to a file, and `UsingCodes=Y` is what makes `SeriesCodes` mean series codes rather than menu positions. Get the incantation right once and it is completely stable.
The output is business-days-only and silently so. A request covering July 2026 returns roughly 22 rows, not 31, because weekends and English bank holidays are simply absent rather than present with null values. Any code computing an average over a period, or joining against a calendar-day series, has to handle that gap explicitly — reindexing a sparse business-day series onto calendar days with forward fill is usually what you actually want.
Quick facts
- Base URL
https://www.bankofengland.co.uk/boeapps/iadb- Authentication
- No key or registration required. The database is a public Bank of England publication.
- Rate limit
- No documented limit. Daily series update once per working day.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Bank of England IADB API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Daily SONIA rate from 1 July to 20 August 2026
GET https://www.bankofengland.co.uk/boeapps/database/_iadb-FromShowColumns.asp?csv.x=yes&Datefrom=01/Jul/2026&Dateto=20/Aug/2026&SeriesCodes=IUDSOIA&CSVF=TN&UsingCodes=Y&VPD=Y&VFD=N
curl 'https://www.bankofengland.co.uk/boeapps/database/_iadb-FromShowColumns.asp?csv.x=yes&Datefrom=01/Jul/2026&Dateto=20/Aug/2026&SeriesCodes=IUDSOIA&CSVF=TN&UsingCodes=Y&VPD=Y&VFD=N'const res = await fetch("https://www.bankofengland.co.uk/boeapps/database/_iadb-FromShowColumns.asp?csv.x=yes&Datefrom=01/Jul/2026&Dateto=20/Aug/2026&SeriesCodes=IUDSOIA&CSVF=TN&UsingCodes=Y&VPD=Y&VFD=N");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://www.bankofengland.co.uk/boeapps/database/_iadb-FromShowColumns.asp?csv.x=yes&Datefrom=01/Jul/2026&Dateto=20/Aug/2026&SeriesCodes=IUDSOIA&CSVF=TN&UsingCodes=Y&VPD=Y&VFD=N", timeout=20)
res.raise_for_status()
print(res.json())DATE,IUDSOIA
01 Jul 2026,3.7309
02 Jul 2026,3.7305
03 Jul 2026,3.7302
06 Jul 2026,3.7297
07 Jul 2026,3.7297
08 Jul 2026,3.7303
09 Jul 2026,3.7311
10 Jul 2026,3.731
13 Jul 2026,3.7308
14 Jul 2026,3.7311
15 Jul 2026,3.7308
16 Jul 2026,3.7308
17 Jul 2026,3.7307
20 Jul 2026,3.7307
21 Jul 2026,3.7302
22 Jul 2026,3.7303
23 Jul 2026,3.731
24 Jul 2026,3.7307
27 Jul 2026,3.7312
28 Jul 2026,3.7316
29 Jul 2026,3.7313
30 Jul 2026,3.732
31 Jul 2026,3.7313
03 Aug 2026,3.7321
04 Aug 2026,3.7318
05 Aug 2026,3.7313
06 Aug 2026,3.7323
07 Aug 2026,3.7318
10 Aug 2026,3.7315
11 Aug 2026,3.7315
12 Aug 2026,3.731
13 Aug 2026,3.7308
14 Aug 2026,3.7307
17 Aug 2026,3.7312
18 Aug 2026,3.7311
19 Aug 2026,3.7313Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
SeriesCodes | query | Required | Comma-separated Bank of England series codes. `IUDSOIA` is SONIA, `IUDBEDR` is Bank Rate. IUDSOIA |
Datefrom / Dateto | query | Required | Date range in `DD/Mon/YYYY` form, for example `01/Jul/2026`. 01/Jul/2026 |
csv.x | query | Required | Set to `yes` to receive CSV rather than an HTML page. yes |
UsingCodes | query | Required | `Y` to interpret `SeriesCodes` as codes. Y |
CSVF | query | Optional | Column layout. `TN` gives dates in rows with a name header. TN |
VPD / VFD | query | Optional | Vintage flags controlling whether provisional and first-release values are included. Y |
Response fields
DATEcolumn- Observation date as `DD Mon YYYY`, business days only.
{series code}column- One column per requested series, holding the observation as a decimal number.
(missing rows)n/a- Weekends and English bank holidays are absent from the output rather than present as blanks.
What you can build with the Bank of England IADB API
- Show the current SONIA or Bank Rate on a UK finance page
- Pull a gilt yield series for a chart without scraping a PDF
- Load UK monetary statistics into a spreadsheet directly as CSV
- Request several related series in one call by comma-separating the codes
Common errors and how to fix them
HTML page instead of CSV
`csv.x=yes` was missing.
Fix: The parameter name contains a dot and must be sent literally; some query builders mangle it.
Empty file or header only
The series code is wrong, or `UsingCodes=Y` is missing.
Fix: Without `UsingCodes=Y` the codes are not interpreted as codes and nothing matches.
Fewer rows than days
Not an error — the series is business days only.
Fix: Reindex onto a calendar if you need one row per day, and decide explicitly whether to forward-fill.
302 redirect
The endpoint redirects to a `_iadb-FromShowColumns.asp` path.
Fix: Follow redirects. Most HTTP clients do so by default; some CLI configurations do not.
Bank of England IADB API — frequently asked questions
Is Bank of England data free to access programmatically?
Yes. The Interactive Database serves CSV over plain HTTP with no key or registration, and the Bank publishes the series codes openly.
What is the series code for SONIA?
`IUDSOIA` is the daily SONIA rate. `IUDBEDR` is the official Bank Rate. The database's search interface lists codes for every published series.
Why does my date range return fewer rows than days?
Because the series only publishes on business days. Weekends and English bank holidays produce no row at all rather than a null, so the gaps are invisible unless you check the dates.
Is there a JSON version of this API?
No. The Interactive Database returns CSV or HTML only. Convert once at your boundary — the CSV layout is stable and has been for years.
Tools that pair with this API
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
CSV Viewer & Table
View CSV as a clean HTML table online. Live search filter, row and column counts, delimiter and header options — all processed locally in your browser.
Business Days Calculator
Count business (working) days between two dates, excluding weekends and your own holiday list. See working days, weekend days and total days at a glance.
Bank of England IADB is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.