# @reng/pollen Pollen grain levels for a city or lat/lon — zero OAuth, Open-Meteo Air Quality API. ## Intent Give agents and humans a small, keyless pollen pulse: geocode a place (or pass coordinates), pull hourly alder/birch/grass/mugwort/olive/ragweed grains/m³ from Open-Meteo, and return a slim summary. A lean hosted page lets a person type a city and see levels. **Coverage is Europe-focused** (CAMS); outside Europe pollen fields are usually null — that is expected, not a bug. ## Usage ```ts import { getPollen } from 'kody:@reng/pollen' const berlin = await getPollen({ location: 'Berlin', hours: 24 }) // { place, coords, time, coverage, levels, peak, summary, attribution } ``` Or the dedicated export: ```ts import { getPollen } from 'kody:@reng/pollen/getPollen' ``` ### Options | Field | Type | Default | Notes | | --- | --- | --- | --- | | `location` | `string` | — | Place name geocoded via Open-Meteo | | `latitude` / `longitude` | `number` | — | Skip geocoding when both set | | `hours` | `number` | `24` | Forecast hours to scan for peak (1–96) | ### Coverage note Open-Meteo documents pollen (`alder_pollen`, `birch_pollen`, `grass_pollen`, `mugwort_pollen`, `olive_pollen`, `ragweed_pollen`) as **only available in Europe** during pollen season (CAMS European air quality forecast, ~4 days). Calls for China or other non-covered regions typically return `coverage: "unavailable"` with empty `levels`. ## Hosted app Open the package app, type a city (try Berlin), and check levels. Posts to the same `getPollen` logic as the export. ## Prerequisites - No secrets / OAuth. - Public HTTPS to `geocoding-api.open-meteo.com` and `air-quality-api.open-meteo.com`. - Not medical advice; levels use a simple grains/m³ band for labels only.