Meteo.lt API
Free Lithuanian weather API with no key: hourly long-term forecasts from the national service, with feels-like temperature, gusts and condition codes. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Meteo.lt API?
Meteo.lt is the Lithuanian Hydrometeorological Service's open API, free of any key. A place's long-term forecast returns hourly entries with air and feels-like temperature, wind speed and gust, cloud cover, pressure, humidity, precipitation and a condition code.
Small national meteorological services rarely publish a clean modern API, which makes this one worth knowing about. Places are addressed by human-readable slug — `vilnius`, `kaunas` — rather than by coordinates or an opaque station id, so the URLs are readable and you can construct them without a lookup step in the common case.
The hourly granularity is the appeal. Where many free forecast APIs give you daily minima and maxima, this returns an entry per hour with `feelsLikeTemperature` computed alongside the air temperature and `windGust` separate from mean wind speed — the two fields that matter for deciding whether to cycle to work. `conditionCode` is a readable string such as `partly-cloudy` rather than a numeric code needing a lookup table, which is a small kindness. Timestamps are `YYYY-MM-DD HH:MM:SS` in UTC with no timezone marker, so parse them as UTC explicitly.
Quick facts
- Base URL
https://api.meteo.lt/v1- Authentication
- No API key and no registration. Attribution to the Lithuanian Hydrometeorological Service is requested.
- Rate limit
- Published as a fair-use policy; the service asks clients not to poll faster than the forecast updates.
- Pricing
- Free. Lithuanian government open data.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Meteo.lt API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch an hourly long-term forecast
GET https://api.meteo.lt/v1/places/vilnius/forecasts/long-term
curl 'https://api.meteo.lt/v1/places/vilnius/forecasts/long-term'const res = await fetch("https://api.meteo.lt/v1/places/vilnius/forecasts/long-term");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.meteo.lt/v1/places/vilnius/forecasts/long-term", timeout=20)
res.raise_for_status()
print(res.json()){
"place": {
"code": "vilnius",
"name": "Vilnius",
"administrativeDivision": "Vilniaus miesto savivaldybė",
"country": "Lietuva",
"countryCode": "LT",
"coordinates": {
"latitude": 54.68705,
"longitude": 25.28291
}
},
"forecastType": "long-term",
"forecastCreationTimeUtc": "2026-08-21 05:17:36",
"forecastTimestamps": [
{
"forecastTimeUtc": "2026-08-21 07:00:00",
"airTemperature": 18.1,
"feelsLikeTemperature": 18.1,
"windSpeed": 2,
"windGust": 6,
"windDirection": 194,
"cloudCover": 29,
"seaLevelPressure": 1011,
"relativeHumidity": 86,
"totalPrecipitation": 0,
"conditionCode": "partly-cloudy"
},
{
"forecastTimeUtc": "2026-08-21 08:00:00",
"airTemperature": 20.3,
"feelsLikeTemperature": 20.3,
"windSpeed": 2,
"windGust": 6,
"windDirection": 198,
"cloudCover": 4,
"seaLevelPressure": 1011,
"relativeHumidity": 79,
"totalPrecipitation": 0,
"conditionCode": "clear"
},
{
"forecastTimeUtc": "2026-08-21 09:00:00",
"airTemperature": 22.1,
"feelsLikeTemperature": 22.1,
"windSpeed": 3,
"windGust": 6,
"windDirection": 204,
"cloudCover": 49,
"seaLevelPressure": 1011,
"relativeHumidity": 71,
"totalPrecipitation": 0,
"conditionCode": "partly-cloudy"
},
{
"forecastTimeUtc": "2026-08-21 10:00:00",
"airTemperature": 23.2,
"feelsLikeTemperature": 23.2,
"windSpeed": 3,
"windGust": 7,
"windDirParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
(place code) | path | Required | Place slug such as `vilnius` or `kaunas`. Fetch `/v1/places` for the full list. vilnius |
(forecast type) | path | Required | `long-term` is the hourly multi-day forecast. It is the only type currently published. long-term |
/places | path | Optional | Every available place with its code, name and coordinates. |
/stations | path | Optional | Observation stations and their recorded readings, as opposed to forecasts. |
Response fields
placeobject- The location: `code`, `name`, `administrativeDivision`, `country`, `countryCode` and `coordinates`. Names are Lithuanian.
forecastTypestring- Echoes the forecast type requested.
forecastCreationTimeUtcstring- When the model run was produced. Compare it against your cache before re-fetching.
forecastTimestampsarray- Hourly forecast entries.
forecastTimestamps[].forecastTimeUtcstring- `YYYY-MM-DD HH:MM:SS` in UTC with no offset marker. Parse as UTC explicitly.
forecastTimestamps[].airTemperature / feelsLikeTemperaturefloat- Degrees Celsius, actual and apparent.
forecastTimestamps[].windSpeed / windGustinteger- Metres per second, mean and gust. Gust is the one that matters for cycling and sailing.
forecastTimestamps[].windDirectioninteger- Degrees, meteorological convention — the direction the wind is coming from.
forecastTimestamps[].cloudCoverinteger- Percentage.
forecastTimestamps[].seaLevelPressureinteger- Hectopascals.
forecastTimestamps[].relativeHumidityinteger- Percentage.
forecastTimestamps[].totalPrecipitationfloat- Millimetres for that hour.
forecastTimestamps[].conditionCodestring- Readable condition such as `partly-cloudy` or `rain` — no lookup table needed.
What you can build with the Meteo.lt API
- Build a Lithuanian weather app on official national data
- Drive cycling or outdoor scheduling from hourly gust forecasts
- Compare feels-like against actual temperature through a cold snap
- Combine forecast and station observation data for verification
Common errors and how to fix them
404 on a place
The slug was guessed rather than taken from the places list.
Fix: Fetch `/v1/places` and use the `code` values it publishes. Diacritics are stripped in the slugs.
Times off by hours
Timestamps are UTC but carry no offset marker.
Fix: Parse `forecastTimeUtc` as UTC explicitly. A naive parser will treat it as local time.
Wind speed looks low
Values are metres per second, not kilometres per hour.
Fix: Multiply by 3.6 for km/h. A gust of 6 m/s is about 22 km/h.
Same forecast on every call
The model runs on a schedule.
Fix: Check `forecastCreationTimeUtc`. Polling more often than the model updates returns identical data.
Meteo.lt API — frequently asked questions
Is the Meteo.lt API free?
Yes, free with no key or registration. It is Lithuanian government open data, and attribution to the Hydrometeorological Service is requested.
How do I find a place code?
Fetch `/v1/places` for the full list. Codes are lowercase slugs with diacritics stripped, so Vilnius is `vilnius`.
What units does it use?
Celsius for temperature, metres per second for wind, hectopascals for pressure, millimetres for precipitation and percentages for humidity and cloud cover.
Does it cover anywhere outside Lithuania?
No. It is the Lithuanian national service, and the places list is Lithuanian locations only.
Tools that pair with this API
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
Wind Chill Calculator
Apply the 2001 North American wind chill formula in Fahrenheit or Celsius, with validity limits flagged and the frostbite exposure time for the result.
Meteo.lt is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.