MDS

Market Data Service — real-time status and data freshness

Loading...
Fetching status data
REST API
--
Data Sources
--
Stale Sources
--
Latest Data
--
Last Checked
--

Data Source Freshness

Source Status Last Updated Age Expected Lag Freshness
Loading...

Markets & Areas

Loading...

API Access

Credentials: HTTP Basic users in the marketdata.marbl.energy htpasswd (per-machine users, e.g. mds-status, ai-worker-01). On the workstation they live in the status repo's .env.local as MDS_USER / MDS_PASS — the smoke-test scripts load it automatically. The same credential works for REST and gRPC.

REST

Base URL https://marketdata.marbl.energy — HTTP Basic auth at the edge. The OpenAPI 3 spec is served by the API itself:

source .env.local   # provides MDS_USER / MDS_PASS

curl -u "$MDS_USER:$MDS_PASS" https://marketdata.marbl.energy/api/v1/health
curl -u "$MDS_USER:$MDS_PASS" https://marketdata.marbl.energy/api/v1/openapi.yaml -o openapi.yaml
curl -u "$MDS_USER:$MDS_PASS" "https://marketdata.marbl.energy/api/v1/prices/day-ahead?zone=DE-LU&limit=24"

Import the downloaded openapi.yaml into Swagger Editor / Insomnia / Postman for a browsable API page.

gRPC

marketdata.v1.EnergyMarketService — TLS on marketdata.marbl.energy:443, same basic-auth credentials sent as gRPC metadata. Server reflection is enabled, so grpcurl needs no proto files:

source .env.local   # provides MDS_USER / MDS_PASS
AUTH="Authorization: Basic $(printf '%s:%s' "$MDS_USER" "$MDS_PASS" | base64 -w0)"

grpcurl -H "$AUTH" marketdata.marbl.energy:443 list
grpcurl -H "$AUTH" marketdata.marbl.energy:443 describe marketdata.v1.EnergyMarketService
grpcurl -H "$AUTH" -d '{}' marketdata.marbl.energy:443 marketdata.v1.EnergyMarketService/HealthCheck
grpcurl -H "$AUTH" -d '{"zone":"DE-LU"}' marketdata.marbl.energy:443 marketdata.v1.EnergyMarketService/GetDayAheadLatest
grpcurl -H "$AUTH" -d '{"zone":"AT","limit":3}' marketdata.marbl.energy:443 marketdata.v1.EnergyMarketService/GetDayAheadPrices

Live Market Feed (gRPC streaming)

orderbook.v1.MarketFeedService/SubscribeFeed — long-lived server-streaming RPC delivering a snapshot of the current orderbook followed by typed deltas, trades, contract notifications, and heartbeats in real time. Same auth, same endpoint:

source .env.local
AUTH="Authorization: Basic $(printf '%s:%s' "$MDS_USER" "$MDS_PASS" | base64 -w0)"

# Subscribe to AT intraday feed (streams until cancelled):
grpcurl -H "$AUTH" -d '{"delivery_area":"AT"}' \
  marketdata.marbl.energy:443 orderbook.v1.MarketFeedService/SubscribeFeed

# Quick check (first 30s, then exit):
grpcurl -H "$AUTH" -d '{"delivery_area":"AT"}' -max-time 30 \
  marketdata.marbl.energy:443 orderbook.v1.MarketFeedService/SubscribeFeed

Message types: ORDERBOOK_SNAPSHOT, SNAPSHOT_COMPLETE, ORDER_DELTA, TRADE, CONTRACT, HEARTBEAT (every ~15s, includes upstream_connected flag).

Smoke-test scripts live in the status repo: scripts/check-rest.sh and scripts/check-grpc.sh.