PSE Electricity Price API – Poland RCE & Kompas avatar

PSE Electricity Price API – Poland RCE & Kompas

Pricing

from $0.24 / 1,000 market data rows

Go to Apify Store
PSE Electricity Price API – Poland RCE & Kompas

PSE Electricity Price API – Poland RCE & Kompas

PSE electricity price and power-grid data from the official PSE API (api.raporty.pse.pl): rynkowa cena energii RCE, day-ahead and imbalance prices, Kompas Energetyczny, load and generation mix as clean 15-minute, hourly or daily rows. Export CSV, JSON or Excel.

Pricing

from $0.24 / 1,000 market data rows

Rating

0.0

(0)

Developer

Kamil Kaczmarek

Kamil Kaczmarek

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Poland Power Grid API – Official PSE RCE & Kompas

Poland power grid API: official Polish power-system / electricity market data from PSE (api.raporty.pse.pl) as clean, typed rows — rynkowa cena energii (RCE) for prosumer net-billing, the day-ahead price, imbalance prices, Kompas Energetyczny (PDGSZ), system load, and the generation mix. Choose 15-minute, hourly, or daily rows, schedule the Actor, and receive only new or revised values; export CSV, JSON or Excel. Polski opis: dane PSE — rynkowa cena energii RCE, Kompas Energetyczny, zapotrzebowanie KSE i generacja źródeł z oficjalnego API raportów PSE (sieć elektroenergetyczna / power grid).

Keywords: Poland power grid API, PSE electricity API, ceny energii PSE, rynkowa cena energii RCE, RCE PLN, Kompas Energetyczny, PDGSZ, ceny rozliczeniowe, zapotrzebowanie KSE, generacja źródeł, net-billing prosumenci.

What data can you get

datasets valuePSE reportNative resolutionOutput fields
rcerce-pln15 minrcePlnPerMwh
day-ahead-pricecsdac-pln15 mincsdacPlnPerMwh (single day-ahead coupling price)
imbalance-priceprice-cost15 mincenPlnPerMwh, ckoebPlnPerMwh, cebAvgPlnPerMwh, corPlnPerMwh, imbalanceEnergyMwh, systemContracting
kompaspdgsz (active forecast only)1 hourusageLevel 0–3 and usageLevelLabel: recommended usage, normal usage, recommended saving, required reduction
loadkse-load15 minloadActualMw, loadForecastMw
generation-mixhis-gen-pal15 minone MW column per ENTSO-E production type (solarMw, windOnshoreMw, hardCoalMw, …), unmappedTypesMw, totalGenerationMw

Every row also has dataset, granularity, businessDate (doba handlowa), interval start and end in UTC and Europe/Warsaw, intervalsCount, isComplete, publishedAtUtc, sourceUrl, and the attribution fields source, retrievedAt, and processingNote.

History starts at business date 2024-06-14. Day-ahead reports for tomorrow appear after about 14:00 Europe/Warsaw.

How to use

{
"datasets": ["rce", "kompas"],
"lastDays": 0,
"granularity": "hour",
"onlyNew": true,
"stateKey": "prosumer",
"maxItems": 200
}

This input returns today's and tomorrow's hourly RCE and Kompas rows (48 rows per day). Schedule it every afternoon; onlyNew skips rows you already have and delivers a row again if PSE revises its value. The examples directory has four more inputs.

Input

Today's and tomorrow's hourly RCE + Kompas (prosumer net-billing schedule):

{
"datasets": ["rce", "kompas"],
"lastDays": 0,
"granularity": "hour",
"onlyNew": true,
"stateKey": "prosumer",
"maxItems": 200
}

Generation mix for one business day (15-min native):

{
"datasets": ["generation-mix"],
"dateFrom": "2026-10-19",
"dateTo": "2026-10-19",
"maxItems": 100
}
FieldDefaultMeaning
datasets["rce"]Reports to download, in this order.
lastDays7Business days before dateTo (or today), 0–3650. Used when dateFrom is empty.
dateFrom, dateToemptyInclusive business dates YYYY-MM-DD. Empty dateTo means tomorrow.
granularitynativenative, hour, or day. Aggregation: arithmetic mean of prices and power, sum of energy, maximum Kompas level.
maxItems1000Row cap for the whole run, 1–500000, shared by all datasets in order.
onlyNewfalseSkip rows whose values were delivered before under the same stateKey.
stateKeydefaultSeparate keys for independent schedules.
maxRequestsPerSecond2Request rate to PSE, 0.2–5, one request at a time.

Output

{
"dataset": "rce",
"granularity": "native",
"businessDate": "2026-10-19",
"intervalStartUtc": "2026-10-18T22:00:00Z",
"intervalEndUtc": "2026-10-18T22:15:00Z",
"intervalStartLocal": "2026-10-19T00:00:00+02:00",
"intervalEndLocal": "2026-10-19T00:15:00+02:00",
"rcePlnPerMwh": 755.01,
"intervalsCount": 1,
"isComplete": true,
"publishedAtUtc": "2026-10-18T11:59:15.031000Z",
"sourceUrl": "https://api.raporty.pse.pl/api/rce-pln",
"source": "Polskie Sieci Elektroenergetyczne S.A. (PSE), Raporty OSP / Market Data API (api.raporty.pse.pl). Informacja pozyskana ze strony www.pse.pl.",
"retrievedAt": "2026-10-20T14:12:48Z",
"processingNote": "Informacja pozyskana ze strony www.pse.pl według stanu na dzień 2026-10-20. Informacja została przetworzona w całości lub w części. Processing: fields renamed to English; timestamps converted to ISO 8601 in UTC and Europe/Warsaw; numbers parsed."
}

Aggregated rows report how many source intervals they contain. isComplete is false when a bucket has fewer intervals than expected, for example a day that PSE has not finished publishing. Daily buckets follow local midnight, so DST days contain 92 or 100 quarter-hours.

Source and attribution

PSE allows reuse of the information it publishes "zarówno w celach komercyjnych, jak i niekomercyjnych" (PSE: ponowne wykorzystanie informacji publicznej). Its conditions are to name the source, give the retrieval date, remove the PSE logo, and tell recipients when and how information was processed. Every row carries this in source, retrievedAt, and processingNote; the Actor publishes no PSE logo. When you republish the data, keep these fields or an equivalent notice.

Pricing (pay per event)

EventUSDWhen charged
data-row$0.0003Each delivered dataset row: one 15-minute interval, one hour, or one day.

Coarser granularity costs less: a day of RCE is 96 native rows ($0.029), 24 hourly rows ($0.007), or one daily row. Rows skipped by onlyNew and rows refused by your spending limit are not charged; the Actor stops cleanly when the limit is reached. .actor/pay_per_event.json documents the event for the Apify Console; it does not activate pricing.

Use cases

  • Prosumers and energy apps: show today's and tomorrow's RCE and Kompas Energetyczny hours to shift consumption or battery charging (net-billing).
  • Traders and analysts: build price, imbalance and load histories at 15-minute, hourly or daily resolution.
  • Researchers and journalists: study the generation mix, solar and wind shares, and price spikes.
  • AI agents and RAG: give an assistant current, sourced Polish power prices on request.

FAQ

Is there an API for Polish electricity / power-grid data (PSE)? Yes. PSE publishes a public market-data API at api.raporty.pse.pl. This Actor turns those live reports into clean RCE, day-ahead, imbalance, Kompas Energetyczny, load and generation-mix rows callable from the Apify API, with CSV/JSON/Excel export.

How do I export PSE RCE / Kompas prices to CSV or Excel? Pick datasets (e.g. rce, kompas), set lastDays or dateFrom/dateTo, choose granularity, run the Actor, then download the dataset as CSV or Excel from the run page or via the Apify API.

May I reuse PSE data commercially? Yes. PSE allows reuse "zarówno w celach komercyjnych, jak i niekomercyjnych" if you name the source, give the retrieval date, remove the PSE logo and say how the data was processed (see Source and attribution). Every row carries source, retrievedAt and processingNote.

What is the difference vs scraping raporty.pse.pl or ENTSO-E feeds? Scrapers hit HTML UIs and break easily; ENTSO-E is pan-European and differently shaped. This Actor reads the official PSE market-data API for Poland only, with 15-min/hourly/daily aggregation, onlyNew revisions and attribution fields on every row.

Is it legal to reuse this data? Yes. PSE allows reuse for commercial and non-commercial purposes if you name the source, give the retrieval date and say how the data was processed (see Source and attribution). Every row carries these fields.

Where does the data come from? The public PSE market-data API at api.raporty.pse.pl. The Actor does not scrape web pages.

How fresh is it? It is read live at run time. RCE and the other day-ahead reports for tomorrow appear after about 14:00 Polish time. Settlement values can be revised, and onlyNew delivers a revised row again.

Rate limits? PSE publishes none. The Actor sends one request at a time at up to maxRequestsPerSecond (default 2) and retries failures with backoff.

Integrations

  • API: start runs and read the dataset with the Apify API or the Python and JavaScript clients.
  • Schedules: run every afternoon with onlyNew to receive only new or revised rows.
  • Webhooks: call your endpoint, Make, Zapier or n8n when a run finishes.
  • MCP and AI agents: call the Actor as a tool through the Apify MCP server.

Development

python3 -m venv .venv && .venv/bin/pip install -r requirements-dev.txt
.venv/bin/python -m pytest -q # offline tests on recorded PSE responses
examples/run-local-ppe.sh examples/smoke-rce-yesterday-tomorrow.json # local run with simulated pay-per-event prices (apify-cli, no login)

examples/pricing_info.local.json holds the simulated price. docs/DESIGN.md describes the design.

Limitations

  • The PSE reuse page covers information published on www.pse.pl. The market-data API is the PSE service linked from that site and publishes no separate terms.
  • Hourly and daily prices are arithmetic means of the 15-minute values, not volume-weighted averages.
  • PSE repeats some rows (for example Kompas on 2026-04-21); the latest publication wins.
  • onlyNew remembers the most recent 100,000 rows per stateKey. Runs sharing a key must not overlap.
  • A dataset that fails (HTTP error after retries, or an unexpected response shape) does not stop the others; the run ends FAILED with the reason and keeps the rows already saved.
  • The source has no published rate limit. Large backfills of many datasets can take several minutes; raise the run timeout if needed.

Disclaimer

This Actor is unofficial. It is not affiliated with or endorsed by PSE. Check critical values against raporty.pse.pl before you rely on them.

🇵🇱 Po polsku

Dane PSE: rynkowa cena energii RCE i Kompas Energetyczny – Actor pobiera oficjalne dane z API raportów PSE: RCE (ważna dla prosumentów w net-billingu), cenę day-ahead, ceny rozliczeniowe niezbilansowania, Kompas Energetyczny (PDGSZ), zapotrzebowanie KSE i generację według źródeł. Dane są w wierszach 15-minutowych, godzinowych lub dobowych.

  • Wejście: raporty (datasets), okres (lastDays albo dateFrom/dateTo), rozdzielczość (granularity), tylko nowe lub zmienione wiersze (onlyNew), limit maxItems.
  • Wyjście: wiersze z cenami w PLN/MWh lub mocą w MW, z czasem w UTC i czasie polskim oraz polami źródła wymaganymi przez PSE.
  • Cena: $0.0003 za wiersz (data-row). Wiersze pominięte przez onlyNew są bezpłatne.
  • Źródło: Polskie Sieci Elektroenergetyczne S.A., informacja pozyskana ze strony www.pse.pl. Actor nie jest oficjalnym narzędziem PSE.