Skip to main content

Command Palette

Search for a command to run...

Historical Weather Data in Google Sheets

A CSV export, two clicks in Sheets

Updated
3 min readView as Markdown
Historical Weather Data in Google Sheets

Weather is one of the cheapest explanatory variables you can add to a dataset. Footfall, delivery times, energy consumption, crop yields, ice cream sales. A lot of the variance you're staring at is just temperature and rain.

The usual assumption is that getting that data means an API integration. It doesn't. If you only need a fixed range of past weather for a handful of locations, a CSV export into Google Sheets gets you there in about three minutes.

Step 1: Generate the CSV

In your Meteosource account, open Historical data in csv in the Client section sidebar.

The form wants:

  • a Place ID (from the place search) or raw coordinates

  • a date range

  • unit system and timezone

  • the variables you want, grouped under general, temperature, cloud, wind, precipitation and others

Hit Generate CSV and a download link appears below the form once the dataset is built. Date is always included, so you never have to remember to tick it.

Quota math: each day of data counts as one request. One location across January to August is 243 requests, not one.

What lands on your machine is one row per hour, one column per variable:

date,weather,temperature,wind.speed,cloud_cover.total,precipitation.total,irradiance
2026-01-01T00:00:00+01:00,partly_sunny,-0.2,1.1,54,0,0.1
2026-01-01T01:00:00+01:00,overcast,-1.5,1.7,100,0,0

The dotted column names (wind.speed, cloud_cover.total) are identical to the field paths in the Meteosource API response, so anything you build on this export still lines up if you move to live API calls later.

Step 2: Import it, and untick the box

File → Import → Upload, drop the file in, leave the separator on Detect automatically.

Then untick "Convert text to numbers, dates, and formulas."

This is the one thing to get right, and it's on by default. Left on, Sheets parses every value according to your spreadsheet's locale. If that locale uses a decimal comma (Czech, German, French, Spanish, most of continental Europe), then 1.9 isn't a number to it. Sheets reads it as 1 September. Meanwhile -0.2 stays text, because no date fits.

Unticked, every value lands exactly as it is in the file.

Working in Excel instead? The same file opens directly there — see Weather Data in MS Excel.

Why pull this from Meteosource

Plenty of places will hand you a weather archive. What matters for analysis is how the numbers were produced.

Built from the major global models, not one. Meteosource blends the major global models with ML trained on its own archive of past forecasts and observations, weighting each by how it has performed in that location and situation. The blend runs four times a day and is refined through Meteosource's own regional model.

Cities get extra treatment. Where station measurements exist, a further AI layer corrects for local patterns that models systematically miss.

Depth and granularity. Twenty years back, hourly, for any location worldwide, not just near airports and official stations. Longer bulk history is available on custom plans.

When to graduate to the API

The CSV route is right for one-off analyses and fixed date ranges. Once you need weather refreshing on a schedule, feeding a dashboard, or covering dozens of locations, the time machine endpoint does the same job programmatically, and because the column names already match, your formulas and joins carry straight over.