BYTETOOLS

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.

No API key requiredHTTPSFree tier

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
curl 'https://api.meteo.lt/v1/places/vilnius/forecasts/long-term'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://api.meteo.lt/v1/places/vilnius/forecasts/long-term", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "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,
      "windDir

Parameters

ParameterTypeRequiredDescription
(place code)pathRequiredPlace slug such as `vilnius` or `kaunas`. Fetch `/v1/places` for the full list. vilnius
(forecast type)pathRequired`long-term` is the hourly multi-day forecast. It is the only type currently published. long-term
/placespathOptionalEvery available place with its code, name and coordinates.
/stationspathOptionalObservation 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

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.