Real-time monitoring of UK grid-scale Battery Energy Storage Systems (BESS).
Data sourced from the Elexon Insights API — no API key required.
Browser → Next.js /api/elexon → data.elexon.co.uk (FUELINST)
The proxy API route (src/app/api/elexon/route.ts) solves the CORS problem —
all requests to Elexon happen server-side. If Elexon is unreachable, the server
returns realistic simulated data so the UI always works.
The page (src/app/page.tsx) is a server component that fetches initial data
at request time, so the dashboard renders fully on first load with no client-side
loading state.
npm install
npm run dev
Open http://localhost:3000.
FUELINST — Instantaneous generation outturn by fuel typehttps://data.elexon.co.uk/bmrs/api/v1/datasets/FUELINST| Field | Meaning |
|---|---|
battery / other |
BESS output (MW) — positive = discharging |
ps |
Pumped storage hydro (MW) |
time |
UTC timestamp of measurement |
battery field is a newer addition; older records use other which may include non-BESS assetsWorks on any Node.js host. For Vercel:
npm i -g vercel
vercel
The /api/elexon route will run as a Vercel Serverless Function, keeping
all Elexon requests server-side.
Want to add individual BESS units? Try:
GET /reference/bmunits/all — list all BM units (filter by fuelType: BATTERY)GET /datasets/PN — Physical Notifications per unit (shows individual charge/discharge plans)GET /datasets/BOAL — Bid Offer Acceptance Level (actual BM actions per unit)