Open Meteo Scraper
Pricing
from $0.60 / 1,000 location fetcheds
Open Meteo Scraper
Get weather forecasts, current conditions, and historical data for any location worldwide. Supports daily and hourly data with customizable units. No API key needed.
Pricing
from $0.60 / 1,000 location fetcheds
Rating
5.0
(1)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
1
Bookmarked
9
Total users
4
Monthly active users
13 days ago
Last modified
Categories
Share
Open-Meteo Weather Scraper
Get weather forecasts, current conditions, or historical daily weather for any location worldwide using the Open-Meteo APIs. No API key required.
What does Open-Meteo Weather Scraper do?
This actor fetches real-time forecasts or opt-in historical daily weather for one or more locations. Forecast mode uses Open-Meteo's forecast API, while historical mode uses the Open-Meteo Archive API. It returns structured data including:
- Current conditions: temperature, feels-like temperature, humidity, weather description, precipitation, cloud cover, pressure
- Wind data: speed, direction, gusts in your preferred unit (km/h, mph, m/s, knots)
- UV & daylight: UV index, sunrise/sunset times, sunshine duration
- Daily forecasts: up to 16 days ahead with min/max temperatures, precipitation probability, and weather codes
- Hourly data: optional hour-by-hour breakdown for detailed forecast analysis
- Historical daily weather: opt-in backfills of up to 92 days per run with temperature, precipitation, wind, weather codes, sunrise, and sunset
- Smart geocoding: accepts city names or latitude/longitude coordinates in either mode
Who is it for?
Open-Meteo Weather Scraper is useful for analysts, developers, researchers, event planners, agriculture teams, travel teams, and AI agents that need clean weather data without maintaining their own weather API integration. It is especially practical when you want repeatable exports for many cities or coordinates and need CSV, JSON, Excel, API, or MCP access from the same workflow.
Why use Open-Meteo Weather Scraper?
- No API key needed — Open-Meteo is free for non-commercial use with no signup required
- Global coverage — weather data for any location on Earth with ~1km resolution
- High accuracy — combines data from national weather services including DWD, NOAA, and Météo-France
- Up to 16-day forecasts — detailed daily and optional hourly predictions
- Historical backfills — fetch an inclusive date range of up to 92 days from the Archive API
- Multiple locations — fetch weather for many cities in a single run
- Flexible units — choose Celsius/Fahrenheit, km/h/mph/m/s/knots
- Human-readable weather — WMO weather codes translated to plain English descriptions
Use cases
- Travel planning: Check weather forecasts for upcoming trip destinations
- Agriculture: Monitor temperature, precipitation, and UV for crop management
- Event planning: Get multi-day forecasts for outdoor event scheduling
- Supply chain: Weather-aware logistics and demand forecasting
- Energy: Solar and wind forecasting for renewable energy planning
- Retail analytics: Correlate sales data with weather conditions
- Research: Backfill historical weather across multiple locations for longitudinal analysis
How to get weather data with Open-Meteo Scraper
- Go to Open-Meteo Weather Scraper on Apify Store.
- Enter one or more locations — city names (e.g., "London") or coordinates (e.g., "48.8566,2.3522").
- Keep
dataModeset toforecastfor the existing current/forecast workflow, or choosehistoricalfor an Archive API backfill. - In forecast mode, set the number of forecast days (0–16) and optionally enable hourly data.
- In historical mode, provide
startDateandendDateinYYYY-MM-DDformat; the inclusive range can be up to 92 days. - Choose your preferred temperature and wind speed units.
- Click Start and download your data as JSON, CSV, or Excel.
Input parameters
| Parameter | Type | Description |
|---|---|---|
locations | Array | List of locations — city names or "lat,lon" coordinates (required) |
dataMode | String | forecast or historical (default: forecast) |
startDate | String | Historical range start in YYYY-MM-DD; required only when dataMode is historical |
endDate | String | Historical range end in YYYY-MM-DD; required only when dataMode is historical; inclusive range is limited to 92 days |
forecastDays | Integer | Forecast days to include, 0–16 (default: 7; ignored in historical mode) |
includeHourly | Boolean | Include hourly data for each forecast day (default: false) |
temperatureUnit | String | "celsius" or "fahrenheit" (default: "celsius") |
windSpeedUnit | String | "kmh", "mph", "ms", or "kn" (default: "kmh") |
Output example
Each location produces one dataset item. Forecast mode contains current conditions and daily forecasts:
{"location": "London, United Kingdom","latitude": 51.5085,"longitude": -0.1257,"elevation": 27.0,"timezone": "Europe/London","country": "United Kingdom","temperature": 14.2,"apparentTemperature": 12.8,"humidity": 72,"weatherCode": 3,"weatherDescription": "Overcast","precipitation": 0.0,"windSpeed": 15.3,"windDirection": 220,"windGusts": 28.1,"cloudCover": 100,"pressure": 1018.5,"uvIndex": 2.1,"isDay": true,"currentTime": "2026-03-03T14:00","temperatureUnit": "°C","windSpeedUnit": "kmh","dailyForecast": [{"date": "2026-03-03","weatherCode": 3,"weatherDescription": "Overcast","temperatureMax": 14.2,"temperatureMin": 8.1,"temperatureMean": 11.2,"precipitationSum": 0.0,"precipitationProbabilityMax": 10,"windSpeedMax": 22.5,"uvIndexMax": 2.5,"sunrise": "2026-03-03T06:42","sunset": "2026-03-03T17:48","sunshineDuration": 18200}],"hourlyData": [],"historicalDaily": [],"scrapedAt": "2026-03-03T14:00:00.000Z"}
Historical mode keeps the forecast fields schema-compatible (null, empty strings, or empty arrays) and populates historicalDaily instead:
{"location": "London, United Kingdom","latitude": 51.5085,"longitude": -0.1257,"timezone": "Europe/London","temperature": null,"dailyForecast": [],"hourlyData": [],"historicalDaily": [{"date": "2026-01-01","weatherCode": 3,"weatherDescription": "Overcast","temperatureMax": 8.4,"temperatureMin": 3.1,"temperatureMean": 5.6,"precipitationSum": 1.2,"windSpeedMax": 24.7,"sunrise": "2026-01-01T08:06","sunset": "2026-01-01T16:02"}],"scrapedAt": "2026-01-10T14:00:00.000Z"}
How much does it cost to get weather data from Open-Meteo?
Open-Meteo Weather Scraper uses a pay-per-event pricing model:
| Event | Price |
|---|---|
| Run started | $0.001 |
| Per location fetched | $0.00028–$0.00115, depending on account tier ($0.001 on Bronze) |
Bronze-tier cost examples:
- 5 locations: $0.001 + (5 × $0.001) = $0.006
- 20 locations: $0.001 + (20 × $0.001) = $0.021
- 100 locations: $0.001 + (100 × $0.001) = $0.101
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/open-meteo-scraper').call({locations: ['London', 'Paris', 'Berlin'],forecastDays: 7,temperatureUnit: 'celsius',});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(w => {console.log(`${w.location}: ${w.temperature}${w.temperatureUnit} - ${w.weatherDescription}`);});
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('automation-lab/open-meteo-scraper').call(run_input={'locations': ['London', 'Paris', 'Berlin'],'forecastDays': 7,'temperatureUnit': 'celsius',})dataset = client.dataset(run['defaultDatasetId']).list_items().itemsfor w in dataset:print(f"{w['location']}: {w['temperature']}{w['temperatureUnit']} - {w['weatherDescription']}")
cURL
curl "https://api.apify.com/v2/acts/automation-lab~open-meteo-scraper/runs" \-X POST \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"locations": ["London", "Paris", "Berlin"], "forecastDays": 7, "temperatureUnit": "celsius"}'
Integrations
Connect Open-Meteo Weather Scraper with other tools using Apify integrations:
- Google Sheets — Export weather data to spreadsheets for monitoring and analysis
- Slack / Email — Get weather alerts when conditions change
- Webhooks — Trigger workflows based on weather data updates
- Zapier / Make — Connect to 5,000+ apps for weather-driven automation
- Amazon S3 / Google Cloud — Archive weather data for long-term analysis
Tips and best practices
- City names vs coordinates — city names are geocoded automatically; for precision, use "lat,lon" format
- Forecast days — set to 0 for current weather only; up to 16 days available
- Historical dates — set
dataModetohistoricaland provide bothstartDateandendDate; split longer backfills into ranges of at most 92 days - Hourly data — applies only in forecast mode and produces significantly more data; disable if you only need daily summaries
- Multiple locations — add as many locations as needed; each is fetched in a single API call
- Weather codes — WMO standard codes (0–99) are automatically translated to human-readable descriptions
- Scheduling — set up recurring runs on Apify to build weather history datasets
Weather code reference
| Code | Description |
|---|---|
| 0 | Clear sky |
| 1–3 | Mainly clear, Partly cloudy, Overcast |
| 45, 48 | Fog, Depositing rime fog |
| 51–55 | Drizzle (light, moderate, dense) |
| 61–65 | Rain (slight, moderate, heavy) |
| 71–75 | Snowfall (slight, moderate, heavy) |
| 80–82 | Rain showers (slight, moderate, violent) |
| 95–99 | Thunderstorm, with hail |
Data source
All weather data comes from Open-Meteo, which aggregates data from national weather services worldwide. Data is available under the CC BY 4.0 license.
Use with AI agents via MCP
Open-Meteo Weather Scraper is available as a tool for AI assistants via the Model Context Protocol (MCP).
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/open-meteo-scraper"
Setup for Claude Desktop, Cursor, or VS Code
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/open-meteo-scraper"}}}
Example prompts
- "Get weather forecast for London this week"
- "Backfill historical daily weather for London from 2026-01-01 to 2026-01-31"
- "What's the temperature and precipitation forecast for Tokyo?"
Learn more in the Apify MCP documentation.
Legality
Scraping publicly available data is generally legal according to the US Court of Appeals ruling (HiQ Labs v. LinkedIn). This actor only accesses publicly available information and does not require authentication. Always review and comply with the target website's Terms of Service before scraping. For personal data, ensure compliance with GDPR, CCPA, and other applicable privacy regulations.
FAQ
Q: Is an API key needed? A: No. Open-Meteo provides free weather data without authentication for non-commercial use.
Q: How accurate are the forecasts? A: Open-Meteo uses high-resolution models (1–11km) from DWD, NOAA, Météo-France, and other national services. Short-term forecasts (1–3 days) are highly accurate.
Q: Can I get historical weather data?
A: Yes. Set dataMode to historical, then provide startDate and endDate in YYYY-MM-DD format. The actor fetches daily weather from the Open-Meteo Archive API for an inclusive range of up to 92 days. Current conditions, dailyForecast, and hourlyData are not populated in historical mode.
Q: What happens if a location can't be found? A: The actor logs a warning and skips unresolvable locations. Other locations in the same run are still processed.
Q: The weather data seems wrong for my city — what should I check?
A: City name geocoding may resolve to a different location with the same name. For precise results, use latitude/longitude coordinates instead (e.g., "48.8566,2.3522" for Paris). Check the returned latitude and longitude fields to verify the resolved location.
Q: Hourly data is empty even though I set includeHourly: true — why?
A: Make sure forecastDays is set to at least 1. If forecastDays is 0 (current weather only), there are no forecast days to generate hourly breakdowns for.
Related actors and other data scrapers on Apify
- NASA Images Scraper — search and extract NASA images with full metadata
- OpenAlex Scraper — extract academic paper metadata, citations, and author data
- OpenFDA Scraper — extract FDA drug adverse event reports
- Open Food Facts Scraper — scrape food product nutrition data
- arXiv Scraper — scrape preprint papers from arXiv
- ClinicalTrials Scraper — extract clinical trial data from ClinicalTrials.gov