Skip to content

pse-opendata

Unofficial Python client for the public data of PSE S.A., the Polish transmission system operator. It reads the reports API api.raporty.pse.pl (from 14 June 2024) and the legacy CSV export of www.pse.pl (hourly history until 13 June 2024) and returns tidy pandas frames with explicit interval times.

Not an official PSE product

This is an independent open-source project, not affiliated with, endorsed by or supported by PSE S.A. Check the terms of use of PSE data before publishing results.

import pse_opendata as pse

rce = pse.rce("2025-01-01", "2025-01-31")
rce.head(1)
                  start_utc                   end_utc               start_local                 end_local business_date  rce_pln
0 2024-12-31 23:00:00+00:00 2024-12-31 23:15:00+00:00 2025-01-01 00:00:00+01:00 2025-01-01 00:15:00+01:00    2025-01-01    16.26

What it does

  • One call per report: pse.get(report, start, end) for any of the catalogued reports, plus rce, sdac, fundamentals (demand and generation), imbalance_prices and balancing_capacity.
  • Explicit time: interval start and end in UTC and in Europe/Warsaw, and the business date, on every row. The API's end-of-interval stamps, DST days and the legacy 2A hour are handled (see pitfalls).
  • History: hourly legacy reports for 2009-2024 and stitched series (pse.history("demand", ...)) across the switch to the new API (see history).
  • Reliable downloads: monthly Parquet cache that knows how long PSE keeps correcting each report, retries with backoff, request spacing, offline mode and clear exceptions (see cache).
  • Command line: pse-opendata get rce-pln --start 2025-01-01 --end 2025-01-31 --out rce.parquet.

Data and terms of use

The data are public reports of PSE S.A. PSE's conditions for re-using public sector information (BIP, checked on 26 October 2026) allow commercial and non-commercial re-use free of charge if you name the source and the date the information was obtained, remove the PSE logo and, for processed information, say that it was processed and how. See the README for the full summary and an attribution example.