GB Balancing Auctions – Dynamic Containment, Reserve & FFR
Pricing
from $1.00 / 1,000 results
GB Balancing Auctions – Dynamic Containment, Reserve & FFR
Daily unit-level results of NESO balancing auctions: Dynamic Containment, Moderation and Regulation, Quick, Slow and Balancing Reserve, Static FFR, STOR. Provider, unit, technology, MW, clearing price. Open data.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
UK Open Data Tools
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
GB Balancing Auctions – Dynamic Containment, Reserve, FFR & STOR Results (NESO)
Get unit-level results of NESO's daily balancing services auctions as clean JSON, CSV or Excel. It covers the Enduring Auction Capability (EAC): Dynamic Containment, Dynamic Moderation and Dynamic Regulation (DCH, DCL, DMH, DML, DRH, DRL), Positive/Negative Quick Reserve, Slow Reserve and Balancing Reserve. It also covers the historic Static FFR and STOR auction results. Each row gives the provider, unit, technology, delivery window, accepted MW, clearing price (£/MW/h) and postcode district. Results for tomorrow's auctions are available the same day, from NESO's official open-data API.
What data does it return?
- Market and product: market (EAC, SFFR, STOR), service, product code and name (e.g. DCL = Dynamic Containment Low)
- Who: participant (provider company), unit ID, technology (batteries, load response…), postcode district
- When: delivery start and end, EFA block, tender round
- Result: status, tendered MW, accepted MW, bid price, clearing price and price unit
Who is it for?
- Battery (BESS) owners, optimisers and route-to-market providers: daily ancillary-service revenue and clearing-price history
- Aggregators and VPPs: competitor volumes by unit and provider
- Traders, analysts and investors: price and volume trends for frequency response and reserve products
- Consultants: revenue stacking models with real accepted volumes
How to use it
- Click Try for free / Start.
- Pick markets and products (e.g.
DCH,DCL) and a delivery window (e.g. last 1 day, or a date range). You can also filter by participant, unit or technology. - Set Max results to cap the run and your cost.
- Run it, then export as JSON, CSV or Excel, or read the results through the Apify API. Schedule it daily for a running price history.
Input example
{"markets": ["EAC"], "products": ["DCH", "DCL"], "lastDays": 1, "participantKeywords": ["Zenobe"]}
Input reference
| Field | Description |
|---|---|
| markets | EAC (default), SFFR, STOR. |
| products | EAC product codes, e.g. ["DCH","DCL","PQR"]. Empty = all. |
| lastDays / dateFrom / dateTo | Delivery window (default last 7 days). |
| participantKeywords | e.g. "Zenobe", "Habitat", "Flexitricity". |
| units | Exact unit IDs. |
| technologyKeywords | e.g. "Battery", "Load Response". |
| acceptedOnly | Only rows with accepted volume (default on). |
| maxItems | Stop after N rows (default 1000). |
Output example
One dataset item per accepted unit result. This record is from a real test run:
{"market": "EAC","sourceUrl": "https://www.neso.energy/data-portal/eac-auction-results","priceUnit": "GBP/MW/h","attribution": "Supported by National Energy SO Open Data","license": "National Energy SO Open Data Licence v1.0 (https://www.neso.energy/data-portal/neso-open-licence)","service": "Response","product": "DCL","productName": "Dynamic Containment Low","participant": "UK POWER RESERVE LIMITED","unit": "AFFR-1","technology": "Batteries","deliveryStart": "2026-10-29T19:00:00","deliveryEnd": "2026-10-29T23:00:00","efaBlock": null,"status": "Accepted","tenderedMw": null,"acceptedMw": 18,"price": null,"clearingPrice": 4.65,"postcodeDistrict": "LE14","recordId": "2945#||#125#||#DCL#||#219102","tenderRound": null,"scrapedAt": "2026-10-29T12:05:45.429Z"}
The same schema is used across all three markets. Newest delivery first.
How much does it cost?
Pay per result: $0.001 per auction-result row ($1 per 1,000). Filtering happens server-side, so you only pay for matching rows. Set a max charge per run and the Actor stops cleanly when it is reached.
| Result rows | Cost |
|---|---|
| 100 | $0.10 |
| 1,000 | $1.00 |
| 10,000 | $10.00 |
Coverage
EAC unit results (NESO "EAC Auction Results by Unit", from Nov 2023, updated daily), Static FFR auction results and STOR auction results as published on the NESO Data Portal.
Legal and data protection
Source: the NESO Data Portal (National Energy System Operator), published under the NESO Open Data Licence v1.0 (based on the Open Government Licence v3.0): "You are free to: copy, publish, distribute and transmit the Information; adapt the Information; exploit the Information commercially and non-commercially for example, by combining it with other Information, or by including it in your own product or application." Every record carries the required attribution "Supported by National Energy SO Open Data" and a link to the source dataset. This Actor is not affiliated with or endorsed by NESO.
The Actor uses NESO's official CKAN API only (no scraping, no login) and follows NESO's rate guidance (at most two datastore requests per minute), so multi-source runs take ~30 s per extra query.
Organisation data only: providers are companies/units; site postcodes are reduced to the postcode district (outward code).
FAQ
- What is an EFA block? One of six 4-hour blocks of the electricity day (23:00–03:00 = block 1).
- Why can a big run be slow? NESO asks API users to make at most two datastore queries per minute, and the Actor respects that.
- Is NESO the same as National Grid ESO? Yes. The Electricity System Operator became the National Energy System Operator (NESO) in October 2024.
- Can I build a clearing-price history? Yes. Schedule a daily run with
lastDays: 1and append the results, or setdateFrom/dateTofor a backfill. - Need another product or dataset? Open an issue on the Actor page.
