---
name: openeew-ingestion
description: "How to get Grillo OpenEEW Archive data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load one OpenEEW sensor window into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/openeew
Provider: https://registry.opendata.aws/grillo-openeew/
Checked against the provider's documentation: 2026-11-01

## Access
- No AWS account or key. S3 listing and record objects are public.
- This bounded example reads one five-minute Mexico sensor object from 2017.

## Request
```bash
curl -O 'https://grillo-openeew.s3.amazonaws.com/records/country_code=mx/device_id=000/year=2017/month=12/day=01/hour=00/00.jsonl'
```

## Format
JSON Lines records with country_code, device_id, x/y/z arrays, Unix device_t and cloud_t timestamps and sr sampling rate.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""One OpenEEW five-minute sensor object -> pandas -> Parquet. No key."""
import io
import requests
import pandas as pd

URL = "https://grillo-openeew.s3.amazonaws.com/records/country_code=mx/device_id=000/year=2017/month=12/day=01/hour=00/00.jsonl"
r = requests.get(URL, timeout=60)
r.raise_for_status()
df = pd.read_json(io.BytesIO(r.content), lines=True)
df["device_t"] = pd.to_datetime(df["device_t"], unit="s", utc=True)
df["cloud_t"] = pd.to_datetime(df["cloud_t"], unit="s", utc=True)
df.to_parquet("openeew_mx_000_2017_12_01_0000.parquet", index=False)
print(len(df), "accelerometer rows", df["device_t"].min().isoformat(), "to", df["device_t"].max().isoformat(), "columns", ", ".join(df.columns))
```
Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 284 accelerometer rows 2017-12-01T00:00:00.460999966+00:00 to 2017-12-01T00:04:59.250999927+00:00 columns country_code, device_id, x, y, z, device_t, cloud_t, sr

## Limits
- Rate limit: Not stated.
- The registry states updates occur approximately every five minutes.
- Public S3 record objects are partitioned by country, device, year, month, day and hour.

## Quirks
- device_t and cloud_t are Unix seconds with fractional precision, not milliseconds.
- Each row contains arrays of axis samples; explode x, y and z together before sample-level analysis.
- Raw acceleration is not an event label, and sensor noise or gaps can resemble signal changes.

## Terms and attribution
- AWS data is CC BY-SA 4.0; credit the source and preserve share-alike obligations.
- The repository's Apache-2.0 statement covers the project software, not the AWS data licence.
- Terms page: https://github.com/openeew/openeew#license

## Sources
- https://registry.opendata.aws/grillo-openeew/: "Update Frequency Approximately every 5 minutes"
- https://registry.opendata.aws/grillo-openeew/: "AWS CLI Access (No AWS account required)"
- https://github.com/openeew/openeew#license: "OpenEEW data on AWS is licensed under CC BY-SA 4.0"
- https://github.com/openeew/openeew: "Entire archive of unprocessed accelerometer data from Mexico, Chile, and other countries"

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