BYTETOOLS

aWATTar Market Data API

Free aWATTar API with no key: hourly German and Austrian day-ahead electricity market prices in EUR/MWh, published as soon as the exchange releases them. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the aWATTar Market Data API?

aWATTar publishes day-ahead wholesale electricity market prices for Germany and Austria as a free JSON API with no key. Each entry covers one hourly delivery period with its market price in euros per megawatt hour.

Day-ahead electricity prices are set once a day in an auction and then apply hour by hour through the following delivery day. This endpoint exposes exactly that curve, unadorned and without a key, which is why it underpins a large number of home-automation setups that shift a dishwasher or a car charger into the cheapest hours.

Three details govern correctness. Timestamps are **milliseconds** since epoch, not seconds, and `end_timestamp` is exclusive. The unit is EUR per MWh, so reaching cents per kWh means dividing by ten — 167.83 EUR/MWh is 16.783 ct/kWh before any network fee, levy or tax, which typically more than doubles what a household actually pays. And prices can be **negative** when generation exceeds demand; that is a real market outcome, not a data error, so never clamp at zero.

Quick facts

Base URL
https://api.awattar.de/v1
Authentication
No key or registration. The Austrian market is served from api.awattar.at with an identical interface.
Rate limit
No published limit. Prices publish once a day, so caching costs you nothing.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the aWATTar Market Data API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. German hourly day-ahead electricity prices

GET https://api.awattar.de/v1/marketdata

curl
curl 'https://api.awattar.de/v1/marketdata'
JavaScript (fetch)
const res = await fetch("https://api.awattar.de/v1/marketdata");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.awattar.de/v1/marketdata", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "object": "list",
  "data": [
    {
      "start_timestamp": 1787295600000,
      "end_timestamp": 1787299200000,
      "marketprice": 167.83,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1787299200000,
      "end_timestamp": 1787302800000,
      "marketprice": 149,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1787302800000,
      "end_timestamp": 1787306400000,
      "marketprice": 138.88,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1787306400000,
      "end_timestamp": 1787310000000,
      "marketprice": 135.21,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1787310000000,
      "end_timestamp": 1787313600000,
      "marketprice": 140.5,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1787313600000,
      "end_timestamp": 1787317200000,
      "marketprice": 141.17,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1787317200000,
      "end_timestamp": 1787320800000,
      "marketprice": 149.75,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1787320800000,
      "end_timestamp": 1787324400000,
      "marketprice": 166.49,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1787324400000,
      "end_timestamp": 1787328000000,
      "marketprice": 186.21,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1787328000000,
      "end_timestamp": 1787331600000,
      "marketprice": 196.99,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1787331600000,
      "end_timestamp": 1787335200000,
      "marketprice": 204.42,
      "unit": "Eu

Parameters

ParameterTypeRequiredDescription
startqueryOptionalStart of the window as Unix milliseconds. Defaults to the current hour. 1787295600000
endqueryOptionalEnd of the window as Unix milliseconds, exclusive. 1787382000000

Response fields

objectstring
Always `list` — an envelope marker.
data[].start_timestampinteger
Start of the delivery hour in Unix **milliseconds**. Divide by 1000 for a seconds-based timestamp.
data[].end_timestampinteger
End of the delivery hour, exclusive.
data[].marketpricenumber
Wholesale price for that hour. Can be negative.
data[].unitstring
`Eur/MWh`. Divide by 10 for cents per kWh.

What you can build with the aWATTar Market Data API

  • Schedule an EV charge or heat pump into the cheapest hours of the day
  • Chart the day-ahead price curve for a German or Austrian delivery day
  • Estimate the wholesale component of an energy bill
  • Trigger a home automation rule when the price crosses a threshold

Common errors and how to fix them

Timestamps a thousand years out

Milliseconds were parsed as seconds.

Fix: Divide `start_timestamp` by 1000 before passing it to a seconds-based date function.

Empty data array

The window is beyond what the auction has published.

Fix: Next-day prices appear in the early afternoon CET. Before that, requesting tomorrow returns nothing.

Negative prices treated as errors

They are real market outcomes.

Fix: Negative wholesale prices occur when generation exceeds demand. Do not clamp them at zero — the sign carries information.

aWATTar Market Data API — frequently asked questions

Is the aWATTar price API free?

Yes. The market data endpoint needs no key or registration, and the Austrian equivalent at api.awattar.at behaves identically.

Are these the prices a household pays?

No. They are wholesale day-ahead market prices. A retail bill adds network charges, levies and taxes on top, which usually more than doubles the figure.

Why are some prices negative?

Because when generation exceeds demand the market clears below zero. It is a genuine outcome of the day-ahead auction and appears in the data as a negative `marketprice`.

When do tomorrow's prices become available?

After the day-ahead auction clears, typically in the early afternoon Central European Time. Requesting tomorrow before that returns an empty array.

Tools that pair with this API

aWATTar Market Data is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.