Weather Forecast Scraper
Pricing
from $6.80 / 1,000 results
Weather Forecast Scraper
Scrape a daily weather forecast for any latitude and longitude: max and min temperature, precipitation and peak wind speed per day. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
12 hours ago
Last modified
Categories
Share
Open-Meteo Weather Forecast Scraper
Here is one real result, with every field the actor returns:
{"latitude": 52.52,"longitude": 13.419998,"date": "2026-08-10","tempMax": 30.4,"tempMin": 19.5,"precipitation": 0.9,"windMax": 19,"weatherCode": 95,"condition": "Thunderstorm","apparentTempMax": 28.4,"apparentTempMin": 19.3,"precipitationProbabilityMax": 43,"precipitationHours": 2,"windGustsMax": 48.2,"windDirectionDominant": 302,"uvIndexMax": 5.55,"sunrise": "2026-08-10T05:40","sunset": "2026-08-10T20:42","daylightDurationSec": 54110.51,"sunshineDurationSec": 36936.12,"elevation": 38,"currentTemp": 26.8,"currentWindSpeed": 18.7,"currentWindDirection": 341,"currentWeatherCode": 3,"currentCondition": "Overcast","isDay": true,"timezone": "Europe/Berlin","source": "Open-Meteo","observedAt": "2026-08-10T14:41:30.850Z"}
The most complete Open-Meteo weather forecast scraper available. It returns every daily forecast field the Open-Meteo dataset exposes for a location, plus a decoded human-readable condition and the current conditions block, and gives you latitude, longitude and a day count to target exactly the forecast you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor takes a latitude and longitude, requests the Open-Meteo forecast for that point, and writes one normalized record per forecast day to the run's dataset. Each daily record carries the raw Open-Meteo daily metrics (temperature, precipitation, wind, UV, sun times) plus a decoded condition string for the WMO weather code and a block of current conditions at run time. Temperatures are in degrees Celsius, wind in km/h, and times in the location's local timezone.
Coverage is global: any latitude and longitude on Earth is supported.
Quickstart
Open the actor, paste this into the input, and press Run. It returns a 10-day forecast for Berlin.
{"maxDays": 10,"latitude": "52.52","longitude": "13.41"}
Every input field is optional; with an empty input the actor returns the forecast for the default coordinates (Berlin).
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
latitude | string | no | 52.52 | Latitude of the location in decimal degrees, for example 52.52 for Berlin. |
longitude | string | no | 13.41 | Longitude of the location in decimal degrees, for example 13.41 for Berlin. |
maxDays | integer | no | 10 | Maximum number of forecast days to collect. Open-Meteo provides up to 16 days of daily forecast. |
Output reference
One dataset item per forecast day. Types: number, integer, boolean, or string.
| Field | Type | Description |
|---|---|---|
latitude | number | Latitude of the forecast grid point. |
longitude | number | Longitude of the forecast grid point. |
date | string | Forecast date (YYYY-MM-DD). |
tempMax | number | Maximum air temperature (C). |
tempMin | number | Minimum air temperature (C). |
precipitation | number | Total precipitation (mm). |
windMax | number | Maximum wind speed (km/h). |
weatherCode | integer | WMO weather interpretation code for the day. |
condition | string | Decoded human-readable condition for weatherCode, for example Thunderstorm. |
apparentTempMax | number | Maximum apparent ("feels like") temperature (C). |
apparentTempMin | number | Minimum apparent temperature (C). |
precipitationProbabilityMax | integer | Maximum precipitation probability for the day (%). |
precipitationHours | number | Hours with precipitation during the day. |
windGustsMax | number | Maximum wind gusts (km/h). |
windDirectionDominant | integer | Dominant wind direction (degrees). |
uvIndexMax | number | Maximum UV index for the day. |
sunrise | string | Local sunrise time (ISO 8601). |
sunset | string | Local sunset time (ISO 8601). |
daylightDurationSec | number | Daylight duration (seconds). |
sunshineDurationSec | number | Sunshine duration (seconds). |
elevation | number | Elevation of the grid point (meters). |
currentTemp | number | Current air temperature at run time (C). |
currentWindSpeed | number | Current wind speed (km/h). |
currentWindDirection | integer | Current wind direction (degrees). |
currentWeatherCode | integer | Current WMO weather code. |
currentCondition | string | Decoded current condition, for example Overcast. |
isDay | boolean | true when it is currently daytime at the location. |
timezone | string | IANA timezone of the location, for example Europe/Berlin. |
source | string | Data source name. Always Open-Meteo. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
On a failed run, a single item with a populated error field (plus source and observedAt) is written instead.
Example output record
Real record from a live run (input {"latitude":"52.52","longitude":"13.41","maxDays":10}), the first forecast day for Berlin:
{"latitude": 52.52,"longitude": 13.419998,"date": "2026-08-10","tempMax": 30.4,"tempMin": 19.5,"precipitation": 0.9,"windMax": 19,"weatherCode": 95,"condition": "Thunderstorm","precipitationProbabilityMax": 43,"windGustsMax": 48.2,"uvIndexMax": 5.55,"sunrise": "2026-08-10T05:40","sunset": "2026-08-10T20:42","currentTemp": 26.8,"currentCondition": "Overcast","isDay": true,"timezone": "Europe/Berlin","source": "Open-Meteo","observedAt": "2026-08-10T14:41:30.850Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~open-meteo-weather-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"latitude":"40.71","longitude":"-74.01","maxDays":7}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~open-meteo-weather-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"latitude":"-34.60","longitude":"-58.38","maxDays":16}'
Apify CLI:
apify call scrapers_lat/open-meteo-weather-scraper \--input '{"latitude":"51.51","longitude":"-0.13"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per forecast day returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If the forecast request fails, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxDays. - Forecast horizon. Open-Meteo provides up to 16 days of daily forecast; values above that return the maximum available.
FAQ and troubleshooting
What coordinates should I use?
Any latitude and longitude in decimal degrees. For example, Berlin is 52.52 / 13.41, New York is 40.71 / -74.01, Buenos Aires is -34.60 / -58.38.
What units are the values in? Temperatures in degrees Celsius, wind in km/h, precipitation in mm, durations in seconds, and times in the location's local timezone.
What does weatherCode mean?
It is the WMO weather interpretation code. The actor decodes it into a readable condition string (and currentCondition for the current block) so you do not have to map codes yourself.
How many days can I get?
Up to 16 daily forecast records per location, one dataset item each. Set maxDays to control how many.
Is this an official Open-Meteo tool? No. This actor is independent and has no affiliation with Open-Meteo. It reads the free Open-Meteo forecast data. Use it in accordance with the Open-Meteo terms of use.
Related scrapers
- Exchange Rates Scraper: Daily currency exchange rates.
- GBIF Species Occurrence Scraper: Global biodiversity species records.
- IMF Data Scraper: IMF macroeconomic indicators by country.
- GDELT News Events Scraper: Global news events feed.
- Latam Central Banks FX Scraper: Latin American central bank FX rates.
- openFDA Food Recall & Enforcement Scraper: US FDA food recall records.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Open-Meteo. Reads the free Open-Meteo forecast data. Use in accordance with the Open-Meteo terms of use.
