Construct the OASIS API request URL using the SingleZip endpoint: https://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_LMP&version=12&market_run_id=RTM&node=TH_NP15_GEN-APND&startdatetime={YYYYMMDDTHH:00-0800}&enddatetime={YYYYMMDDTHH:00-0800} where TH_NP15_GEN-APND is a trading hub node and timestamps use Pacific time with UTC offset.
The response is a ZIP archive containing one or more XML files; download and decompress the ZIP, then parse the XML which conforms to the CAISO OASIS schema — each file contains a ReportBody with Group elements and Row elements representing individual LMP records.
Each Row contains OPR_DT (operating date), OPR_HR (operating hour, 1–24), OPR_INTVAL (interval within the hour for sub-hourly markets), NODE_ID, MW (LMP total), PRC_ENERGY (energy component), PRC_CONGEST (congestion component), and PRC_LOSS (loss component).
For the Real-Time Market (RTM), intervals are 5 minutes; for the Day-Ahead Market, use market_run_id=DAM with hourly intervals; for the Fifteen-Minute Market (FMM), use HASP — specify the correct market_run_id to avoid mixing interval granularities.
Handle CAISO's operating-hour convention: hour 1 represents the interval from 00:00 to 01:00; this differs from some other ISOs — adjust your timestamp reconstruction accordingly when joining with other dataset timestamps.
Rate-limit your requests: CAISO OASIS has documented per-IP request limits; space requests at least several seconds apart and implement a retry queue with exponential backoff for HTTP 429 or HTTP 503 responses.
Known gotchas
CAISO uses Pacific Prevailing Time (PPT) in its timestamps, which switches between PST (UTC-8) and PDT (UTC-7) at DST boundaries; this causes ambiguous hours during the spring forward (one fewer interval) and fall back (one duplicate hour) — always convert to UTC immediately after parsing and store in UTC.
The default SingleZip response is XML compressed in a ZIP file, not a direct XML or JSON response; code that attempts to parse the raw HTTP response body as XML without first decompressing the ZIP will fail silently or raise a parse error — always decompress before parsing.
OASIS node identifiers (e.g., trading hubs, generation nodes) change periodically as CAISO adds or retires pricing nodes; hardcoded node lists will silently return no data for retired nodes — maintain a node list synchronized from the OASIS node metadata feed.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp