Utilitarian Spot

Developer documentation

Reusable JSON endpoints, examples, and response formats for Utilitarian Spot.

Available Zones

Each endpoint uses the zone codes below.

Nordics
🇸🇪 Sweden: SE1, SE2, SE3, SE4
🇩🇰 Denmark: DK1, DK2
🇳🇴 Norway: NO1, NO2, NO3, NO4, NO5
🇫🇮 Finland: FI
Central Europe
🇩🇪 Germany: DE_LU
🇦🇹 Austria: AT
🇫🇷 France: FR
🇧🇪 Belgium: BE
🇳🇱 Netherlands: NL
🇵🇱 Poland: PL
Eastern & Southern
🇪🇪 Estonia: EE
🇱🇹 Lithuania: LT
🇱🇻 Latvia: LV
🇮🇹 Italy: IT-NORTH, IT-CENTRE_NORTH, IT-CENTRE_SOUTH, IT-SOUTH, IT-SICILY, IT-SARDINIA, IT-CALABRIA
🇪🇸 Spain: ES
🇵🇹 Portugal: PT

REST API endpoints

All timestamps are ISO‑8601 in UTC. Responses are JSON arrays of objects with timestamp and value.

Python examples

import httpx

# Latest prices for SE1
latest = httpx.get(
    "https://spot.utilitarian.io/electricity/SE1/latest/"
).json()

# All prices for 2022
year_2022 = httpx.get(
    "https://spot.utilitarian.io/electricity/SE2/2022/"
).json()

# Prices for May 2022
may_prices = httpx.get(
    "https://spot.utilitarian.io/electricity/SE3/2022/05/"
).json()

# Specific day: May 3rd 2022
may_3rd = httpx.get(
    "https://spot.utilitarian.io/electricity/SE4/2022/05/03/"
).json()

Response format

[
  {
    "timestamp": "2025-10-09T00:00:00+00:00",
    "value": "27.12"
  },
  {
    "timestamp": "2025-10-09T00:15:00+00:00",
    "value": "28.03"
  }
]

Technical notes

CORS enabled

Call endpoints directly from browsers.

Static & cacheable

Use If-Modified-Since to avoid re-downloading unchanged data.

ENTSO-E data

All values originate from the ENTSO-E Transparency Platform in UTC and €/MWh.

How price data works

Each price point is valid from its timestamp until the next point is reached. We omit explicit intervals to keep payloads compact.

Values are expressed in €/MWh. Some markets deliver hourly values, others provide 15-minute granularity.

Build charts & apps without limits

  • Endpoints are public with CORS enabled and no rate limiting.
  • Perfect for dashboards, notebooks, automation, or IoT controllers.
  • No API keys required—call the JSON URLs directly.

Using Spot with LLMs

Spot is intentionally LLM-friendly: no authentication, no rate limits, and a published OpenAPI schema. Agents can call the REST endpoints directly or load the schema automatically.

Function-calling drop-ins

Use these payloads when registering tools with OpenAI, Anthropic, or similar runtimes.

// OpenAI function definition
{
  "type": "function",
  "function": {
    "name": "spot_get_latest",
    "description": "Return the latest day-ahead prices for a bidding zone (€/MWh).",
    "parameters": {
      "type": "object",
      "properties": {
        "zone": {
          "type": "string",
          "description": "ENTSO-E bidding zone such as SE3, NO2, DE_LU"
        }
      },
      "required": ["zone"]
    }
  }
}
// Example tool call (OpenAI)
{
  "id": "spot-call-1",
  "type": "function",
  "function": {
    "name": "spot_get_latest",
    "arguments": "{\"zone\":\"SE3\"}"
  }
}
// Anthropic tool referencing OpenAPI
{
  "name": "spot_api",
  "description": "Utilitarian Spot electricity price API",
  "input_schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$ref": "https://spot.utilitarian.io/api/openapi.yaml#/components/schemas/PriceRecord"
  }
}
# LangChain helper
from langchain.tools import StructuredTool
import httpx

def fetch_latest(zone: str):
    resp = httpx.get(f"https://spot.utilitarian.io/electricity/{zone}/latest/")
    resp.raise_for_status()
    return resp.json()

spot_tool = StructuredTool.from_function(
    func=fetch_latest,
    name="spot_latest_prices",
    description="Return the latest electricity prices (€/MWh) for a bidding zone such as SE3 or DE_LU."
)

Few-shot Q&A for agents

Give your assistant realistic examples of how to translate questions into API calls and answers.

Q:

“What are the latest Swedish SE3 prices?”

Tool call:

{
  "name": "spot_get_latest",
  "arguments": {"zone": "SE3"}
}

A:

“SE3 latest prices (€/MWh): 2025-02-07T00:00Z → 55.12, … 2025-02-08T23:00Z → 48.63.”

Q:

“Give me the SE1 prices for May 2024.”

Tool call:

{
  "name": "spot_get_month",
  "arguments": {"zone": "SE1", "year": "2024", "month": "05"}
}

A:

“Returned 744 hourly datapoints for SE1 May 2024. Average price 32.44 €/MWh.”

Q:

“Compare NO2 and NO3 prices for 7 Feb 2025.”

Tool calls:

[
  {
    "name": "spot_get_day",
    "arguments": {"zone": "NO2", "year": "2025", "month": "02", "day": "07"}
  },
  {
    "name": "spot_get_day",
    "arguments": {"zone": "NO3", "year": "2025", "month": "02", "day": "07"}
  }
]

A:

“NO2 averaged 41.2 €/MWh; NO3 averaged 38.7 €/MWh on 2025‑02‑07. Spread 2.5 €/MWh.”