Public data products from a wholesale electricity market

Grid Data PortalWholesale electricity market data

API Reference

Every product in the catalog is reachable as a REST endpoint. Paths, query conventions and the response envelope follow the reference Public API so client code written against one works against the other.

Endpoints

Data endpoints are addressed by Report ID and endpoint name:

GET /api/public-reports/{reportId}/{endpoint}

# example
GET /api/public-reports/np6-788-cd/lmp_node_zone_hub

The base path stands in for https://api.grid-operator.example/api/public-reports on the real service. No subscription key or bearer token is required here.

Response envelope

Responses separate the schema from the rows. Columns are described once in fields, and each record is a positional array in data.

{
  "_meta": {
    "totalRecords": 8640,
    "pageSize": 100,
    "totalPages": 87,
    "currentPage": 1,
    "query": { "deliveryDateFrom": "2026-08-01" }
  },
  "report": {
    "name": "LMPs by Resource Nodes, Load Zones and Trading Hubs",
    "reportId": "np6-788-cd",
    "displayId": "NP6-788-CD",
    "endpoint": "lmp_node_zone_hub"
  },
  "fields": [
    { "name": "SCEDTimestamp", "label": "SCED Timestamp", "dataType": "TIMESTAMP" },
    { "name": "settlementPoint", "label": "Settlement Point", "dataType": "STRING" },
    { "name": "LMP", "label": "LMP", "dataType": "FLOAT", "unit": "$/MWh" }
  ],
  "data": [
    ["2026-08-01T00:00:00", "HB_NORTH", 28.44],
    ["2026-08-01T00:00:00", "HB_HOUSTON", 31.02]
  ]
}

To rebuild named records, zip each row against the field list:

const rows = body.data.map((row) =>
  Object.fromEntries(row.map((v, i) => [body.fields[i].name, v])),
);

Filtering

Any field marked filterable in a report's schema can be used as a query parameter. String and boolean fields match exactly; numeric, date and timestamp fields take From and To suffixes for ranges.

# exact match
?settlementPoint=HB_NORTH

# numeric range
?LMPFrom=100&LMPTo=5000

# date range
?deliveryDateFrom=2026-08-01&deliveryDateTo=2026-08-07

# combined
?settlementPoint=HB_WEST&LMPFrom=0&deliveryDateFrom=2026-08-01

# sort (portal extension)
?sort=LMP&dir=desc

Filters combine with AND. A date filter applied to a timestamp field matches on prefix, so SCEDTimestamp=2026-08-01 returns every interval that day.

Pagination

?page=1&size=1000   # size caps at 5000, defaults to 100

Read _meta.totalPages from the first response and walk forward until you reach it:

let page = 1, all = [], total;
do {
  const res = await fetch(`${url}&page=${page}&size=1000`);
  const body = await res.json();
  all.push(...body.data);
  total = body._meta.totalPages;
} while (page++ < total);

Requests are also bounded by date span: reports posted every five or fifteen minutes serve at most 7 days per request, hourly and daily reports up to 31 and 62 days respectively. A wider range is clamped to the most recent window rather than rejected.

Archive listings

The archive endpoint lists individual postings of a report, newest first, each linking to the data it contained.

GET /api/public-reports/archive/{reportId}
  ?postDatetimeFrom=2026-08-01&postDatetimeTo=2026-08-07&page=1&size=50

{
  "_meta": { "totalRecords": 2016, "totalPages": 41, "currentPage": 1 },
  "archives": [
    {
      "docId": 1043227,
      "postDatetime": "2026-08-07T23:55:00",
      "friendlyName": "cdr.np6_788_cd.20260807235500.csv",
      "bytes": 184213,
      "_links": { "endpoint": { "href": "/api/public-reports/..." } }
    }
  ]
}

CSV export

Add format=csv to any data request to receive the current page as a CSV download instead of JSON. Filters and page size apply unchanged.

GET /api/public-reports/np6-345-cd/act_sys_load_by_wzn
  ?deliveryDateFrom=2026-08-01&deliveryDateTo=2026-08-07&size=1000&format=csv

Endpoint catalog

All 27 endpoints exposed by this portal.

Report IDPathReport
NP6-788-CD/np6-788-cd/lmp_node_zone_hubLMPs by Resource Nodes, Load Zones and Trading Hubs
NP6-787-CD/np6-787-cd/lmp_electrical_busLMPs by Electrical Bus
NP6-905-CD/np6-905-cd/spp_node_zone_hubSettlement Point Prices at Resource Nodes, Hubs and Load Zones
NP6-970-CD/np6-970-cd/rtd_lmp_node_zone_hubRTD Indicative LMPs by Resource Nodes, Load Zones and Trading Hubs
NP6-323-CD/np6-323-cd/sced_system_lambdaSCED System Lambda
NP4-190-CD/np4-190-cd/dam_stlmnt_pnt_pricesDAM Settlement Point Prices
NP4-183-CD/np4-183-cd/dam_hourly_lmpDAM Hourly LMPs
NP4-188-CD/np4-188-cd/dam_clear_price_for_capDAM Clearing Prices for Capacity
NP4-33-CD/np4-33-cd/dam_as_planDAM Ancillary Service Plan
NP4-19-CD/np4-19-cd/dam_agg_as_offersDAM Aggregated Ancillary Service Offer Curves
NP4-523-CD/np4-523-cd/dam_system_lambdaDAM System Lambda
NP4-191-CD/np4-191-cd/dam_shadow_pricesDAM Shadow Prices
NP6-86-CD/np6-86-cd/shdw_prices_bnd_trns_constSCED Shadow Prices and Binding Transmission Constraints
NP6-345-CD/np6-345-cd/act_sys_load_by_wznActual System Load by Weather Zone
NP6-346-CD/np6-346-cd/act_sys_load_by_fznActual System Load by Forecast Zone
NP3-565-CD/np3-565-cd/lf_by_model_weather_zoneSeven-Day Load Forecast by Model and Weather Zone
NP4-732-CD/np4-732-cd/wpp_hrly_avrg_actl_fcastWind Power Production - Hourly Averaged Actual and Forecasted Values
NP4-742-CD/np4-742-cd/wpp_hrly_actual_fcast_geoWind Power Production - Hourly Actual and Forecasted Values by Geographical Region
NP4-737-CD/np4-737-cd/spp_hrly_avrg_actl_fcastSolar Power Production - Hourly Averaged Actual and Forecasted Values
NP4-745-CD/np4-745-cd/spp_hrly_actual_fcast_geoSolar Power Production - Hourly Actual and Forecasted Values by Geographical Region
NP3-233-CD/np3-233-cd/hourly_res_outage_capHourly Resource Outage Capacity
NP3-910-ER/np3-910-er/agg_gen_summaryTwo-Day Aggregated Generation Summary
NP3-911-ER/np3-911-er/two_day_as_reportsTwo-Day Ancillary Services Reports
NP4-765-ER/np4-765-er/esr_integrationESR Integration Report
NP3-965-ER/np3-965-er/60_sced_smne_gen_res60-Day SCED Settlement Metered Net Energy for Generation Resources
NP3-966-ER/np3-966-er/60_dam_gen_res_as_offers60-Day DAM Ancillary Service Offers - Generation Resources
NP3-906-EX/np3-906-ex/sced_as_capacity_monitorSCED Ancillary Service Capacity Monitor