Weather Scraper - Current Conditions and 16 Day Forecast avatar

Weather Scraper - Current Conditions and 16 Day Forecast

Pricing

from $0.19 / 1,000 weather results

Go to Apify Store
Weather Scraper - Current Conditions and 16 Day Forecast

Weather Scraper - Current Conditions and 16 Day Forecast

Weather for any list of cities or one coordinate pair: temperature, feels-like, humidity, rain, wind and the weather in words, right now or one row per day up to 16 days ahead. Set a date window for past days back to 1940. $0.20 per 1,000 rows.

Pricing

from $0.19 / 1,000 weather results

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

4 days ago

Last modified

Share

Type in a list of cities and get the weather back as rows: the temperature and what it feels like, humidity, rain, wind and a plain-English description, either right now or one row per day for up to 16 days ahead. Give it a start and end date instead and it returns every day in between, as far back as 1940.

A city name goes to whichever place Open-Meteo ranks first. That is almost always the one you meant, but for the Springfields and Cambridges of the world it is a coin toss, so add the state or country, or 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 for current conditions or a geocode, or one row per place per day for a forecast: high, low, rain total, top wind, the weather in words
Ceiling10,000 rows per run; days from 1 January 1940 to 15 days after today
SpeedMost runs finish in 2 to 15 seconds
Account neededNone, and no weather API key
Price$0.20 per 1,000 rows on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 25,000

🔍 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 at all.

If you already have coordinates, leave places empty and fill in latitude and longitude instead.

Set startDate and endDate on a forecast run to choose the days yourself. Days before today come from Open-Meteo's historical record and the rest from the forecast, and one window can cross from one into the other.

📋 What data you get from each place

What you getField
The name you typed, the coordinates it resolved to, and the local timezoneplace, latitude, longitude, timezone
Conditions now: temperature, feels-like temperature, humidity, rain and wind, with the local time of the readingtemperature, apparentTemperature, humidity, precipitation, windSpeed, time
Each day of a forecast or date window: the high, the low, the rain total and the strongest winddate, tempMax, tempMin, precipitationSum, windSpeedMax
The weather as a WMO code and in wordsweatherCode, weather
Geocode mode only: the place it matched, with its country, region and populationname, country, admin1, population

▶️ How to scrape weather data

  1. Open Weather Scraper and click Try for free.
  2. Pick a Mode. Current weather is the default.
  3. Type your cities into Places, one per line. Or leave it empty and fill in both Latitude (direct coordinates) and Longitude (direct coordinates).
  4. For a forecast, set Forecast days, or a Start date and End date for a fixed stretch of days. Make sure Max items covers places times days.
  5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost to scrape weather data?

$0.20 per 1,000 rows on the Free plan. Paid plans pay a little less: $0.198 on Starter, $0.196 on Scale and $0.194 on Business. On the free plan, the $5 Apify gives you each month covers about 25,000 rows.

A row is one place in current and geocode mode, and one place on one day in forecast mode: a 7-day forecast for 10 cities is 70 rows, and the whole of July for 3 cities is 93.

Diagnostic rows are not charged, and neither is a forecast day that comes back with every value empty.

📥 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. Add the state or country after a comma to pin one down. 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 come 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 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. The same date as startDate gives a single day.
maxItems1001 to 10,000 rows in total, 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.

A month of past weather for one city:

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

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

📤 What you get back

Two real rows: London's current conditions from a run on 3 October 2026, and one day of Berlin's forecast from a run on 1 October.

{
"ok": true,
"place": "London",
"latitude": 51.50853,
"longitude": -0.12574,
"time": "2026-10-03T14:00",
"temperature": 19,
"apparentTemperature": 18.8,
"humidity": 63,
"precipitation": 0,
"windSpeed": 5.8,
"weatherCode": 3,
"weather": "Overcast",
"timezone": "Europe/London"
}
{
"ok": true,
"place": "Berlin",
"latitude": 52.52437,
"longitude": 13.41053,
"date": "2026-10-02",
"tempMax": 18.1,
"tempMin": 14.9,
"precipitationSum": 0.8,
"windSpeedMax": 9.7,
"weatherCode": 61,
"weather": "Slight rain"
}
FieldHow to read it
timeLocal time at the place, in 15-minute steps. timezone names the zone.
temperature, tempMax, tempMinDegrees Celsius. apparentTemperature is the feels-like figure.
windSpeed, windSpeedMaxKilometres per hour.
precipitation, precipitationSumMillimetres.
humidityRelative humidity, in percent.
weatherCode, weatherThe WMO code and its short text, like Overcast or Slight rain. A code with no text reads Unknown rather than going blank.
place, nameplace is what you typed, and null on a coordinates run. In geocode mode name is what it matched, and comparing the two is the quickest way to catch a wrong city.
ModeFields on the row
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

🧾 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.
TIME_LIMITThe run got close to its time limit and stopped on its own. The rows delivered before that are complete and charged. Give the run more time, or ask for fewer rows, to get the rest. The run still ends as succeeded, except when the time limit stopped it before any row came back: then it ends as failed, with this row saying so.

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 with the number of places you sent.

Coordinates Open-Meteo refuses, a latitude past 90 or a longitude past 180, come back as a free NO_RESULTS row that quotes Open-Meteo's reason. Nothing is charged for them.

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.

In geocode mode the default table view shows only the place name. Export as JSON, CSV or Excel to see the coordinates, country and timezone.

💡 What people use it for

  • A morning run over a list of depots, sites or shops, with the rows going straight into a sheet.
  • Checking the 16-day outlook for a set of event locations before committing to a date.
  • Turning a column of city names into coordinates and timezones, in geocode mode.
  • Pulling last summer's daily highs and rain totals for a few cities with a date window, to set against this year.
  • Building an hourly record by scheduling current every hour and keeping every row.

🚧 What it does not do

  • No hourly data. Current conditions, or one row per day. Nothing in between.
  • Past days are estimates, not station readings. Open-Meteo's historical record is rebuilt each day from observations and weather models on a grid, so a row describes the area around your coordinates. Nothing before 1 January 1940.
  • 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 passed over.
  • No alerts, warnings, air quality or marine data, even though Open-Meteo publishes some of those separately.
  • It is not an official Open-Meteo tool. Dami's Studio is independent and is not affiliated with or endorsed by Open-Meteo, or by any other company named on this page.

🧭 Which weather or location scraper do you need?

If you wantUse
Weather now, a forecast up to 16 days out, or past days back to 1940This one
Kalshi's daily high and low temperature markets, each with a forecast for the station it settles onKalshi Markets Scraper
A place's address, rating and GPS coordinatesGoogle Maps Scraper
Upcoming events in a city, with dates and venuesEventbrite Events Scraper
Hotel prices for your datesBooking.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 and how far back can it go?

Sixteen days ahead with forecastDays. With startDate and endDate it covers anything from 1 January 1940 to 15 days after today, one row per day per place.

I asked for Springfield and got the wrong one. How do I fix it?

Add the state or country after a comma, like Springfield, Illinois or Cambridge, GB. The comma matters: Springfield Illinois without it finds nothing. Or send the coordinates. The name lookup takes the top match and does not ask.

Why doesn't it match my weather app?

Apps use their own forecast sources and their own idea of where a town's centre is, so the numbers rarely agree to the decimal. latitude and longitude on the row show exactly which spot the reading is for.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/open-meteo-weather-scraper. Either way the run happens on your Apify account at the same price.

Where does the data come from, and can I build on it?

Open-Meteo, for both the weather and the place lookup. Read their terms for attribution and fair use before you build on it at volume. Apify's write-up on the legality of web scraping covers the wider question, and we are not lawyers.

🆘 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 a diagnostic row usually names the problem on its own.