PJM Queue API
9,251 entries LIVEEndpoint: https://services.pjm.com/PJMPlanningApi/api/Queue/GetFiltere...
Format: JSON (POST)
Auth: Public API key in header (api-subscription-key)
Refresh: Daily at 5am ET via Cloud Function
Code: scripts/lib/iso-queue-scraper.ts → scrapePJM()
Fields: queueNumber, projectName, state, county, fuelType, capacityMW, status, projectSubmittedDate, projectedInServiceDate, transmissionOwner
~9,200 entries. Most complete ISO API. Swagger docs available.
MISO GI Queue API
3,744 entries LIVEEndpoint: https://www.misoenergy.org/api/giqueue/getprojects
Format: JSON (GET)
Auth: None (public), browser-like User-Agent required
Refresh: Daily at 5am ET via Cloud Function
Code: scripts/lib/iso-queue-scraper.ts → scrapeMISO()
Fields: projectNumber, state, county, fuelType, summerNetMW, winterNetMW, applicationStatus, studyCycle, studyPhase, poiName
~3,700 entries. No project names exposed. studyCycle used for submission year (e.g., "DPP-2018-APR"). 403 errors if User-Agent is not browser-like.
SPP Queue CSV
2,833 entries LIVEEndpoint: https://opsportal.spp.org/Studies/GenerateSummaryCSV
Format: CSV
Auth: None (public)
Refresh: Daily at 5am ET via Cloud Function
Code: scripts/lib/iso-queue-scraper.ts → scrapeSPP()
Fields: GI Number, State, County, Fuel Type, Capacity, Status, Request Received, In-Service Date, Date Withdrawn
~2,800 entries. Clean CSV with header row. Also available: GenerateActiveCSV (active only).
ERCOT GIS Report (Excel)
1,874 entries LIVEEndpoint: https://www.ercot.com/misapp/servlets/IceDocListJsonWS?repor...
Format: Excel (.xlsx) via 2-step: list docs JSON → download Excel
Auth: None (public MIS endpoint)
Refresh: Daily at 5am ET via Cloud Function
Code: scripts/lib/iso-queue-scraper.ts → scrapeERCOT()
Fields: INR, Project Name, GIM Study Phase, County, Fuel, Technology, Capacity (MW), Projected COD, Screening Study Started
~1,800 entries across Large Gen + Small Gen sheets. 30 rows of notes/disclaimers before data. Header detection required. Published monthly by ERCOT.
CAISO Public Queue Report (Excel)
2,278 entries (dates through 2023) PARTIALEndpoint: https://www.caiso.com/PublishedDocuments/PublicQueueReport.x...
Format: Excel (.xlsx)
Auth: None (public)
Refresh: Daily at 5am ET via Cloud Function
Code: scripts/lib/iso-queue-scraper.ts → scrapeCAISO()
Fields: Queue Position, Project Name, Queue Date, Application Status, Fuel-1/2/3, MW-1/2/3, Net MWs to Grid, County, State, POI
~2,300 entries across 3 sheets (Active, Completed, Withdrawn). Dates are Excel serial numbers. Queue dates only go through early 2023 — Cluster 15/16 entries may not be in the public report yet.
NYISO Interconnection Queue (Excel)
2,021 entries LIVEEndpoint: https://www.nyiso.com/documents/20142/1407078/NYISO-Intercon...
Format: Excel (.xlsx)
Auth: None (public)
Refresh: Daily at 5am ET via Cloud Function
Code: scripts/lib/iso-queue-scraper.ts → scrapeNYISO()
Fields: Queue Pos., Project Name, Date of IR, SP (MW), WP (MW), Type/Fuel, County, State, POI, IA Tender Date
~2,000 entries across 7 sheets (Queue, Cluster, Withdrawn, In Service, etc.). Column name "Queue Pos." has trailing period.
ISO-NE IRTT Queue (HTML)
1,751 entries (many missing dates) PARTIALEndpoint: https://irtt.iso-ne.com/reports/external
Format: HTML table (ASP.NET)
Auth: None, but requires 2-step cookie handling (ASP.NET session)
Refresh: Daily at 5am ET via Cloud Function
Code: scripts/lib/iso-queue-scraper.ts → scrapeISONE()
Fields: QP, Fuel Type, Net MW, Summer MW, County, ST, POI, Project Status
~1,750 entries. Requires cookie-based fetch (AspxAutoDetectCookieSupport). Column "Requested" used for submission date but often empty. Status conveyed via <img> tags that must be converted to text.
EIA Form 860 (Planned Generators)
2,000 entries LIVEEndpoint: https://api.eia.gov/v2/electricity/facility-fuel/data/
Format: JSON (GET)
Auth: API key required (free registration)
Refresh: Daily at 5am ET via Cloud Function
Code: scripts/lib/iso-queue-scraper.ts → scrapeEIAPlannedGenerators()
Fields: plantCode, plantName, stateDescription, fuelTypeDescription, nameplate_capacity_mw, period
Supplements ISO queue data with EIA facility records. ~2,000 entries used. Excluded from year-over-year charts (not queue submissions). Mapped to ISOs via state.
LBNL Queues (Direct Download)
PLANNEDEndpoint: https://emp.lbl.gov/queues (Excel download)
Format: Excel
Auth: Returns 403 for automated requests (manual download only)
Refresh: Not automated
Fields: Aggregated queue data across all ISOs, standardized format
LBNL compiles all ISO queues into a single standardized dataset. Would be the gold standard but download is blocked for automated requests. Could use as annual validation.
Duke Energy Carolinas Queue
PLANNEDEndpoint: Unknown (utility-specific portal)
Format: Unknown
Auth: Unknown
Refresh: Not automated
Fields: Queue entries for largest non-ISO utility (50+ GW)
Duke Carolinas has the largest non-ISO queue in the country. No public API known. Would dramatically improve Southeast coverage.
Endpoint: Unknown (OASIS)
Format: Unknown
Auth: Unknown
Refresh: Not automated
Fields: Queue entries for GA/AL/MS territory
Southern Company (Georgia Power, Alabama Power, Mississippi Power) does not publish queue data in a machine-readable format.
Western Non-ISO Utility Queues
PLANNEDEndpoint: Various (BPA, PacifiCorp, NV Energy, APS, etc.)
Format: Various
Auth: Various
Refresh: Not automated
Fields: Queue entries from individual Western utilities
Each Western utility manages its own queue. BPA, PacifiCorp (Berkshire), NV Energy, APS/SRP have separate portals. No centralized source.