About this portal
Grid Data Portal is a demonstration application: a working data portal for wholesale electricity market data, built as real software rather than a static mockup. It offers a searchable product catalog, a per-report data viewer with filtering, charting and export, archive listings, and a REST API — all over a synthetic data layer.
This is not an official source. It is not affiliated with, endorsed by, or connected to any grid operator, independent system operator, or market authority. Nothing here should be used for trading, settlement, compliance, or operational decisions.
Where the catalog comes from
The 27 products are modelled on the public data products a real wholesale market operator publishes. Report identifiers, endpoint paths and field schemas follow the conventions such an API uses — opaque report codes like np6-788-cd/lmp_node_zone_hub, and field names like deliveryDate, hourEnding, SCEDTimestamp and settlementPoint. The point of matching those conventions is that client code written against a real market API will read this one too.
Product descriptions, update frequencies and protocol references are written to be accurate in substance, but the catalog is a working model rather than a mirror of any particular operator's published list. For authoritative product metadata, always go to the operator you actually care about.
How the data is generated
The real Public API requires a subscription key and B2C credentials, so every record served here is synthetic. Values are produced by a seeded generator that models the shapes real market data actually takes:
- System load follows a seasonal curve with a summer evening peak and a secondary winter morning peak, in the 40–85 GW range.
- Wind runs higher overnight and in spring; solar is a daytime bell curve modulated by a per-day cloud regime.
- Prices are driven by net load, so they climb steeply when load is high and renewables are low, spike during scarcity, and go negative when overnight renewables outrun demand.
- Hubs and zones carry realistic basis — West and Panhandle price below the hub average, Houston above it.
- Batteries in the ESR report charge into low prices and discharge into peaks, with a state of charge that tracks that behaviour.
Generation is seeded on the report, date and row, so any given request returns the same records every time and pagination stays consistent.
Pointing it at real data
Because the route handlers own the response shape, swapping in the live service is a contained change: replace the generator call in src/lib/query.ts with a fetch against https://api.grid-operator.example/api/public-reports, attaching the Ocp-Apim-Subscription-Key header and a bearer token. The UI consumes the envelope, not the generator, so nothing above the query layer needs to change.