Monitor real-time pollen levels from the Google Maps Pollen API directly in Home Assistant.
Get sensors for grass, tree, weed pollen, plus individual plants like OAK, PINE, OLIVE, and many more!
GitHub Release hassfest validation HACS validation License HACS Default FAQ Ko-fi PayPal
Open your Home Assistant instance and add this repository inside HACS
- Multi-language support β UI in 21 languages (EN, ES, CA, DE, FR, IT, PL, RU, UK, NL, ZH-Hans, SV, CS, PT-BR, DA, NB, PT-PT, RO, FI, HU, ZH-Hant) + API responses in any language.
- Dynamic sensors β Auto-creates sensors for all pollen types found in your location.
- Multi-day forecast for TYPES & PLANTS β
forecastlist with{offset, date, has_index, value, category, description, color_*}- Convenience:
tomorrow_*andd2_* - Derived:
trendandexpected_peak - Per-day sensors: remain TYPES-only (optional
D+1/D+2).
PLANTS expose forecast as attributes only (no extra entities).
- Smart grouping β Organizes sensors into:
- Pollen Types (Grass / Tree / Weed)
- Plants (Oak, Pine, Birch, etc.)
- Pollen Info (Region / Date metadata)
- Configurable updates β Change update interval, language, forecast days, and per-day sensors without reinstalling.
- Manual refresh β Call
pollenlevels.force_updateto trigger an immediate update and reset the timer. - Last Updated sensor β Shows timestamp of last successful update.
- Rich attributes β Includes
inSeason, indexdescription, healthadvice,color_hex,color_rgb,color_raw, and plant details. - Resilient startup β Retries setup automatically when the first API response lacks daily pollen info (
dailyInfotypes/plants), ensuring entities appear once data is ready.
- Your API key is stored by Home Assistantβs secure config entries.
- We never log your API key. As a safety net, if it ever appears in an error message, it is redacted as
***. - We do not log request parameters (coordinates). Debug logs only include non-sensitive metadata (e.g., forecast days and whether a language is set).
- Avoid sharing full debug logs publicly; review them for sensitive information before posting.
You can change:
- Update interval (hours)
- API response language code
- Forecast days (
1β5) for pollen TYPES - Per-day TYPE sensors via
create_forecast_sensors:noneβ no extra sensorsD+1β sensors for each TYPE with suffix(D+1)D+1+2β sensors for(D+1)and(D+2)
Validation rules:
D+1requiresforecast_days β₯ 2D+1+2requiresforecast_days β₯ 3
After saving Options: if per-day sensors are disabled or
forecast_daysbecomes insufficient, the integration removes any stale D+1/D+2 entities from the Entity Registry automatically. No manual cleanup needed.
Go to Settings β Devices & Services β Pollen Levels β Configure.
You need a valid Google Cloud API key with access to the Maps Pollen API.
- Open the Google Cloud Console.
- Create or select a project and enable billing for it.
- Go to APIs & Services β Library and enable the
Maps Pollen API . - Go to APIs & Services β Credentials β Create credentials β API key.
- Restrict your key (recommended):
- API restrictions β Restrict key β select Maps Pollen API only.
- Application restrictions (optional but recommended):
- HTTP referrers (for frontend usages) or
- IP addresses (for server-side usage, e.g. your HA host).
- Copy the key and paste it in the integration setup.
π See the FAQ for quota tips, rate-limit behavior, and best practices to avoid exhausting your free tier.
Home Assistant does not color icons natively from attributes.
If you want dynamic colors driven by color_hex / color_rgb, you have these options:
- Entities card (attribute row)
type: entities title: Grass entities: - type: attribute entity: sensor.type_grass attribute: category name: Category - type: attribute entity: sensor.type_grass attribute: description name: Index description
Simple and robust. It shows attributes clearly but doesnβt color the icon.
- Gauge card (color by severity based on numeric value)
type: gauge entity: sensor.type_grass min: 0 max: 5 severity: green: 0 yellow: 2 red: 4
Color is driven by thresholds, not by
color_hex.
If you need the icon/badge to follow the exact API color (color_hex):
Mushroom (mushroom-template-card)
type: custom:mushroom-template-card entity: sensor.type_grass primary: >- Grass: {{ states(entity) }} ({{ state_attr(entity, "category") }}) icon: mdi:grass badge_icon: mdi:circle badge_color: >- {{ state_attr(entity, "color_hex") or "var(--primary-color)" }}
button-card
type: custom:button-card entity: sensor.type_grass icon: mdi:grass show_state: false name: '[[[ const s = states[entity]; const cat = s?.attributes?.category ?? ""; return `Grass: ${s?.state ?? "unknown"} (${cat})`; ]]]' color: '[[[ const s = states[entity]; return s?.attributes?.color_hex || "var(--primary-color)"; ]]]'
- Localized plant codes: Google may localize
plantInfo.codein some locales (e.g.,GRAMINALESin ES) while others remain English (OLIVE,MUGWORT). ChanginglanguageCodemay recreate plant sensors with a different suffix. Recommendation: keep API language stable or rename entities in UI after changing it.
- Open HACS β Integrations in Home Assistant.
- Click Explore & Download Repositories.
- Search for Pollen Levels or click the badge above.
- Click Download and follow prompts.
- Restart or Reload HA when prompted.
-
Go to Settings β Devices & Services β Add Integration.
-
Search for Pollen Levels.
-
Enter:
- Google API Key
- Location
- Update Interval (hours)
- Language Code
curl -X GET "https://pollen.googleapis.com/v1/forecast:lookup?key=YOUR_KEY&location.latitude=48.8566&location.longitude=2.3522&days=2&languageCode=es"If this integration helps you, consider supporting development:
MIT Β© 2025 eXPerience83 Data Source: Google Maps Pollen API