Weather History Scraper
Pricing
from $0.14 / 1,000 daily records
Weather History Scraper
Every weather actor returns a forecast. This answers the question buyers actually ask: is this normal for here, at this time of year? Thirty years of history per location, giving the anomaly in degrees, the rank among those years, and frost, heat and heavy-rain days against their own normals.
Pricing
from $0.14 / 1,000 daily records
Rating
0.0
(0)
Developer
Datalayer
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Weather History Scraper — Climate Anomaly
Historical weather for any location on earth, compared against that location's own 30-year baseline.
Every weather actor on the store returns a forecast. A forecast answers "how hot will it be on Thursday" — which is free everywhere and which nobody pays for. The question an agronomist, an underwriter or a logistics planner actually asks is different:
Is this normal for here, at this time of year?
Answering that needs decades of history for the same calendar window. This does it in one request per location.
What it tells you
For the last 30 days at each location, against the same 30 days in each of the previous 30 years:
- Temperature anomaly — this window minus the normal, in °C
- Rank — 1 means the warmest such window in 30 years. Measured, not asserted
- Rainfall as a percentage of normal — 45% is a drought signal; 210% is a harvest problem
- Threshold days against their own normal — frost, hot, very hot, heavy rain, dry. Not just "6 hot days", but "6 hot days where 2.8 is normal"
A live run on 2026-08-16:
| Location | Mean temp | Normal | Anomaly | Rank | Hot days (normal) |
|---|---|---|---|---|---|
| Napa Valley, US | 23.65°C | 22.86°C | +0.79°C | 10 / 31 | 28 (21.7) |
| Berlin, DE | 20.45°C | 20.05°C | +0.40°C | 13 / 31 | 5 (2.8) |
| Sydney, AU | 12.44°C | 12.38°C | +0.06°C | 13 / 31 | 0 (0) |
Napa's temperature anomaly is unremarkable. Its hot-day count is 29% above normal, which for a vineyard is the number that matters. That gap is the reason threshold days are reported against their own baseline rather than on their own.
Why one request per location
Open-Meteo's ERA5 archive reaches back to 1940, and — verified 2026-08-16 — will return 30 years of daily records in a single call (10,987 days in the live run above). So the whole comparison costs one HTTP request. That is what makes this an actor rather than a research project.
Who uses this
- Agriculture — growing degree days, frost risk, heat stress against a real local baseline rather than a regional average.
- Insurance and reinsurance — was this event unusual for this postcode?
- Logistics and energy — demand and disruption planning.
- ESG and climate reporting — site-level trend evidence.
- Events and hospitality — what the weather actually does there in late September, over 30 years, not one.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
locations | array | ["Napa Valley"] | Place names or "lat,lon". Coordinates skip geocoding and are exact |
windowDays | integer | 30 | Length of the analysis window |
baselineYears | integer | 30 | Years to compare against. Archive reaches 1940 |
hotDayC | integer | 30 | Hot-day threshold |
veryHotDayC | integer | 35 | Second heat threshold, for crop and livestock limits |
heavyRainMm | integer | 20 | Heavy-rain threshold |
includeDaily | boolean | false | Also return every day in the window |
Output
climate_summary — one row per location: meanTemp, normalTemp,
tempAnomaly, tempRank, isWarmestOnRecord, tempPercentile,
totalRainfall, normalRainfall, rainfallPercentOfNormal, rainRank,
frostDays + normalFrostDays, hotDays + normalHotDays, veryHotDays,
heavyRainDays, dryDays, highestTemp, lowestTemp, wettestDay,
maxWindGust, elevationM, baselineYearsUsed.
daily — day-by-day temperature, rainfall and wind. Off by default because
it multiplies the row count by the window length.
Things worth knowing
- The window ends 3 days ago, not today. The ERA5 archive lags real time by about 2 days (measured). Including today would return nulls and drag every mean down.
- Check
resolvedName. The geocoder matches "Napa Valley" to Bothe-Napa Valley State Park. Close, but if you need a specific vineyard, pass coordinates. - Check
baselineYearsUsed. Asking for 30 years does not guarantee 30 years of coverage. A year with a gap in the archive is excluded rather than allowed to distort the normal, and the count tells you what the figures rest on. - A tie is not a record.
isWarmestOnRecordrequires beating every baseline year outright, not merely ranking first. elevationMexplains a lot of surprises — the model grid cell for a mountain valley reads colder than the town it is named after.
Pricing
Pay per event. $0.05 per climate summary, $0.0002 per daily record.


