SK SHMU API

SHMU API: weather forecast for Slovakia

A free JSON API for SHMÚ ALADIN numerical model data. Search stations and get hourly and daily 3-day forecasts and current weather with no sign-up and no API key.

What is the SHMU API

The SHMU API (SHMÚ API) serves weather forecasts from the Slovak Hydrometeorological Institute as simple JSON. SHMÚ publishes ALADIN model output as data files. This service downloads them on a schedule, processes them and exposes them through REST endpoints with OpenWeatherMap-style responses.

It is an unofficial open-source project that is not operated by SHMÚ. All forecasts come from public SHMÚ data.

Quick start

The service downloads data from SHMU and exposes it over HTTP. API base URL:

Base URL
https://shmu.bmikuska.com/api/v1
StationsMore than 1,000 locations. Search works without diacritics too.
ForecastHourly steps for the next 3 days (the ALADIN model horizon): temperature, wind, cloud cover, precipitation, and pressure.
Tip: Search is diacritic-insensitive — zilina also matches “Žilina”.

Endpoints

All endpoints use the GET method. Error responses have the following shape: {"code": 400, "message": "…"}.

GET/api/v1

List of available API endpoints (JSON).

curl
curl "https://shmu.bmikuska.com/api/v1"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1" |
  ConvertTo-Json -Depth 5
Example response
{
  "name": "SHMU ALADIN API",
  "version": "v1",
  "base_url": "https://shmu.bmikuska.com/api/v1",
  "documentation": "https://shmu.bmikuska.com/",
  "endpoints": [
    {
      "method": "GET",
      "path": "/api/v1/stations",
      "description": "Paginated station list with search"
    }
  ]
}
GET/api/v1/stations

A paginated, searchable list of stations.

ParameterDescription
q, searchText filter with diacritic-insensitive search.
pagePage number. The default is 1.
page_size, limitPage size. The default is 50 and the maximum is 200.
curl
curl "https://shmu.bmikuska.com/api/v1/stations?q=zilina&page_size=5"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/stations?q=zilina&page_size=5" |
  ConvertTo-Json -Depth 5
Example response
{
  "stations": [
    {
      "id": 32801,
      "name": "Žilina",
      "lat": 49.223,
      "lon": 18.739
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 5,
  "total_pages": 1,
  "query": "zilina"
}
GET/api/v1/stations/{id}

Station details by ID. For example, 32737 identifies central Bratislava.

curl
curl "https://shmu.bmikuska.com/api/v1/stations/32737"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/stations/32737" |
  ConvertTo-Json -Depth 5
Example response
{
  "id": 32737,
  "name": "Bratislava (centrum)",
  "lat": 48.156,
  "lon": 17.105
}
GET/api/v1/forecast

The latest ALADIN forecast for the next 3 days. Provide either station (station ID), or lat and lon (nearest station). The optional hours parameter limits the response to N hourly steps from the current hour (not from the model run start).

Coordinate responses include location_match (distance and station elevation). Optional max_distance_km (max 500) rejects matches that are too far.

Alias: /api/v1/weather with the same parameters.

ParameterDescription
stationStation ID. Alternative to lat + lon.
latLatitude (−90 to 90). Use together with lon.
lonLongitude (−180 to 180). Use together with lat.
hoursNumber of hourly steps from the current hour.
max_distance_kmMaximum distance to the nearest station (lat/lon only).
curl
curl "https://shmu.bmikuska.com/api/v1/forecast?station=32737&hours=6"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/forecast?station=32737&hours=6" |
  ConvertTo-Json -Depth 6
Example response
{
  "code": "200",
  "hours": 2,
  "list": [
    {
      "dt": 1786082400,
      "dt_txt": "2026-08-07 06:00:00",
      "date": "2026-08-07",
      "date_index": 4,
      "main": { "temp": 25.82, "pressure": 1016.9 },
      "wind": { "speed": 3.94, "deg": 316.6 },
      "clouds": { "all": 97.2 },
      "weather": [
        { "code": "overcast_clouds", "description": "overcast clouds" }
      ]
    }
  ],
  "city": {
    "name": "Bratislava (centrum)",
    "coord": { "lat": 48.156, "lon": 17.105 },
    "country": "SK"
  },
  "meta": {
    "model": "ALADIN SHMU/SK 4.5km …",
    "source": "SHMU ALADIN",
    "runtime": "2026-08-07T06:00:00Z"
  }
}
GET/api/v1/forecast/daily

Daily summaries from the hourly ALADIN forecast (Europe/Bratislava calendar days): min/max temperature, precipitation, wind, dominant weather, sunrise/sunset.

ParameterDescription
station / lat+lonSame rules as the hourly forecast.
daysNumber of days (1 through the available horizon). Omit to return every available day.
max_distance_kmMaximum distance for coordinate requests.
curl
curl "https://shmu.bmikuska.com/api/v1/forecast/daily?station=32737&days=3"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/forecast/daily?station=32737&days=3" |
  ConvertTo-Json -Depth 6
Example response
{
  "code": "200",
  "cnt": 1,
  "list": [
    {
      "date": "2026-08-07",
      "date_index": 4,
      "temp_min": 18.4,
      "temp_max": 27.1,
      "precipitation_total": 1.2,
      "rain_total": 1.2,
      "snow_total": 0,
      "precipitation_hours": 2,
      "wind_speed_max": 8.9,
      "wind_gust_max": 19.4,
      "cloud_cover_mean": 62.5,
      "weather": {
        "code": "light_rain",
        "description": "light rain"
      },
      "sunrise": "2026-08-07T05:32:00+02:00",
      "sunset": "2026-08-07T20:11:00+02:00",
      "is_partial": false
    }
  ],
  "city": {
    "name": "Bratislava (centrum)",
    "coord": { "lat": 48.156, "lon": 17.105 },
    "country": "SK"
  }
}
GET/api/v1/now

Current weather as the hourly ALADIN step closest to the request time. This is not a live station observation — it is model guidance for “now”. Provide either station / stationId, or lat and lon.

ParameterDescription
station / stationId / lat+lonSame rules as the hourly forecast.
max_distance_kmMaximum distance for coordinate requests.
curl
curl "https://shmu.bmikuska.com/api/v1/now?station=32737"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/now?lat=48.15&lon=17.11" |
  ConvertTo-Json -Depth 6
Example response
{
  "code": "200",
  "as_of": "2026-08-10T17:19:00Z",
  "offset_seconds": -1140,
  "current": {
    "dt": 1786377600,
    "dt_txt": "2026-08-10 17:00:00",
    "date": "2026-08-10",
    "date_index": 0,
    "main": { "temp": 24.1, "pressure": 1014.2 },
    "weather": [{ "code": "few_clouds", "description": "few clouds" }],
    "clouds": { "all": 22.5 },
    "wind": { "speed": 3.4, "deg": 280.1 }
  },
  "city": {
    "name": "Bratislava (centrum)",
    "coord": { "lat": 48.156, "lon": 17.105 },
    "country": "SK"
  },
  "source_meta": {
    "source": "SHMU ALADIN",
    "kind": "forecast",
    "is_stale": false
  }
}
GET/api/v1/weather/codes

Catalog of weather enums. Each entry has a stable code and a human-readable description. The same values appear in the weather field of hourly and daily forecasts. Day index date_index is 0 = Monday … 6 = Sunday (Europe/Bratislava).

curl
curl "https://shmu.bmikuska.com/api/v1/weather/codes"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/weather/codes" |
  ConvertTo-Json -Depth 5
Example response
{
  "codes": [
    { "code": "clear", "description": "clear sky" },
    { "code": "few_clouds", "description": "few clouds" },
    { "code": "scattered_clouds", "description": "scattered clouds" },
    { "code": "broken_clouds", "description": "broken clouds" },
    { "code": "overcast_clouds", "description": "overcast clouds" },
    { "code": "light_rain", "description": "light rain" },
    { "code": "moderate_rain", "description": "moderate rain" },
    { "code": "heavy_rain", "description": "heavy intensity rain" },
    { "code": "light_snow", "description": "light snow" },
    { "code": "rain_and_snow", "description": "rain and snow" }
  ]
}
GET/api/v1/indicators

Indicators derived from the hourly forecast (frost, heat, wind, heavy rain, snow, mixed precipitation, low-cloud mountain caution). These are not official SHMU warnings — every item has official: false and source_kind: "forecast".

ParameterDescription
station / lat+lonSame rules as the forecast endpoint.
typeComma-separated type filter, e.g. frost,wind,heavy_rain.
curl
curl "https://shmu.bmikuska.com/api/v1/indicators?lat=49.12&lon=20.06&type=frost,wind"
PowerShell
Invoke-RestMethod "https://shmu.bmikuska.com/api/v1/indicators?lat=49.12&lon=20.06&type=frost,wind" |
  ConvertTo-Json -Depth 6
Example response
{
  "code": "200",
  "cnt": 1,
  "list": [
    {
      "type": "wind",
      "level": "moderate",
      "valid_from": "2026-08-07T12:00:00Z",
      "valid_to": "2026-08-07T18:00:00Z",
      "summary": "Elevated wind gusts in the forecast period",
      "source_kind": "forecast",
      "rule_version": "v1",
      "official": false,
      "available": true
    }
  ],
  "location_match": {
    "method": "nearest_aladin_station",
    "requested_coord": { "lat": 49.12, "lon": 20.06 },
    "matched_coord": { "lat": 49.08, "lon": 20.12 },
    "distance_km": 6.2,
    "matched_station_id": 12345,
    "matched_station_name": "Example station"
  }
}

Limits and updates

Rate limiting

The default limit is 10 requests per minute for each endpoint and IP address. When exceeded, the API returns status 429 and a Retry-After header. Documentation routes are not rate-limited.

FAQ

Is the SHMU API free?

Yes. The SHMU API is free and needs no sign-up or API key. The only limit is 10 requests per minute for each endpoint and IP address.

Is this the official SHMÚ API?

No. It is an unofficial open-source project that processes publicly available SHMÚ ALADIN model data. It does not provide official SHMÚ warnings.

What data does the SHMU API provide?

Hourly and daily 3-day forecasts (temperature, wind, cloud cover, precipitation and pressure), current weather, more than 1,000 stations in Slovakia and derived indicators such as frost, heat or strong wind.

How often is the forecast updated?

The ALADIN model runs four times a day (00, 06, 12 and 18 UTC). SHMÚ publishes the results about 4 hours after each run and the API returns the latest available run.

Can I get a forecast by GPS coordinates?

Yes. The /forecast, /forecast/daily, /now and /indicators endpoints accept lat and lon parameters and use the nearest ALADIN model station.