What it does
An open API for querying stored weather measurements by location.
Free, no key required
No account, no API key, no authentication header. Point a client at an endpoint and read the response.
Full history, not just current
Every measurement ever recorded is kept, so you can retrieve readings far beyond what a live weather API would give you.
Location-scoped
Filter every query by latitude and longitude to isolate a single tracked location.
Time-bounded queries
Every query specifies a from / to window, which is what determines how many results come back.
Self-describing fields
Each reading ships with its unit alongside the value, so no lookup tables are required to interpret the data.
Access & usage
Everything you need to know before your first request.
Authentication
None. Both endpoints are open: no API key, token, or sign-up.
Cost
Free to use, no tiers or paid plans.
Response size
There is no limit parameter. from and to are required and control size directly: with a measurement roughly every 15 minutes, a 1-day window returns around 96 rows. The range cannot exceed 10 days; a wider request gets a 400.
Update frequency
A new measurement is added every 15 minutes.
Format
JSON only, over HTTPS. No content negotiation required.
Endpoints
Two read-only endpoints, both scoped to a location.
List stored measurements for a location, most recent first, within a required time range. The span between from and to must not exceed 10 days.
| Name | Required | Description |
|---|---|---|
latitude | Yes | Decimal degrees, −90 to 90. |
longitude | Yes | Decimal degrees, −180 to 180. |
from | Yes | ISO 8601 timestamp; only measurements at or after this instant. |
to | Yes | ISO 8601 timestamp; only measurements at or before this instant. |
Return only the single most recent measurement for a location. Responds 404 if nothing has been recorded yet.
| Name | Required | Description |
|---|---|---|
latitude | Yes | Decimal degrees, −90 to 90. |
longitude | Yes | Decimal degrees, −180 to 180. |
What's in a measurement
Every reading returned by either endpoint has this shape. Each metric carries its own unit field, so no external reference is needed to interpret a value.
| Field | Type |
|---|---|
time | date-time |
temperature / _unit | number / string |
apparent_temperature / _unit | number / string |
precipitation / _unit | number / string |
| Field | Type |
|---|---|
cloud_cover / _unit | number / string |
wind_speed / _unit | number / string |
weather_code / _unit | integer / string |
weather_description | string |
Try it now
A live example against Ghent, Belgium. Swap in any latitude/longitude you're tracking.
Request
curl "https://meteo-api.nicholasmeyers.be/meteo/latest?latitude=51.05&longitude=3.72"
Response
{
"time": "2026-08-23T14:00:00+02:00",
"temperature": 21.4,
"temperature_unit": "°C",
"apparent_temperature": 20.8,
"apparent_temperature_unit": "°C",
"precipitation": 0.0,
"precipitation_unit": "mm",
"cloud_cover": 40.0,
"cloud_cover_unit": "%",
"wind_speed": 12.3,
"wind_speed_unit": "km/h",
"weather_code": 1,
"weather_code_unit": "wmo code",
"weather_description": "Mainly clear"
}