---
name: gie-agsi-ingestion
description: "How to get GIE AGSI Gas Storage API data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load recent GIE AGSI EU storage data into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/gie-agsi
Provider: https://agsi.gie.eu/account
Checked against the provider's documentation: 2026-11-01

## Access
- Create a free AGSI or ALSI account and request AGSI access; registration provides a personal API key.
- Set the key in GIE_API_KEY. Send it in the x-key request header and credit GIE AGSI when using the data.

## Request
```bash
curl 'https://agsi.gie.eu/api?type=eu&from=2026-10-01&to=2026-11-01&page=1&size=300' -H "x-key: $GIE_API_KEY"
```

## Format
Paginated JSON whose data array contains daily EU, country, operator or facility records with gas-day dates, storage, working-gas volume, filling, injection, withdrawal, capacity, status and trend fields.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""Recent GIE AGSI EU storage data -> pandas -> Parquet. Needs a free API key."""
import os
import requests
import pandas as pd

URL = "https://agsi.gie.eu/api"
HEADERS = {"x-key": os.environ["GIE_API_KEY"]}
BASE = {"type": "eu", "from": "2026-10-01", "to": "2026-11-01", "size": 300}
rows = []
page = 1
while True:
    r = requests.get(URL, headers=HEADERS, params={**BASE, "page": page}, timeout=60)
    r.raise_for_status()
    payload = r.json()
    rows.extend(payload.get("data", []))
    if page >= int(payload.get("last_page", 1)):
        break
    page += 1
df = pd.json_normalize(rows)
df["gasDayStart"] = pd.to_datetime(df["gasDayStart"], utc=True)
df.to_parquet("gie_agsi_eu.parquet", index=False)
print(len(df), "rows", df["gasDayStart"].min().date().isoformat(), "to",
      df["gasDayStart"].max().date().isoformat())
```
Not run: it needs a free API key.

## Limits
- Rate limit: 60 API calls per minute; excess calls enter a 60-second waiting period.
- Page size defaults to 30 records and is capped at 300.
- The API exposes daily storage and LNG inventory reporting currently available on the platforms.

## Quirks
- Paginate through last_page; every page is a separate API call.
- Historical coverage can begin later than 2011 for facilities that opened later or operators that could not supply the full history.
- EIC codes and facility ownership can change; retain operator and facility identifiers and watch service announcements.

## Terms and attribution
- The API is free after registration.
- Credit GIE AGSI as the source; GIE can deactivate keys when source credit is omitted.
- Contributor data is informational and may change, be removed or be amended without notice.
- Terms page: https://agsi.gie.eu/account

## Sources
- https://www.gie.eu/transparency-platform/GIE_API_documentation_v007.pdf: "The API service is available to the public free of charge."
- https://agsi.gie.eu/account: "Registration is mandatory to be able to use the API."
- https://www.gie.eu/transparency-platform/GIE_API_documentation_v007.pdf: "On AGSI: historical data since 01/01/2011 or since the date the storage facility has become operational"
- https://www.gie.eu/transparency-platform/GIE_API_documentation_v007.pdf: "Any API account that exceeds 60 API calls per minute will automatically be put in a waiting queue"
- https://agsi.gie.eu/account: "A mention of GIE, AGSI or ALSI (as applicable) as data source is a minimum requirement."

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