# Rebase Grid API > Open REST API for European power system and electricity market time series: day-ahead prices, > load, generation by type, wind and solar forecasts, cross-border flows, balancing and grid > frequency, from ENTSO-E, TSOs and exchanges, in one schema. No API key and no sign-up are needed: > every endpoint answers without a key at 30 requests per minute per IP address. A free key raises > the limit to 240 per minute. Base URL: https://grid.rebase.energy/api/v1 A call that works as it is (day-ahead prices of the Swedish price zone SE3, one day): curl "https://grid.rebase.energy/api/v1/entities/SE-SE3/timeseries/price.day_ahead.day_ahead_auction_price/values?provider=entsoe&start=2026-11-09T00:00:00Z&end=2026-11-10T00:00:00Z" Find a timeseries: GET /timeseries?entity=DE-LU&q=day-ahead (entities: GET /entities). Contract: https://grid.rebase.energy/docs/v1/openapi.json. Every page as one file: https://grid.rebase.energy/docs/v1/llms-full.txt ## Calling rules [#calling-rules] These rules follow from how the endpoints are built. They hold for a script as much as for an agent: following them, a job makes few requests, stays under the rate limit and avoids errors. ### Requests [#requests] * **No key is needed.** Every endpoint answers a request without an API key, at **30 requests per minute per IP address** (up to 30 at once, refilled at one every 2 seconds). See [Use without a key](https://grid.rebase.energy/docs/v1/guides/open-access/). * **240 requests per minute per key**, as a token bucket: up to 240 in a burst, refilled at 4 per second. A key is free: [Get a key](https://grid.rebase.energy/docs/v1/guides/authentication/#get-a-key). * **Read several timeseries in one request.** [`POST /timeseries/values`](https://grid.rebase.energy/docs/v1/reference/read/many-values/) returns the latest values of up to 2,000 timeseries (5 without a key) over one shared window, and counts as one request. Use it instead of one values call per timeseries: see [Reading many timeseries](https://grid.rebase.energy/docs/v1/guides/agents/#reading-many-timeseries). * **Retry 429 and 503 after `Retry-After`.** A 400 or a 404 fails the same way when repeated: read its `message`, and `param` (the offending parameter, on a 400) or `closest` (the nearest ids or names, on a 404). * **`next` has two forms.** On search, values snapshots and the many-series call, `next` is a value: send the same request again with `cursor` set to it. On the lists under an entity (`plants`, `units`, `portfolios`), `next` is the path and query of the next page: request it as it is, and do not pass it as `cursor`. In both, `null` means the last page. ### Finding timeseries [#finding-timeseries] * **Walk the tree first.** At the start the entity ids, their kinds and their parents are unknown, and search needs them. Three calls give the full context: 1. [`GET /entities`](https://grid.rebase.energy/docs/v1/reference/discover/entity-tree/): the whole tree; 2. [`GET /entities/{entity}`](https://grid.rebase.energy/docs/v1/reference/discover/entity/): one entity with its parent, children and relations; 3. [`GET /entities/{entity}/timeseries`](https://grid.rebase.energy/docs/v1/reference/discover/timeseries-names/): the names on it, with their providers. * **Then search.** Once the entities and the naming are known, [`GET /timeseries`](https://grid.rebase.energy/docs/v1/reference/discover/search/) with `entity` and `q` (or `category`, `data_type`) finds further timeseries in one call each. Pages hold up to 1,000 items (`limit=1000`). * **Take ids from the API; do not compose them.** A country is its English name (`Sweden`, `Germany-Luxembourg`), a price zone its code (`SE-SE3`, `IT-NO`, `SEM`, `GB`), and every other kind carries a prefix (`border:FI~SE-SE3`, `plant:46WPU0000000015W`, `unit:46WGU0000000137O`). ISO country codes (`IT`, `IE`), guessed zone names (`IT-NORD`, `IE-SEM`) and bare EIC codes are not ids. A wrong id is a 404 whose `closest` lists the nearest real ones. * **A border id is its two zone ids in alphabetical order**, joined by `~`: `border:FR~GB`, not `border:GB~FR`. Only pairs with a market link exist: read the borders of a zone from `relations` in [`GET /entities/{entity}`](https://grid.rebase.energy/docs/v1/reference/discover/entity/). Its `positive` field gives the direction of a positive flow. A border series is not on every border: day-ahead NTC (`exchange_capacity.ntc_atc.day_ahead_ntc`) exists only where capacity is allocated border by border, not on the flow-based borders of central western Europe (`border:BE~FR`, `border:DE-LU~FR`). * **Names differ per entity and per provider.** A name read on one entity, such as a capacity series on one border, need not exist on the next one, and a provider that publishes it for one zone may not for another. List `GET /entities/{entity}/timeseries` for each entity before building values URLs. A 404 on a values call means the name is not on that entity; an empty window is a `200` with no points. * **Ids and names do not change**, so the tree and the list of timeseries a job uses can be kept and reused instead of read again on every run. ### Metadata [#metadata] * **Read the metadata once per timeseries.** Latency, coverage and annotations are computed over the last seven days (the last 20,000 intervals of a series finer than one minute) and kept for 24 hours, so reading them more often returns the same numbers. Its `resolution` sets the window size (next section). ### Reading values [#reading-values] * **`provider`, `start` and `end` are required** on every values call. `provider` is required also when only one exists (a 400 without it lists the ones to choose from, in `providers`); `start` and `end` are UTC timestamps (`2026-11-09T00:00:00Z`), both inclusive. The query separator is a plain `&`: a URL copied from HTML with `&` loses every parameter after the first. * **Read `resolution` from the metadata, then use the largest window that fits.** A values call may span at most 100,000 points at the series' resolution: 11 years at `PT1H`, about 1,041 days at `PT15M`, 69 days at `PT1M`, under 5 days at `PT4S` and under 28 hours at `PT1S`. aFRR activation prices (`PT4S`) and grid frequency are that fine, so a 30-day window that works for a day-ahead price is a `400` for them. A series without a fixed resolution (`resolution: null`: outages published as change-points, installed capacity) may span at most 366 days. A longer range is split into consecutive windows; a larger window is `400` (`param: end`) before any data is read. * **Poll by publication latency, not by the clock.** `latency_minutes` says when a provider's value for an interval usually arrives (p50) and nearly always has (p95). A live job that runs after the p95 finds its data in one call. * **Re-read a trailing window to catch revisions.** Values are selected by `valid_time`; a correction to an interval read earlier arrives as a new version of that interval, not as a new interval. An incremental job re-reads the last day or so with each run, not only the newest intervals. ### Reading many timeseries [#reading-many-timeseries] * **One many-series call instead of N values calls.** When a job needs the same window from several timeseries, [`POST /timeseries/values`](https://grid.rebase.energy/docs/v1/guides/many-values/) takes them as a list of `{entity, name, provider}` in a JSON body, with one `start` and `end` for all. Up to 2,000 timeseries per call with a key, 5 without. * **Follow `next`.** A page holds whole series up to 200,000 points in total. When `next` is not `null`, send the same body again with `cursor` set to it. * **Check each block.** A series that cannot be read does not fail the call: its block carries `error` in place of `points`, and the call is still `200`. * **Latest version only.** For values as known at an earlier time (`as_of`), use the one-series [values call](https://grid.rebase.energy/docs/v1/guides/values/). Metadata is also one call per timeseries. ### Reading many versions [#reading-many-versions] * **`as_of` takes three forms**: an instant (`2026-11-09T10:00:00Z`: the data as known then), a period (`P1D`, `PT1H`: one snapshot per period) or `rolling`. Nothing else is accepted. * **One snapshot call instead of many instant calls.** To see the data as it was at N instants, one call with `as_of` set to their period (`P1D&at=10:00`, `PT1H`) returns all N snapshots; N calls with `as_of` set to each instant return the same data. * **Snapshot pages hold up to 1,000 snapshots** (`max_snapshots=1000`; the default is 100). Each page reads the whole window again, so fewer, larger pages mean fewer calls. Follow `next`, passed back as `cursor`, until it is `null`. * **A request may produce at most 10,000 snapshots, and each repeats the window**, so keep the window short or the period long; more is `400` (`param: as_of`). # Docs - Guides - **Get started** - [Introduction](https://grid.rebase.energy/docs/v1/guides/introduction/): European power system data from TSOs, exchanges and transparency platforms. - [Use without a key](https://grid.rebase.energy/docs/v1/guides/open-access/): Every endpoint answers without an API key, at 30 requests per minute. No sign-up, no token, no header. - [Authentication](https://grid.rebase.energy/docs/v1/guides/authentication/): A key is optional. How to get one, and how to send it. - [Quickstart](https://grid.rebase.energy/docs/v1/guides/quickstart/): Read the day-ahead price of three price zones, in three steps. - [Use with an agent](https://grid.rebase.energy/docs/v1/guides/agents/): What to give an agent so it can call the API on its own, and the rules for doing it in few requests and without errors. - **Discover** - [Entities](https://grid.rebase.energy/docs/v1/guides/entities/): The objects that hold timeseries, and how they nest. - [Plants, units and portfolios](https://grid.rebase.energy/docs/v1/guides/plants/): The power plants, their units and the market portfolios, as entities with cards, lists and their own timeseries. - [Timeseries names](https://grid.rebase.energy/docs/v1/guides/timeseries-names/): How a timeseries is named, and every category with data today. - [Search](https://grid.rebase.energy/docs/v1/guides/search/): Find a timeseries across all entities in one call. - **Describe** - [Metadata](https://grid.rebase.energy/docs/v1/guides/metadata/): What a timeseries measures, and the metadata of each provider that publishes it. - **Read** - [Reading values](https://grid.rebase.energy/docs/v1/guides/values/): Read the values of a timeseries, in the latest version or as they were known at a time. - [Reading many timeseries](https://grid.rebase.energy/docs/v1/guides/many-values/): Read the latest values of up to 2,000 timeseries in one call. - **Examples** - [Plot every version of a forecast](https://grid.rebase.energy/docs/v1/guides/forecast-versions/): Read a forecast as it was known hour by hour, and draw each version it went through. - [Production by type as a stacked bar chart](https://grid.rebase.energy/docs/v1/guides/production-by-type/): Find every production type of a price zone, read each one, and stack them by day. - **Reference** - [Errors](https://grid.rebase.energy/docs/v1/guides/errors/): Error responses and what they carry. - [Limits](https://grid.rebase.energy/docs/v1/guides/limits/): Request rate, response size and paging. - [Sources](https://grid.rebase.energy/docs/v1/guides/sources/): Every provider the API serves data from. - API Reference - Discover - [Entity tree](https://grid.rebase.energy/docs/v1/reference/discover/entity-tree/) - [Entity](https://grid.rebase.energy/docs/v1/reference/discover/entity/) - [Timeseries names](https://grid.rebase.energy/docs/v1/reference/discover/timeseries-names/) - [Search timeseries](https://grid.rebase.energy/docs/v1/reference/discover/search/) - [Plants in an entity](https://grid.rebase.energy/docs/v1/reference/discover/plants/) - [Units in an entity](https://grid.rebase.energy/docs/v1/reference/discover/units/) - [Portfolios in an entity](https://grid.rebase.energy/docs/v1/reference/discover/portfolios/) - Describe - [Timeseries metadata](https://grid.rebase.energy/docs/v1/reference/describe/timeseries-metadata/) - Read - [Timeseries values](https://grid.rebase.energy/docs/v1/reference/read/values/) - [Values of many timeseries](https://grid.rebase.energy/docs/v1/reference/read/many-values/) - Account - [Account](https://grid.rebase.energy/docs/v1/reference/account/me/) - [Version](https://grid.rebase.energy/docs/v1/reference/account/version/)