---
name: wri-global-power-plants-ingestion
description: "How to get WRI Global Power Plant Database data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load WRI global power plants into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/wri-global-power-plants
Provider: https://datasets.wri.org/datasets/global-power-plant-database
Checked against the provider's documentation: 2026-11-01

## Access
- No account or key. Version 1.3.0 is a direct ZIP download.
- The archive includes one CSV plus documentation and release notes.

## Request
```bash
curl -A 'Mozilla/5.0 (X11; Linux x86_64) SignalLabCheck/1.0' -O 'https://datasets.wri.org/private-admin/dataset/53623dfd-3df6-4f15-a091-67457cdb571f/resource/66bcdacc-3d0e-46ad-9271-a5a76b1853d2/download/globalpowerplantdatabasev130.zip'
```

## Format
ZIP with a CSV of plant names, country codes, coordinates, capacity MW, primary and secondary fuels, commissioning year, owner, source URLs, estimated and reported generation, and generation-data provenance.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""WRI Global Power Plant Database v1.3.0 ZIP -> pandas -> Parquet."""
import io
import zipfile
import requests
import pandas as pd

URL = "https://datasets.wri.org/private-admin/dataset/53623dfd-3df6-4f15-a091-67457cdb571f/resource/66bcdacc-3d0e-46ad-9271-a5a76b1853d2/download/globalpowerplantdatabasev130.zip"
HEADERS = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) SignalLabCheck/1.0"}
r = requests.get(URL, headers=HEADERS, timeout=120)
r.raise_for_status()
with zipfile.ZipFile(io.BytesIO(r.content)) as archive:
    member = next(name for name in archive.namelist() if name.lower().endswith(".csv"))
    df = pd.read_csv(archive.open(member), low_memory=False)
df.to_parquet("wri_global_power_plants.parquet", index=False)
print(len(df), "plants", df["country"].nunique(), "countries",
      round(df["capacity_mw"].sum(), 1), "MW")
```
Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 34936 plants 167 countries 5706975.4 MW

## Limits
- Rate limit: Not stated.
- The current packaged release is version 1.3.0 from June 2021.
- Annual generation columns cover 2013 through 2017.

## Quirks
- Reported and estimated generation columns are separate; retain the generation-data source fields when modeling.
- Primary fuel identifies the largest or designated source, while the ordering of other-fuel columns is not a priority ranking.
- Some annual generation values follow fiscal or regulatory years rather than calendar years, and the database does not distinguish them.

## Terms and attribution
- The dataset carries a Creative Commons Attribution license and WRI identifies CC BY 4.0 as its standard data license.
- Use the dataset's supplied citation, link back to the work and indicate modifications.
- Terms page: https://www.wri.org/data/open-data-commitment

## Sources
- https://datasets.wri.org/datasets/global-power-plant-database: "Generation is provided at the year scale for the years 2013-2017."
- https://www.wri.org/research/global-database-power-plants: "The Global Power Plant Database is a comprehensive, open source database of power plants around the world."
- https://www.wri.org/data/open-data-commitment: "We have adopted the Creative Commons Attribution 4.0 International License as our standard license for publications and data, and the MIT License as our standard license for source code."

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab-jet.vercel.app/agent-suggestions

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
