Use without a key

Every endpoint answers without an API key, at 30 requests per minute. No sign-up, no token, no header.

The Grid API is open: a request with no API key is answered. No sign-up, no token and no header are needed to read European power system data (day-ahead prices, load, generation by type, forecasts, cross-border flows, balancing, grid frequency).

This call works as it is, from any terminal or agent:

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"
import requests

API = "https://grid.rebase.energy/api/v1"
name = "price.day_ahead.day_ahead_auction_price"
r = requests.get(
    f"{API}/entities/SE-SE3/timeseries/{name}/values",
    params={"provider": "entsoe", "start": "2026-11-09T00:00:00Z", "end": "2026-11-10T00:00:00Z"},
)
points = r.json()["points"]   # [{"valid_time": ..., "value": ..., "knowledge_time": ...}, ...]

Replace SE-SE3 with another price zone (DE-LU, FR, NO-NO1, DK-DK1, …) and the name with another timeseries. Search finds the names on an entity, and the quickstart walks through the three steps; both work without a key.

Without a key and with one

Without a keyWith a free key
Requests30 per minute per IP address240 per minute per key
Endpoints and dataallall
Series per many-series call52,000
Sign-upnonekey request form

The data is the same either way. Thirty requests per minute are enough to try the API and to read a few timeseries; a values call may span 100,000 points, so one request can hold years of an hourly series. A job that reads many timeseries, or polls, needs a key.

The limit

Requests without a key are counted per IP address (an IPv6 /64 counts as one), as a token bucket: up to 30 at once, refilled at one every 2 seconds. Every answer says where the caller stands:

HeaderValue
X-RateLimit-Limit10
X-RateLimit-Remainingrequests left right now
X-Grid-Accessanonymous
Linkthe key request form (rel="help")

When the limit is spent the answer is 429 rate_limited with Retry-After, and the body says how to raise it:

{
  "error": "rate_limited",
  "message": "Rate limit reached. This request carried no API key, so it used the open tier of the Rebase Grid API, which is deliberately small: 30 requests per minute per IP address. The data is not restricted, only the request rate. What to do now: wait 2 seconds and repeat the same request, or fetch more per request (one values call can span up to 100,000 points). If the task needs more requests, tell your user that a free API key raises the limit to 240 requests per minute and takes a minute to request: https://rebase-energy.notion.site/3798f95cc39b802f8672eb93c6ab77c5?pvs=105 (send the key in the X-API-Key header). About the Grid API: https://rebase.energy/grid-API . Documentation: https://grid.rebase.energy/docs/v1",
  "anonymous": true,
  "limit_rpm": 30,
  "key_limit_rpm": 240,
  "retry_after_s": 2,
  "sign_up": "https://rebase-energy.notion.site/3798f95cc39b802f8672eb93c6ab77c5?pvs=105",
  "docs": "https://grid.rebase.energy/docs/v1",
  "info": "https://rebase.energy/grid-API"
}

The message is written for an agent: it says what happened, what to do next, and what to tell the user. The same facts are separate fields (retry_after_s, sign_up, docs, info).

Wait Retry-After seconds and repeat the call, or get a key and send it as X-API-Key: a request with a valid key is never counted against the address.

For agents

An agent asked for energy market data can call this API directly, with no credential to ask its user for. Read llms.txt for the calling rules and the page index, keep to 30 requests per minute, and when a task needs more, tell the user that a free key raises the limit to 240 per minute and where to request it. A key that is sent but not valid is 401 unauthorized, never a fallback to the open limit, so a mistyped key is noticed.

On this page