Weather along a route, at the time you get there

A forecast for the start of a long ride or drive says little about the pass you reach four hours later. Send the route, when you leave and how fast you go, and the API works out when you reach each point and returns the forecast for that hour there, with the wind split into head- and crosswind for your direction of travel.

curl https://geo.runningcat.dev/v1/route/weather \
  -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
  -d '{
    "route": {"type": "LineString", "coordinates": [[6.143, 46.204], [6.4, 46.07], [6.63, 46.0], [6.869, 45.924]]},
    "departure": "2026-11-08T08:00:00+01:00",
    "speedKmh": 20,
    "stepKm": 20
  }'
Example request

The request

route
A GeoJSON LineString or MultiLineString, up to 20,000 km and 200,000 points
departure
When you leave, with an offset; now if left out
speedKmh
Average speed, 2 to 80, default 20
stepKm
Distance between forecast points, 0.5 to 100; by default every 5 km or a hundredth of the route, at most 200 points

The answer

{
  "routeLengthKm": 64.5, "speedKmh": 20,
  "departure": "2026-11-07T17:51:52.698Z", "arrival": "2026-11-07T21:05:19.533Z",
  "summary": { "minTemperatureC": -1.6, "maxTemperatureC": 7.8, "maxPrecipitationMm": 0,
               "maxHeadwindKmh": 3.2, "maxGustKmh": 34.1 },
  "points": [
    { "km": 0, "lon": 6.143, "lat": 46.204, "time": "2026-11-07T17:51:52.698Z",
      "temperatureC": 7.8, "feelsLikeC": 6.1, "precipitationMm": 0, "weatherCode": 2,
      "windKmh": 4.9, "windDirDeg": 197, "gustKmh": 9.4, "cloudPct": 52, "humidityPct": 88,
      "isDay": false, "headwindKmh": 1.7, "crosswindKmh": 4.6 },
    ...
  ]
}

headwindKmh is the part of the wind against you, negative when it is behind you; crosswindKmh is the part from the side. The summary gives the coldest and warmest moment, the wettest hour and the strongest headwind and gust, so a client can warn before the user looks at the details. Forecasts reach 14 days ahead.

Everything about the route in one request

POST /v1/route/report takes the same route and returns any of these parts together: the elevation profile with total climb, the weather at arrival times, the time zones you cross, air quality stations near the route, river gauges and what the route passes through, such as protected areas and borders. Each part counts as one request, so you pay for what you ask.

{ "route": { ... }, "include": ["profile", "weather", "timezones"], "departure": "2026-11-08T08:00:00+01:00", "speedKmh": 20 }

Profile, weather, time zones, rivers and layers for a 90 km ride came back in about 6.5 seconds.

Who uses it

Apps for cycling, running, hiking and touring: a ride planner that shows where the rain starts, a training app that picks the direction of a loop by the wind, a trip tool that warns about frost on a pass. The weather API page covers forecasts for a point and over an area; routing can draw the route first.

Credits: weather data from Open-Meteo.com (CC BY 4.0), based on forecasts of ECMWF, NOAA, Deutscher Wetterdienst and Environment and Climate Change Canada.

The free plan gives 500 requests a day, for commercial apps too. Create an account with Google or your email and make your keys right away.