# Air Quality API
> Current air quality and hourly forecast for any location — European and US AQI plus PM2.5, PM10, ozone, nitrogen dioxide, sulphur dioxide, carbon monoxide, dust and UV index. Powered by Open-Meteo. Just pass a latitude and longitude.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/airquality-api/..."
```

## Pricing
- **Free** (Free) — 4,000 calls/Mo, 2 req/s
- **Basic** ($11/Mo) — 80,000 calls/Mo, 8 req/s
- **Pro** ($34/Mo) — 350,000 calls/Mo, 20 req/s
- **Mega** ($89/Mo) — 1,500,000 calls/Mo, 50 req/s

## Endpoints

### Air Quality

#### `GET /v1/current` — Current air quality

**Parameters:**
- `lat` (query, required, string) — Latitude Example: `52.52`
- `lon` (query, required, string) — Longitude Example: `13.41`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/airquality-api/v1/current?lat=52.52&lon=13.41"
```

**Response:**
```json
{
    "data": {
        "dust": 4,
        "pm10": 11,
        "time": "2026-05-30T04:00",
        "ozone": 72,
        "pm2_5": 6.9,
        "units": {
            "dust": "μg/m³",
            "pm10": "μg/m³",
            "time": "iso8601",
            "ozone": "μg/m³",
            "pm2_5": "μg/m³",
            "us_aqi": "USAQI",
            "ammonia": "μg/m³",
            "interval": "seconds",
            "uv_index": "",
            "european_aqi": "EAQI",
            "carbon_monoxide": "μg/m³",
            "sulphur_dioxide": "μg/m³",
            "nitrogen_dioxide": "μg/m³"
        },
        "us_aqi": 38,
        "ammonia": 1.4,
        "latitude": 52.5,
        "timezone": "Europe/Berlin",
        "uv_index": 0,
        "longitude": 13.400002,
        "european_aqi": 29,
        "carbon_monoxide": 145,
        "sulphur_dioxide": 1,
        "nitrogen_dioxide": 7.5,
        "european_aqi_label": "fair"
    },
    "meta": {
        "timestamp": "2026-05-30T02:10:25.251Z",
        "request_id": "f0d81dc1-98b5-43f5-bae3-780ff94ed255"
    },
    "status": "ok",
    "message": "Air quality retrieved successfully",
    "success": true
}
```

#### `GET /v1/forecast` — Hourly air-quality forecast

**Parameters:**
- `lat` (query, required, string) — Latitude Example: `52.52`
- `lon` (query, required, string) — Longitude Example: `13.41`
- `hours` (query, optional, string) — Hours 1-168 (default 24) Example: `24`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/airquality-api/v1/forecast?lat=52.52&lon=13.41&hours=24"
```

**Response:**
```json
{
    "data": {
        "hours": 24,
        "forecast": [
            {
                "pm10": 11.6,
                "time": "2026-05-30T00:00",
                "ozone": 78,
                "pm2_5": 6.6,
                "european_aqi": 31,
                "nitrogen_dioxide": 13.2,
                "european_aqi_label": "fair"
            },
            {
                "pm10": 10,
                "time": "2026-05-30T01:00",
                "ozone": 74,
                "pm2_5": 6.8,
                "european_aqi": 30,
                "nitrogen_dioxide": 11.2,
                "european_aqi_label": "fair"
            },
            {
                "pm10": 11.2,
                "time": "2026-05-30T02:00",
                "ozone": 73,
                "pm2_5": 7.1,
                "european_aqi": 29,
                "nitrogen_dioxide": 9.2,
                "european_aqi_label": "fair"
            },
            {
                "pm10": 13.1,
                "time": "2026-05-30T03:00",
                "ozone": 74,
                "pm2_5": 8.1,
                "european_aqi": 30,
                "nitrogen_dioxide": 6.9,
                "european_aqi_label": "fair"
            },
            {
                "pm10": 11,
                "time": "2026-05-30T04:00",
                "ozone": 72,
                "pm2_5": 6.9,
                "european_aqi": 29,
                "nitrogen_dioxide": 7.5,
                "european_aqi_label": "fair"
            },
            {
         
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/airquality-api
OpenAPI spec: https://www.oanor.com/api/airquality-api/openapi.json
