---
name: energy-charts-api-ingestion
description: "How to get Fraunhofer ISE Energy-Charts API data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load Energy-Charts German power into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/energy-charts-api
Provider: https://api.energy-charts.info/
Checked against the provider's documentation: 2026-11-01

## Access
- No account or key for the public endpoints.
- This example uses the v2 public-power endpoint, whose response states CC BY 4.0.

## Request
```bash
curl 'https://api.energy-charts.info/v2/public_power?country=de&start=2026-10-31&end=2026-10-31'
```

## Format
Version 2 JSON envelope with local ISO 8601 interval timestamps, timezone, resolution, MW unit, stable series IDs and row-oriented values.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""German public electricity production for one day -> pandas -> Parquet."""
import requests
import pandas as pd

URL = "https://api.energy-charts.info/v2/public_power"
response = requests.get(
    URL,
    params={"country": "de", "start": "2026-10-31", "end": "2026-10-31"},
    timeout=60,
)
response.raise_for_status()
payload = response.json()
df = pd.DataFrame([
    {"timestamp": row["timestamp"], **row["values"]}
    for row in payload["data"]
])
df["timestamp"] = pd.to_datetime(df["timestamp"], utc=True)
df.to_parquet("energy_charts_germany_public_power.parquet", index=False)
print(len(df), "intervals", df["timestamp"].min().isoformat(), "to",
      df["timestamp"].max().isoformat(), len(payload["series"]), "series", payload["unit"])
```
Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 96 intervals 2026-10-30T23:00:00+00:00 to 2026-10-31T22:45:00+00:00 21 series MW

## Limits
- Default rate limit: 2 requests per minute per client IP and endpoint, burst 4.
- The effective rate can be lower during peak server load; HTTP 429 includes Retry-After.
- History, resolution and series coverage vary by endpoint and country.

## Quirks
- Response timestamps use the selected country's local timezone and mark the beginning of each interval; conversion to UTC shifts the displayed calendar boundary.
- Installed-power timestamps are an exception: they label a reporting month or year and represent the end of that period.
- Inspect the response licence before using price data because several zones are restricted to private and internal use.

## Terms and attribution
- The public-power response states CC BY 4.0 and attribution to Energy-Charts.info.
- The API documentation says the default CC BY 4.0 licence does not cover endpoints that state different terms.
- Terms page: https://api.energy-charts.info/openapi.json

## Sources
- https://api.energy-charts.info/openapi.json: "Public net electricity production in megawatt (MW) for a given country, one series per production type."
- https://api.energy-charts.info/openapi.json: "The default is 2 requests per minute with a burst of 4"
- https://api.energy-charts.info/openapi.json: "Proper attribution to Energy-Charts.info as the source is required."
- https://api.energy-charts.info/v2/public_power?country=de&start=2026-10-31&end=2026-10-31: "CC BY 4.0 (creativecommons.org/licenses/by/4.0), attribution: energy-charts.info"

## 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.
