With support from GridLab we were able to integrate an initial draft of the FERC Electric Quarterly Reports (EQR) into PUDL! EQR has been at the top of our data wishlist for almost half a decade and we’re excited to publish this first draft for beta testing.

What’s in EQR?
We’ve heard from PUDL users that efforts to design cost-effective decarbonization pathways are hindered by limited visibility into the financial flows and market structures that shape the electricity sector. EQR offers an enormous amount of data describing transaction-level data on prices, quantities, and contractual terms between power producers, utilities and financial intermediaries. Yet the dataset remains largely underutilized due to accessibility and quality barriers.
In its raw form, it is published by FERC as hundreds of gigabytes of nested zip files with little documentation, so querying and analyzing EQR data requires both domain knowledge and some data engineering skills. We hope that our minimally transformed version of EQR in PUDL will reduce barriers to access and get the data into the hands of the people that need it.
The EQR data records U.S. electricity wholesale market activity in great detail–sellers report transactions and their contractual terms on timescales ranging from 5-minutes in real-time spot markets, up to multi-year power purchase agreements (PPAs). With thousands of market participants and dozens of electricity products, the EQR contains billions of records.
EQR data is organized into three main tables: identifying sellers, describing contracts, and enumerating transactions. The seller identity table provides a unique FERC company ID that is used across multiple FERC Forms and associates that ID with the company name. The contracts table records 30 attributes of contracts that were active during the quarter, and whether or not any transactions took place under them. The transactions table contains 26 fields including the unit price, quantity and electricity product being sold.
Data Access
Tutorial Video and Python Notebook
Here’s a tutorial video showing how to access data and what you can expect to see in the data. In the video, we walk through this Python based interactive notebook which demonstrates how to access and work with the EQR data, including a toy analysis of the contracts and transactions tables.
Documentation
Review the FERC EQR data source documentation page and the data dictionary page for the 4 EQR tables:
- Contracts: core_ferceqr__contracts,
- Filer Identities: core_ferceqr__quarterly_identity,
- Index Publications: core_ferceqr__quarterly_index_pub,
- Transactions: core_ferceqr__transactions
PUDL Data Viewer
You can browse the data through our PUDL Data Viewer UI and download small subsets of the data.
Parquet Files from Cloud Storage
We publish Apache Parquet files of all EQR data released between 2013 and present to publicly accessible cloud storage. The files are partitioned by quarter. These will be automatically updated quarterly by the 15th of Feburary, May, August and November. You can find the data in S3 under this path:
s3://pudl.catalyst.coop/ferceqr
Each table has its own subdirectory, containing quarterly parquet files:
- s3://pudl.catalyst.coop/ferceqr/core_ferceqr__contracts/
- s3://pudl.catalyst.coop/ferceqr/core_ferceqr__quarterly_identity/
- s3://pudl.catalyst.coop/ferceqr/core_ferceqr__quarterly_index_pub/
- s3://pudl.catalyst.coop/ferceqr/core_ferceqr__transactions/
See here for more information on accessing PUDL data from cloud storage.
Feedback
There’s a bunch of additional data cleaning work that we’d like to take on if we can secure additional funding for the project. This includes tasks like cleaning and standardization of categorical data, finding and fixing invalid dates, and dealing with duplicate values.
We’d love to get some feedback from real users, hear about your use case, and figure out what issues you may have run into. You can reach out to us at [email protected], or if you run into any problems, please feel free to create an issue on GitHub. You can find the issues we’re already tracking here:

