sfoln/historical-weather · Developer tools, Automation, Travel On request
Get daily historical weather for any place or coordinates and date range since 1940: max, min and mean temperature, precipitation, rain, snowfall, wind and sunshine, one row per day (Open-Meteo). $0.20 per 1,000 days + $0.002 per location.
Historical Weather Data API gets daily historical weather – max/min/mean temperature, precipitation, rain, snowfall, max wind speed and sunshine duration – for any list of places or coordinates and any date range back to 1940. Each location-day is one clean dataset row, ready for spreadsheets, BI tools, insurance and claims checks, energy and retail demand models, agronomy and machine-learning features.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
Historical weather day historical-weather-day
$0.0002
$0.20 / 1,000
Charged once per location-day row delivered (days without data in the archive are not returned or charged).
Charged once per location for which at least one day of history was delivered.
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
Run
Call it from code, an agent or the Console
This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com
POST https://api.apify.com/v2/actors/sfoln~historical-weather/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Get the daily weather in London from 1 to 7 January 2025: maximum and minimum temperature, rain and sunshine hours.
Input
Input fields
List places or coordinates and a date range. Each location produces one dataset row per day plus one per-location summary row.
Field
Type
Default
Meaning
locations *
array
required
Locations One per line: a place name ("London", "Paris, France") or "latitude,longitude" ("35.6762,139.6503"). Via the API you can also pass objects like {"latitude": 52.52, "longitude": 13.41, "name": "Site A"} or {"place": "Springfield", "countryCode": "US"}. Accounts on the Apify free plan can process up to 10 locations per run and 31 days per location.
startDate *
string
required
Start date First day (YYYY-MM-DD), 1940-01-01 or later.
endDate
string
—
End date Last day (YYYY-MM-DD), inclusive. At most 366 days after the start date and not in the future. Defaults to the start date. The newest ~5 days are usually not in the archive yet.
variables
array
[]
Daily variables Which daily values to return. Leave empty for all.
units
string
"metric"
Units metric = °C, km/h, mm (snowfall cm) · imperial = °F, mph, inch. One of "metric", "imperial".
maxLocations
integer
100
Max locations Safety cap on how many locations are processed in this run. Range 1–1000.
concurrency
integer
5
Concurrency How many locations are processed in parallel. Range 1–10.
includeRaw
boolean
false
Include raw upstream response Attach the unmodified Open-Meteo payload to each per-location summary row.
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string | object
Input The parsed location input.
recordType
string
Record type day = one billed row per location-day · location = per-location summary. e.g. "day"
location
string | null
Location Resolved place label or "lat,lng".
resolvedPlace
object | null
Resolved place Geocoding match for place-name inputs.
latitude
number | null
Latitude Grid-cell latitude used by the archive.
longitude
number | null
Longitude Grid-cell longitude used by the archive.
elevation
number | null
Elevation (m)
timezone
string | null
Timezone Local timezone used to aggregate days.
date
string
Date Local calendar day (day rows). e.g. "2025-01-01"
tempMax
number | null
Max temperature
tempMin
number | null
Min temperature
tempMean
number | null
Mean temperature
precipitation
number | null
Precipitation sum
rain
number | null
Rain sum
snowfall
number | null
Snowfall sum cm (metric) or inch.
windMax
number | null
Max wind speed (10 m)
sunshineDuration
number | null
Sunshine duration (s) Seconds of sunshine (WMO definition).
units
object | null
Units Unit label per returned variable.
startDate
string | null
Start date (summary)
endDate
string | null
End date (summary)
daysRequested
integer | null
Days requested (summary)
daysReturned
integer | null
Days returned (summary)
attribution
string | null
Attribution Weather data by Open-Meteo.com (CC BY 4.0).
status
string
Status ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan e.g. "ok"
charged
boolean
Charged Whether this record incurred a pay-per-event charge.