Weather Scraper - Current Conditions and 16 Day Forecast
Pricing
from $0.19 / 1,000 weather results
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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.
| Input | Place names, or one latitude and longitude pair, and an optional date window |
| Output | One 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 |
| Ceiling | 10,000 rows per run; days from 1 January 1940 to 15 days after today |
| Speed | Most runs finish in 2 to 15 seconds |
| Account needed | None, 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.
mode | What comes back |
|---|---|
current | One row per place: the conditions right now. |
forecast | One row per place per day, up to forecastDays, or every day from startDate to endDate. Daily high and low, rain total, top wind. |
geocode | One 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 get | Field |
|---|---|
| The name you typed, the coordinates it resolved to, and the local timezone | place, latitude, longitude, timezone |
| Conditions now: temperature, feels-like temperature, humidity, rain and wind, with the local time of the reading | temperature, apparentTemperature, humidity, precipitation, windSpeed, time |
| Each day of a forecast or date window: the high, the low, the rain total and the strongest wind | date, tempMax, tempMin, precipitationSum, windSpeedMax |
| The weather as a WMO code and in words | weatherCode, weather |
| Geocode mode only: the place it matched, with its country, region and population | name, country, admin1, population |
▶️ How to scrape weather data
- Open Weather Scraper and click Try for free.
- Pick a Mode. Current weather is the default.
- Type your cities into Places, one per line. Or leave it empty and fill in both Latitude (direct coordinates) and Longitude (direct coordinates).
- 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.
- 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}
| Field | Default | What it is |
|---|---|---|
mode | current | current, forecast or geocode. |
places | none | Place 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. |
latitude | none | An exact latitude, used only when places is empty. Must come with longitude. |
longitude | none | An exact longitude, same rules. |
forecastDays | 7 | 1 to 16. Ignored outside forecast mode, and when a date window is set. |
startDate | none | Forecast mode only. The first day of a window, YYYY-MM-DD, no earlier than 1940-01-01. Set endDate with it. |
endDate | none | Forecast mode only. The last day of the window, at most 15 days after today. The same date as startDate gives a single day. |
maxItems | 100 | 1 to 10,000 rows in total, across every place. |
notionConnector | none | Optional. Writes one Notion page per row when the run finishes. Authorise the connector once under Settings, API & Integrations, MCP connectors. |
notionParentId | none | Optional. The Notion data source to write into. Leave it empty and the pages land privately in your workspace. |
proxyConfiguration | off | Optional 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"}
| Field | How to read it |
|---|---|
time | Local time at the place, in 15-minute steps. timezone names the zone. |
temperature, tempMax, tempMin | Degrees Celsius. apparentTemperature is the feels-like figure. |
windSpeed, windSpeedMax | Kilometres per hour. |
precipitation, precipitationSum | Millimetres. |
humidity | Relative humidity, in percent. |
weatherCode, weather | The WMO code and its short text, like Overcast or Slight rain. A code with no text reads Unknown rather than going blank. |
place, name | place 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. |
| Mode | Fields on the row |
|---|---|
current | place, latitude, longitude, time, temperature, apparentTemperature, humidity, precipitation, windSpeed, weatherCode, weather, timezone |
forecast | place, latitude, longitude, date, tempMax, tempMin, precipitationSum, windSpeedMax, weatherCode, weather |
geocode | place, name, latitude, longitude, country, admin1, timezone, population |
🧾 Reading the output
Two kinds of row land in your dataset.
| Row | How to spot it | Charged |
|---|---|---|
| A result | ok: true and a place or coordinates | yes |
| A diagnostic | ok: false and an errorCode | no |
| Code | What it means |
|---|---|
BAD_INPUT | No 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_RESULTS | None of your place names resolved. The row lists the ones that failed. |
TIME_LIMIT | The 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
currentevery 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 want | Use |
|---|---|
| Weather now, a forecast up to 16 days out, or past days back to 1940 | This one |
| Kalshi's daily high and low temperature markets, each with a forecast for the station it settles on | Kalshi Markets Scraper |
| A place's address, rating and GPS coordinates | Google Maps Scraper |
| Upcoming events in a city, with dates and venues | Eventbrite Events Scraper |
| Hotel prices for your dates | Booking.com Hotels Scraper |
| Short-let listings and nightly prices | Airbnb 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.