Weer-API
Wereldwijde verwachtingen tot 15 dagen van het ECMWF en de nationale hogeresolutiemodellen, terreingecorrigeerd naar uw werkelijke maaiveldhoogte. Eén scope — meteo — dekt deze hele pagina.
Verwachting#
meteo1 creditUurlijkse en dagelijkse verwachting voor een willekeurige coördinaat.
Parameters
| Parameter | Type | Standaard | Beschrijving |
|---|---|---|---|
lat | float | — | Breedtegraad, −90 tot 90. Verplicht. |
lon | float | — | Lengtegraad, −180 tot 180. Verplicht. |
days | int | 7 | 1 tot 16 worden aanvaard, maar de geleverde horizon is 15 dagen, dus een 16 levert 15 op. De dagen 11 tot 15 zijn een trend, geen verwachting — zie hieronder. |
elevation | float (m) | — | Werkelijke maaiveldhoogte van uw punt. Geef die op en de temperatuur wordt gecorrigeerd voor het verschil met het afgevlakte terrein van het model. In heuvelland doorgaans 1 tot 3 °C waard. |
timezone | IANA zone | UTC | De zone waarop de dagaggregaten worden afgesneden, en de verschuiving die elk tijdstempel terugdraagt. |
hourly | csv | all | Deelverzameling van de uurvelden, om de payload te verkleinen. De namen zijn die uit de veldreferentie. |
include_daily | bool | true | Het dagblok meesturen. |
Antwoord
{
"latitude": 48.85,
"longitude": 2.35,
"timezone": "Europe/Paris",
"grid": {
"latitude": 48.85, "longitude": 2.35,
"distance_km": 0.42, "resolution_km": 1.3
},
"elevation": {
"applied": true,
"model_elevation_m": 91.0,
"location_elevation_m": 113,
"temperature_offset_c": -0.14
},
"source": {
"model": "mf_arome",
"model_run": "20260801T00Z",
"reference_time": "2026-08-01T00:00:00+00:00",
"data_age_hours": 3.95,
"stale": false,
"attribution": "Data: Météo-France (etalab-2.0)"
},
"hourly": {
"time": ["2026-08-01T00:00:00+02:00", "..."],
"temperature_2m": [18.1, 17.9, 17.6, "..."],
"apparent_temperature": [17.4, "..."],
"weather_code": [0, 1, 2, "..."]
},
"daily": {
"date": ["2026-08-01", "..."],
"temperature_2m_max": [26.6, "..."],
"temperature_2m_min": [16.2, "..."],
"precipitation_sum": [0.0, "..."],
"uv_index_max": [7.6, "..."],
"sunrise": ["2026-08-01T06:24:00+02:00", "..."],
"sunset": ["2026-08-01T21:24:00+02:00", "..."],
"daylight_hours": [15.0, "..."]
}
}
Het grid-blok is het lezen waard.
distance_km vertelt u hoe ver het midden van de modelcel van het
gevraagde punt ligt, en resolution_km hoe grof die cel is. Samen
geven ze aan hoe letterlijk u de getallen moet nemen: 0,4 km vanaf een cel van
1,3 km is uw straat; 12 km vanaf een cel van 28 km is uw
regio.
Het elevation-blok zegt wat er is gedaan, niet wat er is
gevraagd. applied: false betekent dat er geen correctie
heeft plaatsgevonden — u hebt geen elevation meegegeven, of het
terrein van het model kwam al overeen. Ga er nooit van uit dat de correctie is
uitgevoerd alleen omdat u erom hebt gevraagd.
De payload verkleinen
Het volledige uurblok over 15 dagen is ongeveer 32 velden × 360 uur. Als u er drie uitzet, vraag er dan drie op:
GET /v1/forecast?lat=48.85&lon=2.35&days=3
&hourly=temperature_2m,precipitation,weather_code
&include_daily=false
Dezelfde prijs — de kosten zitten in het lezen van het archief, niet in het serialiseren — maar een tiende van de bytes en merkbaar sneller te verwerken op een telefoon.
Verwachting per stad#
meteo1 creditHetzelfde antwoord, opgelost via de stedencatalogus.
Geef hieraan de voorkeur boven ruwe coördinaten waar dat kan. De catalogus levert twee dingen die een coördinaat niet kan geven: de werkelijke hoogte van de stad, zodat de terreincorrectie werkt zonder dat u die opgeeft, en haar tijdzone, zodat de dagaggregaten op de juiste lokale dag worden afgesneden.
GET /v1/forecast/city/dz/alger # Franse slug
GET /v1/forecast/city/dz/algiers # Engelse slug — dezelfde stad
GET /v1/forecast/city/fr/paris
country is een ISO-3166-1 alpha-2-code in kleine letters.
slug is ongevoelig voor accenten: bejaia vindt Béjaïa.
Een onbekende slug geeft 404 city_not_found met een
suggestions-array — toon die in plaats van een doodlopend spoor.
Alle queryparameters van /v1/forecast gelden nog
steeds, behalve lat, lon en elevation, die
de catalogus levert. timezone meegeven overschrijft die van de stad,
wat vrijwel nooit is wat u wilt.
Codeer geen geraden slugs hard in. Los de naam één keer op via /v1/geocode, sla het land en de slug op die teruggegeven worden, en gebruik die. Geocodering kost geen credits, dus het netjes doen is gratis.
Actuele omstandigheden#
meteo1 creditDe omstandigheden op dit moment voor een coördinaat, geïnterpoleerd tussen twee modelstappen.
meteo1 creditHetzelfde, via de stedencatalogus.
Temperatuur, luchtvochtigheid, wind en druk worden lineair geïnterpoleerd naar het huidige moment, tussen de twee modelstappen die het omsluiten.
Neerslag wordt niet geïnterpoleerd, en dat is opzet. Een uurlijkse neerslagwaarde is een som over een interval, geen aflezing op een moment. Die interpoleren zou regen verzinnen in een minuut die het model in een ander uur had gelegd. U krijgt in plaats daarvan de waarde van de omsluitende stap — een echt getal over een echt interval.
Gebruik dit voor een „op dit moment”-weergave. Voor alles wat u door de tijd heen vergelijkt, gebruik /v1/forecast en lees het uur dat u wilt: de reeks is stabiel, terwijl nu tussen twee aanroepen onder u wegschuift.
Veldreferentie#
Dezelfde tabel als JSON, met eenheden en welke velden standaard zijn. Geen sleutel nodig.
Uurvelden
21 daarvan komen standaard terug. De rest is voor u zodra u erom vraagt — noem
ze in hourly=, door komma's gescheiden — en ze worden achtergehouden
vanwege de kosten, niet uit twijfel: elk opgeslagen veld is een aparte
gecomprimeerde leesbewerking, zodat een standaardantwoord met alle 45 elke
aanroeper zou laten betalen voor de enkelingen die de sneeuwdikte willen.
GET /v1/forecast?lat=45.19&lon=5.72&hourly=temperature_2m,snow_line_altitude,soil_temperature_8cm
Een veld dat een model niet publiceert komt terug als null voor
het deel van de verwachting van dat model, in plaats van uit het antwoord te
verdwijnen — zodat een keten die op AROME begint en op ICON-EU doorloopt
visibility van begin tot eind teruggeeft, null voor de eerste
51 uur. Een onbekende veldnaam levert een
400 unknown_field op, met de dichtstbijzijnde overeenkomst als
suggestie; vroeger werd hij stilzwijgend genegeerd.
| Veld | Eenheid | Opmerkingen |
|---|---|---|
temperature_2m | °C | Terreingecorrigeerd wanneer de hoogte bekend is |
apparent_temperature | °C | Steadman-formulering; geldig over het hele bereik |
relative_humidity_2m | % | |
dewpoint_2m | °C | |
precipitation | mm | Som over de stap, gedecumuleerd |
precipitation_probability_proxy | % | Heuristiek, geen ensemblekans. Zie hieronder. |
weather_code | WMO | Pictogramcode, gedrempeld op mm/u en niet op de som van de stap |
cloud_cover | % | |
wind_speed_10m | m/s | |
wind_direction_10m | ° | Richting waaruit de wind waait |
wind_gust_10m | m/s | Maximum over de stap |
pressure_msl | hPa | Herleid tot zeeniveau |
surface_pressure | hPa | Op de hoogte van de locatie |
shortwave_radiation | W/m² | Gemiddelde over de stap |
uv_index | 0–11+ | Geschat. Zie hieronder. |
cape | J/kg | Onweerspotentieel |
is_day | 0/1 | |
visibility | m | Alleen ICON-EU en ICON-D2 |
cloud_cover_low | % | Alleen ICON-modellen |
cloud_cover_mid | % | Alleen ICON-modellen |
cloud_cover_high | % | Alleen ICON-modellen |
precipitation_type | WMO | Alleen ECMWF Vraag het op in hourly= |
snow_depth | m | Wat er ligt, niet wat er valt. Alleen ICON Vraag het op in hourly= |
snow_water_equivalent | mm | Wat het sneeuwdek bij smelten oplevert. Alleen ICON Vraag het op in hourly= |
snow_line_altitude | m | Zie sneeuw. ICON-EU en ICON-D2 Vraag het op in hourly= |
freezing_level_altitude | m | 0 °C-isotherm. Alleen ICON Vraag het op in hourly= |
soil_temperature_0cm | °C | Oppervlak. Alleen ICON globaal en ICON-EU Vraag het op in hourly= |
soil_temperature_8cm | °C | Wortelzone, laag 7–28 cm. Alleen ICON globaal en ICON-EU Vraag het op in hourly= |
shortwave_radiation_direct | W/m² | Directe component. Alleen ICON Vraag het op in hourly= |
shortwave_radiation_diffuse | W/m² | Diffuse component. Alleen ICON Vraag het op in hourly= |
solar_elevation | ° | Berekend uit het tijdstempel en de coördinaat Vraag het op in hourly= |
solar_azimuth | ° | Berekend uit het tijdstempel en de coördinaat Vraag het op in hourly= |
temperature_2m_max | °C | Over de stap, waar het model het publiceert Vraag het op in hourly= |
temperature_2m_min | °C | Over de stap, waar het model het publiceert Vraag het op in hourly= |
skin_temperature | °C | Bodemoppervlak, niet de lucht Vraag het op in hourly= |
heat_index | °C | US NWS. Geeft onder 27 °C de gewone temperatuur terug Vraag het op in hourly= |
wind_chill | °C | Environment Canada. Geeft boven 10 °C de gewone temperatuur terug Vraag het op in hourly= |
wind_speed_100m | m/s | Windenergietoepassingen Vraag het op in hourly= |
wind_direction_100m | ° | Vraag het op in hourly= |
wind_beaufort | 0–12 | Vraag het op in hourly= |
cloud_cover_octas | 0–8 | Vraag het op in hourly= |
snowfall | mm | Wateréquivalent, niet de dikte van verse sneeuw Vraag het op in hourly= |
total_column_water_vapour | kg/m² | Vraag het op in hourly= |
pressure_tendency | hPa | Vraag het op in hourly= |
weather_description | tekst | Vraag het op in hourly= |
Dagvelden
date, temperature_2m_max,
temperature_2m_min, temperature_2m_mean,
precipitation_sum, wind_speed_max,
wind_gust_max, shortwave_radiation_sum (MJ/m²),
uv_index_max, sunrise, sunset,
daylight_hours, weather_code.
Geaggregeerd op lokale kalenderdagen, niet UTC. Een gedeeltelijke dag aan een van beide uiteinden van het bereik wordt weggelaten in plaats van gerapporteerd met een misleidend maximum — een verzoek van 7 dagen kan dus gerechtvaardigd 6 dagrijen teruggeven.
Twee velden zijn schattingen, en dat zeggen wij liever dan dat u het ontdekt.
uv_index is afgeleid uit de zonnehoogte en breedbandstraling,
niet uit een ozonkolom. Nauwkeurig tot ongeveer ±1 eenheid — genoeg voor „zet een
hoed op”, niet voor een medische uitspraak.
precipitation_probability_proxy is een schatting, geen kans. Een
deterministisch model heeft geen spreiding om er een uit af te leiden. Het heet
_proxy zodat niemand het verwart met het ensembleproduct van
/v1/probability, dat wel een echte
frequentie over 51 leden is.
Het combineert twee termen. De eerste vraagt of de regen van de cel uw punt bereikt: de opgeslagen intensiteit is een gemiddelde over de hele rastercel, dus bij 28 km — 780 km² — kan een laag gemiddelde een echte bui over een klein deel ervan zijn. Neemt men de subrasterverdeling van intensiteiten als een Weibull-verdeling, met een vorm bepaald door de celgrootte en het modelgemiddelde zelf, dan volgt in gesloten vorm de kans dat een punt in de cel 0,1 mm/u overschrijdt. De tweede term begrenst wat een bewolkte, bijna verzadigde hemel mag claimen daar waar het model helemaal geen regen in de cel legt. Beide worden vervolgens gewogen naar hoeveel geloof een run op die termijn verdient, en daarom leest dezelfde regen op dag 9 lager dan op dag 1.
Bijgevolg kan dezelfde plaats bij twee modellen anders uitvallen, en dat hoort ook: een cel van 2,2 km en een van 28 km zijn het werkelijk oneens over wat een laag gemiddelde betekent. Consumenten-apps die één getal noemen verbergen dit.
Modellen en resolutie#
Welke modellen draaien, wat elk dekt, hoe vers elk is. Geen sleutel nodig.
Wij leveren het fijnste model dat zowel uw punt als uw termijn dekt.
U kiest er nooit zelf een; de keuze wordt gemeld in source.model,
zodat u altijd kunt zien welk model heeft geantwoord.
Hogeresolutiemodellen zijn allemaal kortetermijnmodellen — bij 1 km wordt de atmosfeer binnen twee dagen chaotisch, dus verder vooruit rekenen zou zinloos zijn — en de resolutie daalt daarom trapsgewijs naarmate de verwachting vordert:
dag 0 ─────── dag 2 ─────── dag 5 ───────────────── dag 15
AROME 1,3 km (Frankrijk)
ICON-D2 2,2 km (Duitsland, Alpen, Benelux)
HRRR 3 km (VS en zuidelijk Canada)
ICON-EU 6,5 km (Europa)
ICON 13 km · ECMWF 28 km (globaal)
AIFS (alleen trend)
source.model | Model | Resolutie | Runs | Horizon |
|---|---|---|---|---|
mf_arome | Météo-France AROME | 1.3 km | 8/dag | 51 u |
dwd_icon_d2 | DWD ICON-D2 | 2.2 km | 4/dag | 48 u |
noaa_hrrr | NOAA HRRR | 3 km | 4/dag | 48 u |
dwd_icon_eu | DWD ICON-EU | 6.5 km | 2/dag | 120 u |
dwd_icon | DWD ICON | 13 km | 2/dag | 180 u |
ecmwf_ifs | ECMWF IFS | 28 km | 2/dag | 240 u |
ecmwf_aifs | ECMWF AIFS | 28 km | 2/dag | 360 u |
ecmwf_wave | ECMWF wave | 28 km | 2/dag | 240 u |
Overgangen aan de rand van een modelgebied worden overvloeid, zodat twee plaatsen aan weerszijden van een grens nooit door een sprong van elkaar afwijken.
De dagen 11 tot 15 zijn een trend, geen verwachting. Op die termijn nadert de vaardigheid de klimatologie. Wij publiceren het omdat ernaar gevraagd wordt; behandel het als richting van ontwikkeling, en als u het toont, zeg dat er dan bij.
/v1/models heeft geen sleutel nodig, waardoor het het juiste
endpoint is om vanaf een statuspagina te bevragen of vóór aanschaf te
controleren: het meldt de laatste run van elk model en de ouderdom ervan, zodat
„is de data vers” te beantwoorden is zonder een credit uit te geven.
Ensemblekansen#
meteo1 creditPercentielen en regenkansen uit het ECMWF-ensemble met 51 leden.
Eén enkele verwachting zegt 22 °C op donderdag. Dat is een gok die als feit wordt gepresenteerd. Dit endpoint beantwoordt de vraag waarop u werkelijk beslist: hoe zeker is het, en welke regenkans is het waard om zich op te organiseren.
Het wordt berekend uit het ensemble van het ECMWF — hetzelfde model 50 keer gedraaid vanuit licht verschillende beginvoorwaarden. Waar de runs het eens zijn, is de verwachting zeker. Waar ze uiteenlopen, is de atmosfeer zelf onzeker, en geen enkel model, hoe goed ook, kan u meer vertellen.
{
"members": 50,
"hourly": {
"time": ["2026-08-01T00:00:00+00:00"],
"temperature_2m_p10": [26.4],
"temperature_2m_p50": [26.78],
"temperature_2m_p90": [27.3],
"temperature_2m_spread": [0.4],
"precipitation_probability_0_1mm": [10.0],
"precipitation_probability_1_0mm": [0.0],
"precipitation_probability_5_0mm": [0.0],
"precipitation_probability_10_0mm": [0.0],
"precipitation_p90": [0.1]
}
}
Hoe u het leest
p10 en p90 omsluiten de middelste 80 % van de leden:
één op de tien verwacht het kouder dan p10, één op de tien warmer
dan p90. Een spread van 0,4 °C is een gevestigde
situatie waarop u kunt vertrouwen; 3 °C betekent dat de modellen het oneens zijn
en dat u dat beter aan uw gebruikers kunt zeggen dan er één te kiezen.
De regendrempels zijn beslissingen en geen ronde getallen — 0,1 mm is
überhaupt nat, 1 mm is neem een jas mee, 5 en 10 mm zijn
dit wordt een probleem. precipitation_p90 is het ongunstige
geval: slechts één op de tien leden is natter.
Slechts twee variabelen, temperatuur en neerslag. Bewolking, wind en druk toevoegen zou de bandbreedte van het hele platform verdubbelen voor getallen waarop niemand een beslissing neemt.
Luchtkwaliteit#
meteo1 creditFijnstof, ozon, NO₂, SO₂, CO en Saharastof, uit Copernicus CAMS.
Dit is het endpoint dat in Noord-Afrika en het Middellandse Zeegebied het zwaarst weegt. Een stofepisode duwt PM10 dagenlang voorbij duizend microgram per kubieke meter, wat eerder een gezondheidsbeslissing is dan een getal, en het wordt slecht gedekt door gratis consumentendiensten.
{
"current": {
"pm2_5": 38.7,
"band": "poor",
"who_guidelines_ug_m3": {"pm2_5": 15.0, "pm10": 45.0,
"nitrogen_dioxide": 25.0, "ozone": 100.0}
},
"hourly": {
"time": ["2026-08-01T00:00:00+00:00"],
"pm2_5": [38.7], "pm10": [85.8], "ozone": [43.4],
"nitrogen_dioxide": [19.0], "dust_aod_550nm": [0.24]
},
"units": {"pm2_5": "ug/m3", "pm10": "ug/m3", "dust_aod_550nm": "1"}
}
Alle concentraties zijn in µg/m³, de eenheid waarin
luchtkwaliteit overal wordt genoemd. dust_aod_550nm is een optische
dikte en heeft geen eenheid: boven ongeveer 0,5 is de hemel zichtbaar heiig,
boven 1,0 is de zon gedempt.
De kortetermijnrichtwaarden van de WHO reizen in elk antwoord mee, zodat een
getal geplaatst kan worden zonder het op te zoeken. band volgt de
Europese luchtkwaliteitsindex voor PM2,5: goed, redelijk, matig, slecht, zeer
slecht, uiterst slecht.
Sneeuw en de sneeuwgrens#
Vier velden, en ze beantwoorden verschillende vragen. snowfall is
hoeveel er valt; de rest beschrijft wat er op de grond ligt, en waar.
Vraag ze bij naam op — ze zitten niet in het standaardantwoord:
GET /v1/forecast?lat=45.19&lon=5.72&hourly=snowfall,snow_depth,snow_water_equivalent,snow_line_altitude,freezing_level_altitude
| Veld | Eenheid | Wat het u zegt |
|---|---|---|
snow_depth | m | Wat er ligt. Twintig centimeter kan vallen en smelten, of neerkomen op tachtig die er al lagen. |
snow_water_equivalent | mm | Wat het bij smelten oplevert. Een halve meter poeder en een halve meter samengepakte sneeuw zijn heel verschillend. |
snow_line_altitude | m | De hoogte waarboven neerslag als sneeuw valt. |
freezing_level_altitude | m | Hoogte van de 0 °C-isotherm, doorgaans enkele honderden meters boven de sneeuwgrens. |
De sneeuwgrens is degene die het lezen waard is. „Het regent op 800 m en het sneeuwt op 1200” is iets waar een skigebied, een wegbeheerder of een automobilist naar kan handelen; „3 mm neerslag” niet. Het telt ook in Noord-Afrika — de Atlas heeft skigebieden bij Chréa en Tikjda, en de hoogvlakten van Sétif, Batna en Djelfa liggen boven 1000 m.
Gletsjers melden tientallen meters sneeuwdikte, omdat het model zo permanent ijs weergeeft en niet vanwege een meetfout. De diepste seizoenssneeuw op aarde ligt rond 11 m — beschouw alles daarboven als ijs, niet als weer.
Deze velden komen uit ICON van de DWD, dat de wereld op 13 km dekt. De open
data van het ECMWF publiceren de sneeuwdikte maar niet de sneeuwgrens: dit is dus
een geval waarin het grovere model het nuttigste is.
snow_line_altitude is een regionaal product — ICON-EU en ICON-D2
publiceren het, ICON globaal niet, dus buiten Europa krijgt u de isotherm en de
dikte, maar niet de grens zelf.
Zee — zeegang#
meteo1 creditGolfhoogte, -richting en -periode uit het golfmodel van het ECMWF, wereldwijd, tot 10 dagen.
{
"hourly": {
"time": ["2026-08-01T00:00:00+00:00"],
"wave_height": [0.32],
"wave_direction": [264.3],
"wave_period": [3.79],
"wave_peak_period": [4.21]
}
}
De golfhoogte is de significante golfhoogte — het gemiddelde van het hoogste derde deel van de golven, wat ongeveer overeenkomt met wat een waarnemer op zee meldt. Afzonderlijke golven halen ongeveer het dubbele, en dat is het getal dat telt als u beslist of u uitvaart. De richting is die waaruit de golven komen, net als bij de windrichting.
Een punt op het land geeft 404 not_at_sea terug in plaats van een
lijst met nulls. Het golfmodel heeft boven land per constructie geen waarde, en
dat zeggen is nuttiger dan een antwoord dat op een storing lijkt. Als u
gebruikers een speld laat plaatsen, behandel deze code dan expliciet.
Rivieren#
meteo1 creditRivierdebiet uit Copernicus GloFAS op een riviernetwerk van 0,05°, tot 10 dagen.
Dit beantwoordt wat geen enkel weermodel kan: niet hoeveel regen er stroomopwaarts valt, maar hoeveel water er hier aankomt — een heel ander getal, van de regen gescheiden door een stroomgebied, een bodemvochttoestand en een dag of twee reistijd.
{
"disclaimer": "Information only. Only national and regional authorities
are authorised to issue flood warnings.",
"daily": {
"time": ["2026-08-01T00:00:00+00:00"],
"river_discharge": [4.953],
"soil_wetness_index": [0.448]
}
}
| Veld | Betekenis |
|---|---|
river_discharge | Gemiddeld debiet in m³/s over de 24 uur die op dat moment eindigen. Nul betekent dat het model geen rivier in die cel heeft, niet dat een rivier is drooggevallen. |
soil_wetness_index | Verzadiging van het stroomgebied, van 0 droog tot 1 verzadigd. Hoge waarden betekenen dat verdere regen afstroomt in plaats van in te zijgen. |
Dit is geen hoogwaterwaarschuwing en mag niet als zodanig worden gepresenteerd. De Copernicus-licentie behoudt hoogwaterwaarschuwingen voor aan nationale en regionale overheden binnen hun verantwoordelijkheidsgebied, en dat is de juiste ordening — wie bevoegd is te waarschuwen, is ook wie een weg kan afsluiten en een dorp kan ontruimen.
Debiet in m³/s, ja. Een waarschuwing, een ernstkleur of een opdracht om te handelen, nee, hoe de getallen er die dag ook uitzien. De disclaimer reist mee in elk antwoordlichaam, niet alleen hier, en staat daar zodat hij uw gebruikers bereikt ook als deze pagina dat niet heeft gedaan.