Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
itechmeat avatar

Open Meteo

  • 81 installs
  • 22 repo stars
  • Updated August 1, 2026
  • itechmeat/llm-code

Call the Open-Meteo Forecast, Air Quality, and Geocoding APIs with correct variable, timezone, unit and error handling.

About

A guide to integrating the Open-Meteo weather, air-quality and geocoding REST APIs, covering query design, timezone/timeformat/units and robust error handling. Use it when fetching forecasts, air-quality/pollen data, or geocoding place names to coordinates.

  • Handles HTTP errors and JSON-level {"error": true} responses separately, failing fast on the reason
  • Requires timezone for daily variables and notes unixtime is GMT+0 needing utc_offset_seconds adjustment

Open Meteo by the numbers

  • 81 all-time installs (skills.sh)
  • +5 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #3,045 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/itechmeat/llm-code --skill open-meteo

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs81
repo stars22
Last updatedAugust 1, 2026
Repositoryitechmeat/llm-code

What it does

Call the Open-Meteo Forecast, Air Quality, and Geocoding APIs with correct variable, timezone, unit and error handling.

Files

SKILL.mdMarkdownGitHub ↗

Open Meteo

Goal

Provide a reliable, production-friendly way to call Open-Meteo APIs (Forecast, Air Quality, Geocoding), choose variables, control time/units/timezone, and parse responses consistently.

Steps

1. Pick the correct API and base URL

  • Forecast: https://api.open-meteo.com/v1/forecast
  • Air Quality: https://air-quality-api.open-meteo.com/v1/air-quality
  • Geocoding: https://geocoding-api.open-meteo.com/v1/search

2. Resolve coordinates (if you only have a name)

  • Call Geocoding with name and optional language, countryCode, count.
  • Use the returned latitude, longitude, and timezone for subsequent calls.

3. Design your time axis (timezone, timeformat, and range)

  • Prefer timezone=auto when results must align to local midnight.
  • If you request daily=..., set timezone (docs: daily requires timezone).
  • Choose timeformat=iso8601 for readability, or timeformat=unixtime for compactness.
  • If using unixtime, remember timestamps are GMT+0 and you must apply utc_offset_seconds for correct local dates.
  • Choose range controls:
  • forecast_days and optional past_days, or
  • explicit start_date/end_date (YYYY-MM-DD), and for sub-daily start_hour/end_hour.

4. Choose variables minimally (avoid "download everything")

  • Forecast: request only the variables you need via hourly=..., daily=..., current=....
  • Air Quality: request only the variables you need via hourly=..., current=....
  • Keep variable names exact; typos return a JSON error with error: true.

5. Choose units and model selection deliberately

  • Forecast units:
  • temperature_unit (celsius / fahrenheit)
  • wind_speed_unit (kmh / ms / mph / kn)
  • precipitation_unit (mm / inch)
  • Forecast model selection:
  • default models=auto / “Best match” combines the best models.
  • you can explicitly request models via models=....
  • provider-specific forecast endpoints also exist (provider implied by path). See references/models.md (section "Endpoints vs models=") for examples and doc links.
  • for provider/model-specific selection tradeoffs, see references/models.md.
  • Air Quality domain selection:
  • domains=auto (default) or cams_europe / cams_global.

6. Implement robust request/response handling

  • Treat HTTP errors and JSON-level errors separately.
  • JSON error format is:
  • {"error": true, "reason": "..."}
  • When requesting multiple locations (comma-separated coordinates), expect the JSON output shape to change to a list of structures.
  • Optionally use format=csv or format=xlsx when you need data export.

7. Validate correctness with a “known city” check

  • Geocode “Berlin” → Forecast hourly=temperature_2m for 1–2 days → verify timezone and array lengths.
  • Air Quality hourly=pm10,pm2_5,european_aqi → verify units and presence of hourly_units.

Critical prohibitions

  • Do not include out-of-scope APIs in this skill’s implementation guidance: Historical Weather, Ensemble Models, Seasonal Forecast, Climate Change, Marine, Satellite Radiation, Elevation, Flood.
  • Do not omit timezone when requesting daily variables (per docs).
  • Do not assume unixtime timestamps are local time; they are GMT+0 and require utc_offset_seconds adjustment.
  • Do not silently ignore {"error": true} responses; fail fast with the provided reason.
  • Do not request huge variable sets by default; keep queries minimal to reduce payload and avoid accidental overuse.

Definition of done

  • You can geocode a place name and obtain coordinates/timezone.
  • You can fetch Forecast data with at least one hourly, one daily (with timezone), and one current variable.
  • You can fetch Air Quality data for at least one pollutant and one AQI metric.
  • Your client code handles both HTTP-level failures and JSON-level error: true with clear messages.
  • Attribution requirements from the docs are captured for Air Quality (CAMS) and Geocoding (GeoNames).

Links

Related skills

Backend & APIsintegrationsbackend

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.