Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Open-Meteo Weather Scraper icon

Open-Meteo Weather Scraper

Get current weather and 16-day forecasts for any city or coordinates: temperature, humidity, wind and precipitation. $0.20 per 1,000 rows.

184 runs on Apify $0.0002 per weather result ($0.2 / 1,000)
Run this in the cloudRun on Apify →

Weather Data

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust mode, places, latitude (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0002 per weather result = $0.2 per 1,000

You are charged forWhenPrice
Weather resultCharged per weather/geocode row returned.$0.0002

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-04, and they are what you are actually charged.

Inputs

FieldWhat it doesType
modeWhat to return: "current" = current conditions per place, "forecast" = one row per day (up to Forecast days, or every day between Start date and End date), "geocode" = just resolve place names to coordinates and metadata.string
placesList of place names to look up (e.g. ["Berlin", "Tokyo", "New York"]). Each is geocoded to its top match. Leave empty if you provide Latitude + Longitude directly.array
latitudeOptional. Use exact coordinates instead of a place name. Only used when Places is empty. Must be paired with Longitude. Example: 52.52.string
longitudeOptional. Use exact coordinates instead of a place name. Only used when Places is empty. Must be paired with Latitude. Example: 13.41.string
forecastDaysNumber of days to return in forecast mode (1-16). Ignored in current / geocode modes, and when Start date and End date are set.integer
startDateForecast mode only. The first day you want, as YYYY-MM-DD, and set End date too. Days before today come from Open-Meteo's historical record, which goes back to 1940-01-01. Today and later come from the forecast. Leave both dates empty for the usual forecast starting today.string
endDateForecast mode only. The last day you want, as YYYY-MM-DD, at most 15 days after today. For a single day, use the same date as Start date. Max items still caps the rows, so a long window is cut at its far end.string
maxItemsMaximum total output rows across all places. Caps forecast rows too (each forecast day is one row).integer
notionConnectorOptional. Write each item as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default), results are always saved to the dataset regardless.string
notionParentIdOptional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead.string

What you get

A structured dataset — each result includes fields like:

apparentTemperaturedatehumiditylatitudelongitudeplaceprecipitationprecipitationSumtempMaxtempMintemperaturetimetimezoneweather

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

2 ready-to-run use cases

Current Weather API for a List of Cities, No Key

Temperature, feels-like, humidity, wind and a plain-language condition per city, from Open-Meteo. City names get geocoded, so spell them properly.

7 Day Weather Forecast API by City, Highs and Lows

One row per day with high, low, wind and total precipitation. Forecast mode carries no humidity field; that one lives on current-conditions mode.

Weather Scraper: current conditions and a 16-day forecast, by city name or coordinates

Give it a list of cities and get the weather back as rows. Temperature, what it feels like, humidity, precipitation, wind and a plain-English description instead of a raw numeric code. Ask for a forecast instead and you get one row per day, up to 16 days out, or give it a start and end date and get every day in between, as far back as 1940. It runs on Open-Meteo, which needs no API key, so it needs nothing from you either.

A city name resolves to whichever place Open-Meteo ranks first. That is almost always the one you meant, and for the Springfields and Cambridges of the world it is a coin toss, so send coordinates when the answer has to be exact.

InputPlace names, or one latitude and longitude pair, and an optional date window
OutputOne row per place, or one row per day
Ceiling10,000 rows per run; days from 1940-01-01 to 15 days after today
Account neededNone, and no weather API key
Price$0.20 per 1,000 rows, flat on every plan

🔍 What Weather Scraper does

Three modes, and they return different things.

modeWhat comes back
currentOne row per place: the conditions right now.
forecastOne row per place per day, up to forecastDays, or every day from startDate to endDate. Daily high and low, rain total, top wind.
geocodeOne row per place, with coordinates, country, region, timezone and population. No weather call at all.

Places are looked up by name and resolved to Open-Meteo's top match. If you already have coordinates, leave places empty and fill in latitude and longitude instead. That path takes one point per run.

Set startDate and endDate on a forecast run to pick the days yourself, from 1940-01-01 to 15 days after today. Days before today come from Open-Meteo's historical record, the rest from the forecast.

Units are Open-Meteo's own: Celsius, kilometres per hour, millimetres. There is no setting to change them.

📥 What you give it

{
  "mode": "forecast",
  "places": ["Paris", "Madrid"],
  "forecastDays": 5,
  "maxItems": 100
}
FieldDefaultWhat it is
modecurrentcurrent, forecast or geocode.
placesnonePlace names, each resolved to its top match. The Console box starts at Berlin, London and Tokyo; an API call has to send its own.
latitudenoneAn exact latitude, used only when places is empty. Must be paired with longitude.
longitudenoneAn exact longitude, same rules.
forecastDays71 to 16. Ignored outside forecast mode, and when a date window is set.
startDatenoneForecast mode only. The first day of a date window, YYYY-MM-DD, no earlier than 1940-01-01. Set endDate with it.
endDatenoneForecast mode only. The last day of the window, at most 15 days after today. Use the same date as startDate for a single day.
maxItems1001 to 10,000 total rows across every place.
notionConnectornoneOptional. Writes one Notion page per row when the run finishes. Authorise the connector once under Settings, API & Integrations, MCP connectors.
notionParentIdnoneOptional. The Notion data source to write into. Leave it empty and the pages land privately in your workspace.
proxyConfigurationoffOptional network settings. A normal run does not need them.

In forecast mode a row is one day, so maxItems has to cover places times days. Five cities at 7 days is 35 rows; leave maxItems at 10 and the last cities get cut off part way down your list. A date window counts the same way, and a window longer than maxItems is cut at its far end.

{
  "mode": "forecast",
  "places": ["Paris"],
  "startDate": "2025-07-01",
  "endDate": "2025-07-31"
}

If you go the coordinates route, type real numbers into both boxes. Sending two empty strings with no places is not the same as leaving them out, and it reads as 0, 0, which is a spot in the Atlantic that will happily report its weather.

📤 What you get back

A real current row from a recent run:

{
  "ok": true,
  "place": "Berlin",
  "latitude": 52.52437,
  "longitude": 13.41053,
  "time": "2026-09-14T07:45",
  "temperature": 14.9,
  "apparentTemperature": 14,
  "humidity": 88,
  "precipitation": 0,
  "windSpeed": 12.3,
  "weatherCode": 3,
  "weather": "Overcast",
  "timezone": "Europe/Berlin"
}
ModeFields
currentplace, latitude, longitude, time, temperature, apparentTemperature, humidity, precipitation, windSpeed, weatherCode, weather, timezone
forecastplace, latitude, longitude, date, tempMax, tempMin, precipitationSum, windSpeedMax, weatherCode, weather
geocodeplace, name, latitude, longitude, country, admin1, timezone, population

place is what you typed. In geocode mode, name is what Open-Meteo matched it to, and comparing the two is the quickest way to catch a wrong city.

weatherCode is the WMO number and weather is the short text for it, like Overcast or Slight rain. A code with no text mapping reads as Unknown rather than going blank.

🧾 Reading the output

Two kinds of row land in your dataset.

RowHow to spot itCharged
A resultok: true and a place or coordinatesyes
A diagnosticok: false and an errorCodeno
CodeWhat it means
BAD_INPUTNo places and no coordinates, only one half of a coordinate pair, or a mode that is not one of the three. Also a date window with one date missing, a date that is not YYYY-MM-DD, a window that runs backwards or falls outside 1940-01-01 to 15 days ahead, or a window outside forecast mode. Nothing is fetched.
NO_RESULTSNone of your place names resolved. The row lists the ones that failed.

When some places resolve and others do not, the run keeps going. The ones that worked come back as rows and are charged; the ones that did not are named in the run log, not in the dataset. Compare your row count against the number of places you sent.

Coordinates outside the legal range can come back as a row with the weather fields empty rather than as an error, so keep latitude within 90 and longitude within 180.

A forecast day that comes back completely empty, often the 16th, is left out and not charged, so a 16-day forecast can return 15 rows for a place. In a date window, each row is also checked against the window by its own date.

▶️ How to run it

1. Open Weather Scraper and click Try for free. 2. Pick a Mode. Current weather is the default. 3. Type your cities into Places, or leave it empty and fill in Latitude and Longitude. 4. Set Forecast days if you chose the forecast, then click Start. 5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost?

$0.20 per 1,000 rows. Flat on every Apify plan, no volume tiers.

You pay per row delivered. In forecast mode a row is one day, so a 7-day forecast for 10 cities is 70 rows, and the whole of July for 3 cities is 93. In current and geocode mode a row is one place. Diagnostic rows and empty forecast days are not charged.

💡 What people use it for

  • A morning run over a list of depots or sites, with the rows going straight into a sheet.
  • Checking the 16-day outlook for a set of event locations before committing to a date.
  • Resolving a column of city names to coordinates and timezones in geocode mode, then using those

coordinates everywhere else.

  • Building a rain history by scheduling current hourly and keeping every row.

🚧 What it does not do

  • No hourly data. Current conditions, or daily forecast rows. Nothing in between.
  • Past days are estimates, not station readings. Open-Meteo's historical record rebuilds each day

from observations and weather models on a grid, so a row describes the area around your coordinates. Nothing before 1940-01-01.

  • No unit choice. Celsius, kilometres per hour and millimetres, always.
  • One coordinate pair per run. A list of exact points means a run each, or place names instead.
  • Top match only when resolving a name, and no list of the alternatives it rejected.
  • A forecast is a forecast. Day 14 is a model output, not a promise.
  • No alerts, warnings, air quality or marine products, even though Open-Meteo publishes some of

those separately.

🧭 Which location scraper do you need?

If you wantUse
Weather now, or a 16-day forecastThis one
Full details for a place: address, hours, phone, ratingGoogle Maps Scraper
Reviews for a placeGoogle Maps Reviews Scraper
Hotel prices and availabilityBooking.com Hotels Scraper
Short-let listings and nightly pricesAirbnb Listings Scraper

❓ Questions people ask

Do I need a weather API key? No. Nothing to apply for and no quota to watch.

How far ahead can it forecast? Sixteen days, set with forecastDays.

Can I get past weather? Yes: forecast mode with startDate and endDate, back to 1940-01-01, one row per day per place.

I asked for Springfield and got the wrong one. Add the country, like Springfield, US, or send the coordinates. The name lookup takes the top match and does not ask.

Can I get hourly readings? Not from this one. Run current on a schedule instead and keep the rows.

Can I schedule it? Yes, like any Apify actor. A saved list of places makes a daily run trivial.

Where does the data come from? Open-Meteo, for both the weather and the place lookup. Read their terms for attribution and fair use before building on it at volume.

🆘 If something breaks

Open the Issues tab on the actor page. Send the mode, the places or coordinates you used, and the run ID. The errorCode on the diagnostic row usually names the problem on its own.