ERCOT Public Data API
ERCOT Public Data API
ERCOT's authenticated JSON API exposes its catalog of public Texas electricity-market reports and report artifacts, including load, generation, outages, forecasts, prices, constraints and ancillary services. Product metadata includes report identifiers, descriptions, posting frequency, activation and archive dates, file types and artifact links; a free account, subscription key and hourly ID token are required.
Coverage
Coverage is the ERCOT market in Texas, with product frequencies ranging from sub-hourly or hourly reports to daily and longer-period publications. API data begins at each product's Public Data API activation date; older historical files are retained for at least seven years. Access is limited to 30 requests per minute and 1,000 historic files per download, and regions outside the United States are currently restricted.
Verdict
This is a high-frequency Texas power-market signal for load, generation, outages, renewable forecasts, prices, constraints and reserves. Product-specific posting frequencies and archive starts differ, so ingestion should discover the catalog and preserve report timestamps and identifiers. ERCOT supplies the information as is, can change access limits, restricts current access outside the United States and may revise or replace reports. Registration must be completed manually because bot-created accounts are prohibited, and the Data Access Portal limits repeat downloads of the same report.
Get the free weekly email
Free weekly email of newly verified free data. Unsubscribe by emailing us.
By entering your email and clicking Subscribe, you agree to receive the Signal Lab weekly email from Quantum Data Technologies Ltd., 3200-650 West Georgia Street, Vancouver, BC V6B 4P7, Canada (signal-lab@qdt.ai). You can unsubscribe at any time: reply "unsubscribe" to any email or write to signal-lab@qdt.ai. See our Privacy Policy.
Use in your agent
Load the ERCOT public-report catalog into pandas and Parquet. Checked against the provider's documentation on Nov 1, 2026.
Access
- Create the free account manually, subscribe to the Public API product, and set ERCOT_USERNAME, ERCOT_PASSWORD and ERCOT_SUBSCRIPTION_KEY.
- Request a fresh ID token before API calls; tokens are valid for one hour.
- Current geographic controls restrict access from outside the United States.
Request
curl 'https://api.ercot.com/api/public-reports' -H "Ocp-Apim-Subscription-Key: $ERCOT_SUBSCRIPTION_KEY" -H "Authorization: Bearer $ERCOT_ID_TOKEN"Format
JSON HAL response whose embedded products contain EMIL ID, name, description, status, report type, audience, generation frequency, first run, file types, archive duration, download limit and artifact endpoint links.
Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
"""ERCOT public-report catalog -> pandas -> Parquet. Needs a free account."""
import os
import requests
import pandas as pd
AUTH_URL = "https://ercotb2c.b2clogin.com/ercotb2c.onmicrosoft.com/B2C_1_PUBAPI-ROPC-FLOW/oauth2/v2.0/token"
params = {
"username": os.environ["ERCOT_USERNAME"],
"password": os.environ["ERCOT_PASSWORD"],
"grant_type": "password",
"scope": "openid fec253ea-0d06-4272-a5e6-b478baeecd70 offline_access",
"client_id": "fec253ea-0d06-4272-a5e6-b478baeecd70",
"response_type": "id_token",
}
auth = requests.post(AUTH_URL, data=params, timeout=30)
auth.raise_for_status()
id_token = auth.json()["id_token"]
headers = {
"Authorization": f"Bearer {id_token}",
"Ocp-Apim-Subscription-Key": os.environ["ERCOT_SUBSCRIPTION_KEY"],
}
r = requests.get("https://api.ercot.com/api/public-reports", headers=headers, timeout=60)
r.raise_for_status()
products = r.json().get("_embedded", {}).get("products", [])
df = pd.json_normalize(products, sep="_")
df.to_parquet("ercot_public_report_catalog.parquet", index=False)
print(len(df), "ERCOT public-report products", len(df.columns), "fields")Not run: it needs a free account, subscription key and ID token.
Limits
- Rate limit: 30 requests per minute, approximately one every two seconds.
- Historic-file downloads are limited to 1,000 files at one time.
- API data begins at each product's activation date; older files are retained for at least seven years.
- Current geographic controls restrict regions outside the United States.
Quirks
- ID tokens expire after one hour and cannot be refreshed; request another token.
- Product frequencies, activation dates, schemas and artifact endpoints differ, so discover metadata before selecting reports.
- Data Access Portal terms limit the same report to three downloads in 12 months; store and reuse downloaded reports.
Terms and attribution
- Accounts must be registered manually; accounts created by bots or automated methods are prohibited.
- Use only the documented access methods and do not evade ERCOT's limits.
- API information is supplied as is without warranties of accuracy, timeliness or completeness.
Sources
- https://developer.ercot.com/applications/pubapi/user-guide/registration-and-authentication/: “To access ERCOT APIs, you must register as a user on the ERCOT”
- https://developer.ercot.com/applications/pubapi/user-guide/registration-and-authentication/: “ID tokens are valid for one hour. There is no way to refresh an ID token.”
- https://developer.ercot.com/applications/pubapi/known-limits/: “30 requests per minute”
- https://developer.ercot.com/applications/pubapi/known-limits/: “and is retained for at least 7 years.”
- https://www.ercot.com/help/terms/data-portal: “Accounts registered by "bots" or other automated methods are not permitted.”
Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer