# Weather Historical Tracker — Current, Forecast & 30-Day History (`gochujang/weather-historical-tracker`) Actor

Fetch current conditions, 7-day forecasts, and historical weather data for any location worldwide. Returns temperature, precipitation, humidity, wind speed, UV index, and air quality using the Open-Meteo free API. No API key required. Supports bulk location queries.

- **URL**: https://apify.com/gochujang/weather-historical-tracker.md
- **Developed by:** [Hojun Lee](https://apify.com/gochujang) (community)
- **Categories:** Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 item trackeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Weather Historical Tracker do?

**Weather Historical Tracker** fetches **current weather conditions, 7-day forecasts, and up to 30 days of historical weather data** for any city or GPS coordinate worldwide — powered by the **Open-Meteo** free API with no API key or registration required. Pass a list of city names or `lat,lon` pairs and receive structured JSON covering temperature, humidity, precipitation, wind speed, and UV index for every location in a single run.

### Why use Weather Historical Tracker?

- **No API key, no cost ceiling**: Open-Meteo is a fully free, open-source global weather API backed by NOAA, ECMWF, DWD, and MeteoFrance model data — you can run this actor as often as you need without API quotas or sign-up friction.
- **Bulk multi-city queries in one run**: Supply any number of city names or raw coordinates in a single input; the actor geocodes names automatically and fetches all locations in parallel, returning one clean record per location.
- **Three data layers in one request**: Current conditions, 7-day daily forecast, and a full 30-day historical archive are all returned in a single structured output — no need to stitch together multiple API calls or tools.
- **Flexible location input**: Accepts plain city names (`"Tokyo"`), country-qualified names (`"Paris, France"`), and raw coordinate strings (`"48.8566,2.3522"`) interchangeably in the same list.
- **Structured, analysis-ready JSON**: Each record includes consistent field names, ISO 8601 timestamps, and metric units — ready to import into spreadsheets, dashboards, or data pipelines without extra cleaning.

### How to use Weather Historical Tracker

1. Go to the [Apify Store](https://apify.com/store) and search for "Weather Historical Tracker," then click **Try for free**.
2. In the **Input** tab, edit the `locations` array with your cities or coordinates (e.g., `["Seoul", "London", "37.7749,-122.4194"]`).
3. Set `includeForecast` to `true` if you need the 7-day daily forecast alongside current conditions.
4. Set `includeHistorical` to `true` to fetch the last 30 days of archived daily weather data for each location.
5. Click **Start** and wait for the run to complete — typically under 30 seconds for 10 locations.
6. View results in the **Dataset** tab and download as JSON, CSV, or Excel.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `locations` | string\[] | `["London", "New York", "Tokyo"]` | City names or `"lat,lon"` coordinate strings. Any number of locations supported. |
| `includeForecast` | boolean | `true` | Include 7-day daily forecast (max/min temperature, precipitation, wind speed). |
| `includeHistorical` | boolean | `false` | Include last 30 days of historical daily data from the Open-Meteo archive API. |

### Output

```json
[
  {
    "location": "Seoul",
    "country": "South Korea",
    "latitude": 37.5665,
    "longitude": 126.978,
    "timezone": "Asia/Seoul",
    "current": {
      "temperature_c": 28.4,
      "humidity_pct": 68,
      "precipitation_mm": 0.0,
      "wind_speed_kmh": 9.2,
      "uv_index": 6
    },
    "forecast_7d": [
      {
        "date": "2026-09-02",
        "temp_max_c": 31.0,
        "temp_min_c": 22.5,
        "precipitation_sum_mm": 0.0,
        "wind_speed_max_kmh": 14.0
      },
      {
        "date": "2026-09-03",
        "temp_max_c": 29.8,
        "temp_min_c": 21.1,
        "precipitation_sum_mm": 3.4,
        "wind_speed_max_kmh": 18.5
      }
    ],
    "historical_30d": [],
    "fetched_at": "2026-09-02T10:00:00Z"
  },
  {
    "location": "San Francisco",
    "country": "United States",
    "latitude": 37.7749,
    "longitude": -122.4194,
    "timezone": "America/Los_Angeles",
    "current": {
      "temperature_c": 18.1,
      "humidity_pct": 79,
      "precipitation_mm": 0.0,
      "wind_speed_kmh": 22.0,
      "uv_index": 4
    },
    "forecast_7d": [
      {
        "date": "2026-09-02",
        "temp_max_c": 20.3,
        "temp_min_c": 13.6,
        "precipitation_sum_mm": 0.0,
        "wind_speed_max_kmh": 28.0
      }
    ],
    "historical_30d": [
      {
        "date": "2026-08-02",
        "temp_max_c": 22.1,
        "temp_min_c": 14.0,
        "precipitation_sum_mm": 0.0,
        "wind_speed_max_kmh": 25.3
      }
    ],
    "fetched_at": "2026-09-02T10:00:00Z"
  }
]
```

### Data fields

| Field | Description |
|---|---|
| `location` | Resolved location name (city) |
| `country` | Country name for the resolved location |
| `latitude` | Decimal latitude of the location |
| `longitude` | Decimal longitude of the location |
| `timezone` | IANA timezone string (e.g., `Europe/London`) |
| `current.temperature_c` | Current air temperature in Celsius at 2 m height |
| `current.humidity_pct` | Current relative humidity as a percentage |
| `current.precipitation_mm` | Current precipitation in millimeters |
| `current.wind_speed_kmh` | Current wind speed in km/h at 10 m height |
| `current.uv_index` | Current UV index (0–11+) |
| `forecast_7d[].date` | Calendar date of the forecast day (YYYY-MM-DD) |
| `forecast_7d[].temp_max_c` | Forecast daily maximum temperature in Celsius |
| `forecast_7d[].temp_min_c` | Forecast daily minimum temperature in Celsius |
| `forecast_7d[].precipitation_sum_mm` | Total forecasted precipitation for the day in mm |
| `forecast_7d[].wind_speed_max_kmh` | Maximum forecasted wind speed for the day in km/h |
| `historical_30d[].date` | Calendar date of the historical day (YYYY-MM-DD) |
| `historical_30d[].temp_max_c` | Observed daily maximum temperature in Celsius |
| `historical_30d[].temp_min_c` | Observed daily minimum temperature in Celsius |
| `historical_30d[].precipitation_sum_mm` | Observed total daily precipitation in mm |
| `historical_30d[].wind_speed_max_kmh` | Observed maximum daily wind speed in km/h |
| `fetched_at` | ISO 8601 UTC timestamp of the data fetch |

### Cost estimation

The actor charges **$0.002 per location** (Pay-Per-Event).

| Scenario | Locations | Estimated cost |
|---|---|---|
| Small — 5 cities, current + forecast | 5 | $0.01 |
| Medium — 50 cities, current + forecast + historical | 50 | $0.10 |
| Large — 500 cities bulk run | 500 | $1.00 |

### FAQ

**Q: Do I need an API key for Open-Meteo?**
A: No. Open-Meteo is completely free for non-commercial use with no registration required. The actor works out of the box with no credentials to configure.

**Q: How accurate is the historical data?**
A: Historical data comes from Open-Meteo's archive API, which blends reanalysis data from NOAA ERA5 and similar sources. It is generally accurate to within ±1–2°C and matches observed station data closely, though it represents gridded model output rather than a specific weather station measurement.

**Q: Can I query more than 30 days of history?**
A: The current actor fetches the last 30 days. For longer historical ranges, submit a feature request via the Issues tab on the actor's Apify Store page and a custom solution can be arranged.

**Disclaimer**: Weather data is sourced from Open-Meteo's public API and is provided for informational purposes only. Forecast accuracy decreases beyond 3–5 days. Historical data represents model reanalysis, not direct station measurements. The actor is not affiliated with Open-Meteo. Do not use weather data from this actor as the sole input for safety-critical decisions.

Keywords: historical weather data scraper, weather API no key required, Open-Meteo actor, multi-city weather data, weather forecast API, bulk weather data collection, historical temperature data, weather data automation, city weather JSON, weather dataset download

***

### Related actors

- [Weather Alerts Tracker](https://apify.com/gochujang/weather-alerts-tracker) — NWS severe weather alerts to pair with this actor's historical and forecast data
- [Energy Prices Tracker](https://apify.com/gochujang/energy-prices-tracker) — Energy demand and prices driven by temperature extremes tracked here
- [EIA Energy Data](https://apify.com/gochujang/eia-energy-data) — Natural gas storage changes correlated with heating/cooling degree days

### Feedback

If this actor powers your weather data workflows, a review helps others find it: [Leave a review on Apify Store](https://apify.com/gochujang/weather-historical-tracker#reviews)

# Actor input Schema

## `locations` (type: `array`):

List of city names or lat/lon pairs to fetch weather for (e.g. \['London', 'New York', 'Tokyo'])

## `includeHistorical` (type: `boolean`):

Fetch last 30 days of historical weather data in addition to current/forecast

## `includeForecast` (type: `boolean`):

Include 7-day weather forecast

## Actor input object example

```json
{
  "locations": [
    "London",
    "New York",
    "Tokyo"
  ],
  "includeHistorical": false,
  "includeForecast": true
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("gochujang/weather-historical-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("gochujang/weather-historical-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call gochujang/weather-historical-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gochujang/weather-historical-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/sFkHkqORrT2J125Ds/builds/crdE5OhaIP7hXFXzF/openapi.json
