Poland introduced a reformed balancing market in 2024: quarter-hour settlement, a new pricing model and, with it, an entirely new reporting API. Most of what you find online predates it and is wrong.
Written for developers integrating Polish market data after the 2024 balancing market reform. Verified September 2026.
PSE moved its reports to a single REST endpoint at api.raporty.pse.pl. The Polish word raporty in the hostname is not decoration — the old CSV report names carried over into the new API paths, so knowing the report you want is half the query.
Poland moved to a reformed balancing market that changed three things a data consumer cares about:
Settlement moved to 15 minutes, from hourly. Every series, every schedule, every imbalance calculation now runs at quarter-hour resolution.
The pricing model changed, bringing Poland closer to European practice with scarcity components in the imbalance price.
The reporting platform was replaced. The old raporty.pse.pl pages gave way to a documented API at api.raporty.pse.pl.
Anything written before 2024 is a trap. Blog posts, Stack Overflow answers and half the client libraries still point at the old endpoints and assume hourly data. Check the date on everything you read about the Polish market, including this page.
The PSE API
The reporting API is open, needs no key, speaks JSON and follows an OData-like filter syntax. Each report is a named collection.
# list of available reports
GET https://api.raporty.pse.pl/
# one report, filtered by business date
GET https://api.raporty.pse.pl/api/his-wlk-cal
?$filter=business_date eq '2026-09-15'
# paging
GET https://api.raporty.pse.pl/api/pk5l-wp?$first=100&$skip=200
Filters use $filter with eq, ge, le — quote dates as strings.
Paging is $first and $skip; the default page is small, so a full day needs several calls.
Report names are Polish abbreviations. Fetch the root listing once and keep a local map of name to meaning — there is no English index.
What you can get
Data
Notes
System demand and generation
Quarter-hourly, by source type, including coal split by hard coal and lignite — a breakdown most European TSOs do not publish.
Balancing market prices (CRO)
The imbalance price per settlement period under the reformed model.
Cross-border exchange
Physical flows and allocations on each interconnector.
Unit-level generation
For units participating in the balancing market.
Forecasts
Demand and renewable generation, published ahead of delivery.
TGE, the Polish power exchange, holds the day-ahead and intraday market results. Its data is published on its own site and in reports rather than a developer API — for automated use, the ENTSO-E day-ahead price under 10YPL-AREA-----S is usually the practical route.
Practical notes
Times are local Warsaw time in most reports, with a business date field that is not a timestamp. Convert explicitly and handle the two clock-change days, when a business day has 92 or 100 quarter-hours instead of 96.
Coal detail is the Polish advantage. If you are modelling emissions or marginal cost in Poland, the hard coal versus lignite split matters and is available — most European markets only give you "fossil".
The API is young. Report names and fields have changed since launch. Pin your parser, validate the schema on each run and alert on unexpected columns rather than silently dropping them.
Cross-check with ENTSO-E. Poland publishes there too, and the differences between the two — resolution, timing, definitions — are informative rather than errors. See our ENTSO-E API guide.
Frequently asked questions
Does the PSE API need an API key?
No. api.raporty.pse.pl is open, returns JSON and needs no authentication. It replaced the older reporting pages after the 2024 market reform.
What resolution is Polish market data?
Quarter-hourly since the 2024 reform. Anything describing hourly Polish settlement is out of date.
How do I filter a PSE report by date?
Use the OData-style filter, for example $filter=business_date eq '2026-09-15'. Paging uses $first and $skip.
Where do I get Polish day-ahead prices?
TGE holds the market results, but publishes them as reports rather than through a developer API. For automation, ENTSO-E day-ahead prices for bidding zone 10YPL-AREA-----S are the practical route.
Why are the report names unreadable?
They are Polish abbreviations with no English index. Fetch the root listing once and keep a local map from report name to meaning.
Quarter-hour settlement, a young API with moving schemas and reports named in Polish abbreviations — we have done this integration. If you need Polish market data you can trust, talk to us.