---
type: "firecrawl-provider"
description: "Environment and Climate Change Canada (ECCC) weather and climate data from the Meteorological Service of Canada's open GeoMet OGC API (api.weather.gc.ca), the data behind weather.gc.ca and climate.weather.gc.ca: current conditions, public forecasts, hourly forecasts and warnings for ~840 city forecast locations, active weather alerts, the Air Quality Health Index, marine forecasts, and historical climate (station search, daily observations, monthly summaries, 1981-2010 normals). English or French. Keyless and anonymous. Data Source: Environment and Climate Change Canada, under the ECCC Data Servers End-use Licence (https://eccc-msc.github.io/open-data/licence/readme_en/)."
use_when: "Environment and Climate Change Canada (ECCC) weather and climate data from the Meteorological Service of Canada's open GeoMet OGC API (api.weather.gc.ca), the data behind weather.gc.ca and climate.weather.gc.ca: current conditions, public forecasts, hourly forecasts and warnings for ~840 city forecast locations, active weather alerts, the Air Quality Health Index, marine forecasts, and historical climate (station search, daily observations, monthly summaries, 1981-2010 normals). English or French. Keyless and anonymous. Data Source: Environment and Climate Change Canada, under the ECCC Data Servers End-use Licence (https://eccc-msc.github.io/open-data/licence/readme_en/)."
categories: "Research"
capabilities: 9
credits_per_call: 5
---
# Environment and Climate Change Canada weather and climate (api.weather.gc.ca) on Firecrawl Alexandria

Environment and Climate Change Canada (ECCC) weather and climate data from the Meteorological Service of Canada's open GeoMet OGC API (api.weather.gc.ca), the data behind weather.gc.ca and climate.weather.gc.ca: current conditions, public forecasts, hourly forecasts and warnings for ~840 city forecast locations, active weather alerts, the Air Quality Health Index, marine forecasts, and historical climate (station search, daily observations, monthly summaries, 1981-2010 normals). English or French. Keyless and anonymous. Data Source: Environment and Climate Change Canada, under the ECCC Data Servers End-use Licence (https://eccc-msc.github.io/open-data/licence/readme_en/).

- Categories: Research
- Category index: [Research category](https://firecrawl.dev/alexandria/agents/categories/research)
- Provider key: `api-weather-gc-ca`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/api-weather-gc-ca)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/openapi.json)

## Capabilities

- [Air quality](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/air_quality): Air Quality Health Index (AQHI, weather.gc.ca/airquality) for one ECCC AQHI location: the latest hourly observation with its risk category and special notes, and the newest hourly forecast publication. Choose by location_id or by lat/lon (nearest AQHI location). An unknown location_id is not_found.
- [City weather](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/city_weather): Current conditions, the 6-to-7-day public forecast, the 24-hour hourly forecast, active warnings, regional normals and sunrise/sunset for one ECCC city forecast location (the data behind weather.gc.ca/en/location and the city pages), in English or French. Choose the location by city_id, by lat/lon (nearest of the ~840 ECCC forecast locations) or by name query (best match: exact name, prefix, contains, then region). An unknown city_id is not_found.
- [Climate daily](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/climate_daily): Daily climate observations of one ECCC climate station (climate.weather.gc.ca daily data): mean, min and max temperature, precipitation, rain, snow, snow on ground, max gust, degree days and humidity, each with its ECCC quality flag. start/end (YYYY-MM-DD) select up to 366 days; one bound alone gives 31 days from it; no bounds gives the most recent 31 days on record. An unknown climate_id is not_found; days without data in the window are an empty list.
- [Climate monthly](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/climate_monthly): Monthly climate summaries of one ECCC climate station: mean and extreme temperatures, total precipitation and snowfall, days with precipitation, sunshine, degree days and the station's monthly normals where ECCC lists them. start/end (YYYY-MM) bound the months; without them the whole record. An unknown climate_id is not_found.
- [Climate normals](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/climate_normals): Canadian Climate Normals 1981-2010 of one ECCC climate station, the normals period GeoMet publishes: every element (temperatures, degree days, days above or below thresholds, rain, snow, precipitation, snow depth, sunshine, frost dates...) with its 12 monthly values, annual value and quality code. The 1991-2020 normals are not on the open API. A station without normals answers an empty element list; an unknown climate_id is not_found.
- [Climate stations](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/climate_stations): Search ECCC climate stations (the station list behind climate.weather.gc.ca historical data and normals): by climate_id, by part of the station name (query), by province, near lat/lon within radius_km (sorted by distance), and only stations with 1981-2010 normals (has_normals) or hourly data (has_hourly). Returns Climate ID, station id, coordinates, elevation and the first/last dates of daily, monthly and hourly data. An unknown climate_id is not_found; a search with no match is an empty list.
- [Find cities](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/find_cities): Find ECCC city forecast locations (the ids city_weather and weather_alerts take) by name or near a point. query searches names and forecast regions (English or French) and ranks exact, prefix and contains name matches first; lat/lon lists locations within radius_km sorted by distance. province narrows either. A name query with no match is not_found; a point with no location in range returns an empty list.
- [Marine forecast](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/marine_forecast): ECCC marine forecast and warnings for one marine area (weather.gc.ca/marine): regular forecast per sub-area (winds, weather and visibility, air temperature, freezing spray), the extended forecast, the wave forecast where issued, and marine warnings in effect. Choose by area_id or by lat/lon on the water (the containing area). An unknown area_id is not_found.
- [Weather alerts](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/weather_alerts): Active ECCC public weather alerts (warnings, watches, advisories and statements, the data behind weather.gc.ca/warnings) for a city page (city_id), a point (lat/lon: alerts whose area contains it), a province or territory, or all of Canada when no selector is given. Alert text is returned exactly as issued, as the ECCC licence requires. Ended alerts are dropped unless include_ended. No alert in effect is an empty list; an unknown city_id is not_found.

## 1. Choose this provider when

Environment and Climate Change Canada (ECCC) weather and climate data from the Meteorological Service of Canada's open GeoMet OGC API (api.weather.gc.ca), the data behind weather.gc.ca and climate.weather.gc.ca: current conditions, public forecasts, hourly forecasts and warnings for ~840 city forecast locations, active weather alerts, the Air Quality Health Index, marine forecasts, and historical climate (station search, daily observations, monthly summaries, 1981-2010 normals). English or French. Keyless and anonymous. Data Source: Environment and Climate Change Canada, under the ECCC Data Servers End-use Licence (https://eccc-msc.github.io/open-data/licence/readme_en/).

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "api-weather-gc-ca",
  "capability": "weather/air_quality",
  "options": {
    "location_id": "FEUZB"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `lang` (string): Language of names and texts: en (English) or fr (French). Numbers are the same in both. Example: `en`
- `lat` (number): Latitude in decimal degrees (Canada spans about 41 to 84). Give with lon. Example: `10`
- `location_id` (string): AQHI location code, e.g. FEUZB Toronto, FTPFT Montreal, EAZBA Vancouver; or use lat/lon. Pattern: ^[A-Za-z0-9]+$. Example: `<location_id>`
- `lon` (number): Longitude in decimal degrees, west negative (Canada spans about -142 to -52). Give with lat. Example: `10`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "api-weather-gc-ca",
    capability: "weather/air_quality",
    options: {
      location_id: "FEUZB",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "api-weather-gc-ca",
  "capability": "weather/air_quality",
  "options": {
    "location_id": "FEUZB"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "api-weather-gc-ca",
    "capability": "weather/air_quality",
    "options": {
      "location_id": "FEUZB"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'api-weather-gc-ca/weather/air_quality' \
  --options '{"location_id":"FEUZB"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "api-weather-gc-ca",
  "capability": "weather/air_quality",
  "options": {
    "location_id": "FEUZB"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "api-weather-gc-ca",
  "capability": "weather/air_quality",
  "options": {
    "location_id": "FEUZB"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "attribution": "Data Source: Environment and Climate Change Canada",
  "forecast": {
    "hourly": [
      {
        "aqhi": 3,
        "forecast_at": "2026-10-25T21:00:00Z",
        "forecast_at_text": "5:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-25T22:00:00Z",
        "forecast_at_text": "6:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-25T23:00:00Z",
        "forecast_at_text": "7:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T00:00:00Z",
        "forecast_at_text": "8:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T01:00:00Z",
        "forecast_at_text": "9:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T02:00:00Z",
        "forecast_at_text": "10:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T03:00:00Z",
        "forecast_at_text": "11:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T04:00:00Z",
        "forecast_at_text": "12:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T05:00:00Z",
        "forecast_at_text": "1:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T06:00:00Z",
        "forecast_at_text": "2:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T07:00:00Z",
        "forecast_at_text": "3:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T08:00:00Z",
        "forecast_at_text": "4:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T09:00:00Z",
        "forecast_at_text": "5:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T10:00:00Z",
        "forecast_at_text": "6:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T11:00:00Z",
        "forecast_at_text": "7:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T12:00:00Z",
        "forecast_at_text": "8:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T13:00:00Z",
        "forecast_at_text": "9:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T14:00:00Z",
        "forecast_at_text": "10:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T15:00:00Z",
        "forecast_at_text": "11:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T16:00:00Z",
        "forecast_at_text": "12:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T17:00:00Z",
        "forecast_at_text": "1:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T18:00:00Z",
        "forecast_at_text": "2:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T19:00:00Z",
        "forecast_at_text": "3:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T20:00:00Z",
        "forecast_at_text": "4:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T21:00:00Z",
        "forecast_at_text": "5:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T22:00:00Z",
        "forecast_at_text": "6:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-26T23:00:00Z",
        "forecast_at_text": "7:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T00:00:00Z",
        "forecast_at_text": "8:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T01:00:00Z",
        "forecast_at_text": "9:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T02:00:00Z",
        "forecast_at_text": "10:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T03:00:00Z",
        "forecast_at_text": "11:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T04:00:00Z",
        "forecast_at_text": "12:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T05:00:00Z",
        "forecast_at_text": "1:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T06:00:00Z",
        "forecast_at_text": "2:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T07:00:00Z",
        "forecast_at_text": "3:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T08:00:00Z",
        "forecast_at_text": "4:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T09:00:00Z",
        "forecast_at_text": "5:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      }
    ],
    "periods": [
      {
        "aqhi": 3,
        "aqhi_in_smoke": null,
        "name": "Tonight",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "aqhi_in_smoke": null,
        "name": "Tomorrow",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "aqhi_in_smoke": null,
        "name": "Tomorrow Night",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "aqhi_in_smoke": null,
        "name": "Day 3",
        "risk": "low"
      }
    ],
    "published_at": "2026-10-25T21:00:00Z"
  },
  "forecast_url": "https://api.weather.gc.ca/collections/aqhi-forecasts-realtime/items?f=json&location_id=FEUZB&sortby=-publication_datetime&limit=100&skipGeometry=true",
  "lang": "en",
  "licence_url": "https://eccc-msc.github.io/open-data/licence/readme_en/",
  "location": {
    "distance_km": null,
    "latitude": 43.7416666666667,
    "location_id": "FEUZB",
    "longitude": -79.3733333333333,
    "name": "Toronto",
    "zone": "ont",
    "zone_name": "Ontario"
  },
  "observation": {
    "aqhi": 2.97,
    "aqhi_rounded": 3,
    "observed_at": "2026-10-25T22:00:00Z",
    "observed_at_text": "6:00 PM EDT Sunday 25 October 2026",
    "risk": "low",
    "special_notes": null
  },
  "observed_at_ms": 1792969238543,
  "source_url": "https://api.weather.gc.ca/collections/aqhi-observations-realtime/items?f=json&location_id=FEUZB&latest=true&skipGeometry=true"
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Air quality

- Capability: `weather/air_quality`
- Description: Air Quality Health Index (AQHI, weather.gc.ca/airquality) for one ECCC AQHI location: the latest hourly observation with its risk category and special notes, and the newest hourly forecast publication. Choose by location_id or by lat/lon (nearest AQHI location). An unknown location_id is not_found.
- Instructions: Is the air quality safe today in a Canadian city, wildfire smoke, AQHI forecast.
- Cost: 5 credits per call
- Capability file: [Air quality](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/air_quality)

Accepted options:
- `lang` (string): Language of names and texts: en (English) or fr (French). Numbers are the same in both. Example: `en`
- `lat` (number): Latitude in decimal degrees (Canada spans about 41 to 84). Give with lon. Example: `10`
- `location_id` (string): AQHI location code, e.g. FEUZB Toronto, FTPFT Montreal, EAZBA Vancouver; or use lat/lon. Pattern: ^[A-Za-z0-9]+$. Example: `<location_id>`
- `lon` (number): Longitude in decimal degrees, west negative (Canada spans about -142 to -52). Give with lat. Example: `10`

Response schema example:
```json
{
  "attribution": "Data Source: Environment and Climate Change Canada",
  "forecast": {
    "hourly": [
      {
        "aqhi": 3,
        "forecast_at": "2026-10-25T21:00:00Z",
        "forecast_at_text": "5:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-25T22:00:00Z",
        "forecast_at_text": "6:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-25T23:00:00Z",
        "forecast_at_text": "7:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T00:00:00Z",
        "forecast_at_text": "8:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T01:00:00Z",
        "forecast_at_text": "9:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T02:00:00Z",
        "forecast_at_text": "10:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T03:00:00Z",
        "forecast_at_text": "11:00 PM EDT Sunday 25 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T04:00:00Z",
        "forecast_at_text": "12:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T05:00:00Z",
        "forecast_at_text": "1:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T06:00:00Z",
        "forecast_at_text": "2:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T07:00:00Z",
        "forecast_at_text": "3:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T08:00:00Z",
        "forecast_at_text": "4:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T09:00:00Z",
        "forecast_at_text": "5:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T10:00:00Z",
        "forecast_at_text": "6:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T11:00:00Z",
        "forecast_at_text": "7:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T12:00:00Z",
        "forecast_at_text": "8:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T13:00:00Z",
        "forecast_at_text": "9:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T14:00:00Z",
        "forecast_at_text": "10:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T15:00:00Z",
        "forecast_at_text": "11:00 AM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T16:00:00Z",
        "forecast_at_text": "12:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T17:00:00Z",
        "forecast_at_text": "1:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T18:00:00Z",
        "forecast_at_text": "2:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T19:00:00Z",
        "forecast_at_text": "3:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T20:00:00Z",
        "forecast_at_text": "4:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T21:00:00Z",
        "forecast_at_text": "5:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "forecast_at": "2026-10-26T22:00:00Z",
        "forecast_at_text": "6:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-26T23:00:00Z",
        "forecast_at_text": "7:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T00:00:00Z",
        "forecast_at_text": "8:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T01:00:00Z",
        "forecast_at_text": "9:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T02:00:00Z",
        "forecast_at_text": "10:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T03:00:00Z",
        "forecast_at_text": "11:00 PM EDT Monday 26 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T04:00:00Z",
        "forecast_at_text": "12:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T05:00:00Z",
        "forecast_at_text": "1:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T06:00:00Z",
        "forecast_at_text": "2:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T07:00:00Z",
        "forecast_at_text": "3:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T08:00:00Z",
        "forecast_at_text": "4:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "forecast_at": "2026-10-27T09:00:00Z",
        "forecast_at_text": "5:00 AM EDT Tuesday 27 October 2026",
        "risk": "low"
      }
    ],
    "periods": [
      {
        "aqhi": 3,
        "aqhi_in_smoke": null,
        "name": "Tonight",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "aqhi_in_smoke": null,
        "name": "Tomorrow",
        "risk": "low"
      },
      {
        "aqhi": 3,
        "aqhi_in_smoke": null,
        "name": "Tomorrow Night",
        "risk": "low"
      },
      {
        "aqhi": 2,
        "aqhi_in_smoke": null,
        "name": "Day 3",
        "risk": "low"
      }
    ],
    "published_at": "2026-10-25T21:00:00Z"
  },
  "forecast_url": "https://api.weather.gc.ca/collections/aqhi-forecasts-realtime/items?f=json&location_id=FEUZB&sortby=-publication_datetime&limit=100&skipGeometry=true",
  "lang": "en",
  "licence_url": "https://eccc-msc.github.io/open-data/licence/readme_en/",
  "location": {
    "distance_km": null,
    "latitude": 43.7416666666667,
    "location_id": "FEUZB",
    "longitude": -79.3733333333333,
    "name": "Toronto",
    "zone": "ont",
    "zone_name": "Ontario"
  },
  "observation": {
    "aqhi": 2.97,
    "aqhi_rounded": 3,
    "observed_at": "2026-10-25T22:00:00Z",
    "observed_at_text": "6:00 PM EDT Sunday 25 October 2026",
    "risk": "low",
    "special_notes": null
  },
  "observed_at_ms": 1792969238543,
  "source_url": "https://api.weather.gc.ca/collections/aqhi-observations-realtime/items?f=json&location_id=FEUZB&latest=true&skipGeometry=true"
}
```

### City weather

- Capability: `weather/city_weather`
- Description: Current conditions, the 6-to-7-day public forecast, the 24-hour hourly forecast, active warnings, regional normals and sunrise/sunset for one ECCC city forecast location (the data behind weather.gc.ca/en/location and the city pages), in English or French. Choose the location by city_id, by lat/lon (nearest of the ~840 ECCC forecast locations) or by name query (best match: exact name, prefix, contains, then region). An unknown city_id is not_found.
- Instructions: Weather now and the forecast for a Canadian city or a coordinate in Canada. For alerts beyond the city page use weather_alerts; for past weather use climate_daily.
- Cost: 5 credits per call
- Capability file: [City weather](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/city_weather)

Accepted options:
- `city_id` (string): ECCC city page id, province code plus number: on-143 Toronto, qc-147 Montreal, bc-74 Vancouver, ab-52 Calgary, ns-19 Halifax. Find ids with find_cities. Pattern: ^[A-Za-z]{2}-[0-9A-Za-z]+$. Example: `<city_id>`
- `include_hourly` (boolean): Include the hourly forecast (24 hours). Example: `false`
- `lang` (string): Language of names and texts: en (English) or fr (French). Numbers are the same in both. Example: `en`
- `lat` (number): Latitude in decimal degrees (Canada spans about 41 to 84). Give with lon. Example: `10`
- `lon` (number): Longitude in decimal degrees, west negative (Canada spans about -142 to -52). Give with lat. Example: `10`
- `query` (string): City or place name, English or French, accents optional (Toronto, Montreal, Quebec, St. John's). Example: `<query>`

Response schema example:
```json
{
  "attribution": "Data Source: Environment and Climate Change Canada",
  "city": {
    "id": "on-143",
    "latitude": 43.65,
    "longitude": -79.38,
    "name": "Toronto",
    "province": "ON",
    "region": "City of Toronto",
    "url": "https://weather.gc.ca/en/location/index.html?coords=43.65,-79.38"
  },
  "current": {
    "condition": "Mostly Cloudy",
    "dewpoint_c": 6.5,
    "humidex": null,
    "icon_code": 3,
    "observed_at": "2026-10-25T22:00:00Z",
    "pressure_change_kpa": 0.19,
    "pressure_kpa": 102.9,
    "pressure_tendency": "falling",
    "relative_humidity_pct": 55,
    "station": {
      "code": "yyz",
      "latitude": 43.68,
      "longitude": -79.63,
      "name": "Toronto Pearson Int'l Airport"
    },
    "temperature_c": 15.6,
    "visibility_km": null,
    "wind_bearing_deg": 152,
    "wind_chill": -3,
    "wind_direction": "SSE",
    "wind_gust_kmh": 29,
    "wind_speed_kmh": 9
  },
  "distance_km": null,
  "forecast_issued_at": "2026-10-25T19:30:00Z",
  "forecasts": [
    {
      "cloud_precip": "Partly cloudy.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 32,
      "period": "Tonight",
      "period_label": "Sunday night",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 95,
      "short_summary": "Partly cloudy",
      "snow_level_summary": null,
      "summary": "Partly cloudy. Low 10.",
      "temperature_c": 10,
      "temperature_class": "low",
      "temperature_summary": "Low 10.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": null
    },
    {
      "cloud_precip": "Increasing cloudiness early in the morning. 30 percent chance of showers late in the morning and early afternoon.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 6,
      "period": "Monday",
      "period_label": "Monday",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 50,
      "short_summary": "Chance of showers",
      "snow_level_summary": null,
      "summary": "Increasing cloudiness early in the morning. 30 percent chance of showers late in the morning and early afternoon. Wind becoming north 20 km/h gusting to 40 in the morning. High 16. UV index 3 or moderate.",
      "temperature_c": 16,
      "temperature_class": "high",
      "temperature_summary": "High 16.",
      "uv_category": "moderate",
      "uv_index": 3,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": "Wind becoming north 20 km/h gusting to 40 in the morning."
    },
    {
      "cloud_precip": "Clearing in the evening.",
      "frost_summary": "risk of frost.",
      "humidex_summary": null,
      "icon_code": 35,
      "period": "Monday night",
      "period_label": "Monday night",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 65,
      "short_summary": "Clearing",
      "snow_level_summary": null,
      "summary": "Clearing in the evening. Wind north 20 km/h gusting to 40. Low plus 2 with risk of frost.",
      "temperature_c": 2,
      "temperature_class": "low",
      "temperature_summary": "Low plus 2 with risk of frost.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": "Wind north 20 km/h gusting to 40."
    },
    {
      "cloud_precip": "Sunny.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 0,
      "period": "Tuesday",
      "period_label": "Tuesday",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 60,
      "short_summary": "Sunny",
      "snow_level_summary": null,
      "summary": "Sunny. High 11.",
      "temperature_c": 11,
      "temperature_class": "high",
      "temperature_summary": "High 11.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": null
    },
    {
      "cloud_precip": "Clear.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 30,
      "period": "Tuesday night",
      "period_label": "Tuesday night",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 95,
      "short_summary": "Clear",
      "snow_level_summary": null,
      "summary": "Clear. Low plus 4.",
      "temperature_c": 4,
      "temperature_class": "low",
      "temperature_summary": "Low plus 4.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": null
    },
    {
      "cloud_precip": "A mix of sun and cloud.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 2,
      "period": "Wednesday",
      "period_label": "Wednesday",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 60,
      "short_summary": "A mix of sun and cloud",
      "snow_level_summary": null,
      "summary": "A mix of sun and cloud. High 16.",
      "temperature_c": 16,
      "temperature_class": "high",
      "temperature_summary": "High 16.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": null
    },
    {
      "cloud_precip": "Cloudy periods.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 32,
      "period": "Wednesday night",
      "period_label": "Wednesday night",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 95,
      "short_summary": "Cloudy periods",
      "snow_level_summary": null,
      "summary": "Cloudy periods. Low 8.",
      "temperature_c": 8,
      "temperature_class": "low",
      "temperature_summary": "Low 8.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": null
    },
    {
      "cloud_precip": "A mix of sun and cloud with 30 percent chance of showers.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 6,
      "period": "Thursday",
      "period_label": "Thursday",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 65,
      "short_summary": "Chance of showers",
      "snow_level_summary": null,
      "summary": "A mix of sun and cloud with 30 percent chance of showers. High 19.",
      "temperature_c": 19,
      "temperature_class": "high",
      "temperature_summary": "High 19.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": null
    },
    {
      "cloud_precip": "Cloudy with 30 percent chance of showers.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 12,
      "period": "Thursday night",
      "period_label": "Thursday night",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 100,
      "short_summary": "Chance of showers",
      "snow_level_summary": null,
      "summary": "Cloudy with 30 percent chance of showers. Low 10.",
      "temperature_c": 10,
      "temperature_class": "low",
      "temperature_summary": "Low 10.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": null
    },
    {
      "cloud_precip": "Cloudy.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 10,
      "period": "Friday",
      "period_label": "Friday",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 70,
      "short_summary": "Cloudy",
      "snow_level_summary": null,
      "summary": "Cloudy. High 16.",
      "temperature_c": 16,
      "temperature_class": "high",
      "temperature_summary": "High 16.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": null
    },
    {
      "cloud_precip": "Cloudy.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 10,
      "period": "Friday night",
      "period_label": "Friday night",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 100,
      "short_summary": "Cloudy",
      "snow_level_summary": null,
      "summary": "Cloudy. Low 9.",
      "temperature_c": 9,
      "temperature_class": "low",
      "temperature_summary": "Low 9.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": null
    },
    {
      "cloud_precip": "Cloudy.",
      "frost_summary": null,
      "humidex_summary": null,
      "icon_code": 10,
      "period": "Saturday",
      "period_label": "Saturday",
      "precipitation_accumulation": null,
      "precipitation_summary": null,
      "relative_humidity_pct": 80,
      "short_summary": "Cloudy",
      "snow_level_summary": null,
      "summary": "Cloudy. High 15.",
      "temperature_c": 15,
      "temperature_class": "high",
      "temperature_summary": "High 15.",
      "uv_category": null,
      "uv_index": null,
      "visibility_summary": null,
      "wind_chill_summary": null,
      "wind_summary": null
    }
  ],
  "hourly": [
    {
      "condition": "Partly cloudy",
      "humidex": null,
      "icon_code": 32,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 15,
      "time": "2026-10-25T23:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "Partly cloudy",
      "humidex": null,
      "icon_code": 32,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 14,
      "time": "2026-10-26T00:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "Partly cloudy",
      "humidex": null,
      "icon_code": 32,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 14,
      "time": "2026-10-26T01:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "Partly cloudy",
      "humidex": null,
      "icon_code": 32,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 14,
      "time": "2026-10-26T02:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "Partly cloudy",
      "humidex": null,
      "icon_code": 32,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 14,
      "time": "2026-10-26T03:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "A few clouds",
      "humidex": null,
      "icon_code": 31,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 13,
      "time": "2026-10-26T04:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "A few clouds",
      "humidex": null,
      "icon_code": 31,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 12,
      "time": "2026-10-26T05:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "A few clouds",
      "humidex": null,
      "icon_code": 31,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 11,
      "time": "2026-10-26T06:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "A few clouds",
      "humidex": null,
      "icon_code": 31,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 11,
      "time": "2026-10-26T07:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "A few clouds",
      "humidex": null,
      "icon_code": 31,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 10,
      "time": "2026-10-26T08:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "A few clouds",
      "humidex": null,
      "icon_code": 31,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 10,
      "time": "2026-10-26T09:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "A few clouds",
      "humidex": null,
      "icon_code": 31,
      "precip_category": "Low",
      "precip_probability_pct": 20,
      "temperature_c": 10,
      "time": "2026-10-26T10:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "A few clouds",
      "humidex": null,
      "icon_code": 31,
      "precip_category": "Low",
      "precip_probability_pct": 20,
      "temperature_c": 10,
      "time": "2026-10-26T11:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "VR",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 5
    },
    {
      "condition": "A mix of sun and cloud",
      "humidex": null,
      "icon_code": 2,
      "precip_category": "Low",
      "precip_probability_pct": 20,
      "temperature_c": 10,
      "time": "2026-10-26T12:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "NW",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 20
    },
    {
      "condition": "A mix of sun and cloud",
      "humidex": null,
      "icon_code": 2,
      "precip_category": "Low",
      "precip_probability_pct": 20,
      "temperature_c": 11,
      "time": "2026-10-26T13:00:00Z",
      "uv_index": 1,
      "wind_chill": null,
      "wind_direction": "NW",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 20
    },
    {
      "condition": "Chance of showers",
      "humidex": null,
      "icon_code": 6,
      "precip_category": "Low",
      "precip_probability_pct": 30,
      "temperature_c": 12,
      "time": "2026-10-26T14:00:00Z",
      "uv_index": 2,
      "wind_chill": null,
      "wind_direction": "NW",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 20
    },
    {
      "condition": "Chance of showers",
      "humidex": null,
      "icon_code": 6,
      "precip_category": "Low",
      "precip_probability_pct": 30,
      "temperature_c": 13,
      "time": "2026-10-26T15:00:00Z",
      "uv_index": 3,
      "wind_chill": null,
      "wind_direction": "NW",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 20
    },
    {
      "condition": "Chance of showers",
      "humidex": null,
      "icon_code": 6,
      "precip_category": "Low",
      "precip_probability_pct": 30,
      "temperature_c": 14,
      "time": "2026-10-26T16:00:00Z",
      "uv_index": 3,
      "wind_chill": null,
      "wind_direction": "NW",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 20
    },
    {
      "condition": "Chance of showers",
      "humidex": null,
      "icon_code": 6,
      "precip_category": "Low",
      "precip_probability_pct": 30,
      "temperature_c": 15,
      "time": "2026-10-26T17:00:00Z",
      "uv_index": 3,
      "wind_chill": null,
      "wind_direction": "NW",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 20
    },
    {
      "condition": "Chance of showers",
      "humidex": null,
      "icon_code": 6,
      "precip_category": "Low",
      "precip_probability_pct": 30,
      "temperature_c": 16,
      "time": "2026-10-26T18:00:00Z",
      "uv_index": 2,
      "wind_chill": null,
      "wind_direction": "NW",
      "wind_gust_kmh": null,
      "wind_speed_kmh": 20
    },
    {
      "condition": "Mainly cloudy",
      "humidex": null,
      "icon_code": 3,
      "precip_category": "Low",
      "precip_probability_pct": 20,
      "temperature_c": 15,
      "time": "2026-10-26T19:00:00Z",
      "uv_index": 1,
      "wind_chill": null,
      "wind_direction": "N",
      "wind_gust_kmh": 40,
      "wind_speed_kmh": 20
    },
    {
      "condition": "Mainly cloudy",
      "humidex": null,
      "icon_code": 3,
      "precip_category": "Low",
      "precip_probability_pct": 20,
      "temperature_c": 15,
      "time": "2026-10-26T20:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "N",
      "wind_gust_kmh": 40,
      "wind_speed_kmh": 20
    },
    {
      "condition": "Mainly cloudy",
      "humidex": null,
      "icon_code": 3,
      "precip_category": "Low",
      "precip_probability_pct": 20,
      "temperature_c": 14,
      "time": "2026-10-26T21:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "N",
      "wind_gust_kmh": 40,
      "wind_speed_kmh": 20
    },
    {
      "condition": "Mainly cloudy",
      "humidex": null,
      "icon_code": 33,
      "precip_category": "Low",
      "precip_probability_pct": 10,
      "temperature_c": 13,
      "time": "2026-10-26T22:00:00Z",
      "uv_index": null,
      "wind_chill": null,
      "wind_direction": "N",
      "wind_gust_kmh": 40,
      "wind_speed_kmh": 20
    }
  ],
  "hourly_issued_at": "2026-10-25T15:30:00Z",
  "lang": "en",
  "last_updated": "2026-10-25T22:01:13Z",
  "licence_url": "https://eccc-msc.github.io/open-data/licence/readme_en/",
  "matched_by": "city_id",
  "observed_at_ms": 1792969236960,
  "regional_normals": {
    "high_c": 11,
    "low_c": 4,
    "summary": "Low plus 4. High 11."
  },
  "source_url": "https://api.weather.gc.ca/collections/citypageweather-realtime/items/on-143?f=json",
  "sunrise": "2026-10-25T11:44:00Z",
  "sunset": "2026-10-25T22:19:00Z",
  "warnings": []
}
```

### Climate daily

- Capability: `weather/climate_daily`
- Description: Daily climate observations of one ECCC climate station (climate.weather.gc.ca daily data): mean, min and max temperature, precipitation, rain, snow, snow on ground, max gust, degree days and humidity, each with its ECCC quality flag. start/end (YYYY-MM-DD) select up to 366 days; one bound alone gives 31 days from it; no bounds gives the most recent 31 days on record. An unknown climate_id is not_found; days without data in the window are an empty list.
- Instructions: Past weather for a date or period at a Canadian station: how cold was it on a day, rainfall last month.
- Cost: 5 credits per call
- Capability file: [Climate daily](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/climate_daily)

Accepted options:
- `climate_id` (string, required): ECCC Climate ID of a climate station (7 characters, e.g. 6158355 TORONTO CITY, 6158350 TORONTO, 1108447 VANCOUVER INTL A). Find ids with climate_stations. Pattern: ^[0-9A-Za-z]+$. Example: `<climate_id>`
- `end` (string): Last day, YYYY-MM-DD. Pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$. Example: `<end>`
- `lang` (string): Language of names and texts: en (English) or fr (French). Numbers are the same in both. Example: `en`
- `start` (string): First day, YYYY-MM-DD. Pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$. Example: `<start>`

Response schema example:
```json
{
  "attribution": "Data Source: Environment and Climate Change Canada",
  "count": 31,
  "days": [
    {
      "cooling_degree_days": 0,
      "date": "2024-01-01",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 19.9,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": -0.7,
      "mean_temp_c": -1.9,
      "min_rel_humidity_pct": 65,
      "min_temp_c": -3.1,
      "snow_on_ground_cm": 2,
      "total_precip_mm": 0.1,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-02",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 18,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 1.5,
      "mean_temp_c": 0,
      "min_rel_humidity_pct": 67,
      "min_temp_c": -1.5,
      "snow_on_ground_cm": 0,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-03",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 16.1,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 3.1,
      "mean_temp_c": 1.9,
      "min_rel_humidity_pct": 68,
      "min_temp_c": 0.6,
      "snow_on_ground_cm": null,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-04",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 20.1,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 1.8,
      "mean_temp_c": -2.1,
      "min_rel_humidity_pct": 54,
      "min_temp_c": -6,
      "snow_on_ground_cm": null,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-05",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 18.9,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 0.4,
      "mean_temp_c": -0.9,
      "min_rel_humidity_pct": 59,
      "min_temp_c": -2.1,
      "snow_on_ground_cm": null,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-06",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 18.7,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 2.1,
      "mean_temp_c": -0.7,
      "min_rel_humidity_pct": 62,
      "min_temp_c": -3.5,
      "snow_on_ground_cm": null,
      "total_precip_mm": 5,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-07",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 19.7,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 0.7,
      "mean_temp_c": -1.7,
      "min_rel_humidity_pct": 73,
      "min_temp_c": -4.2,
      "snow_on_ground_cm": 5,
      "total_precip_mm": 0.1,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-08",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 15.8,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 3.7,
      "mean_temp_c": 2.2,
      "min_rel_humidity_pct": 63,
      "min_temp_c": 0.6,
      "snow_on_ground_cm": 4,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-09",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 14.2,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 7,
      "mean_temp_c": 3.8,
      "min_rel_humidity_pct": 62,
      "min_temp_c": 0.6,
      "snow_on_ground_cm": 1,
      "total_precip_mm": 31.2,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-10",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 14.3,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 6.7,
      "mean_temp_c": 3.7,
      "min_rel_humidity_pct": 64,
      "min_temp_c": 0.7,
      "snow_on_ground_cm": null,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-11",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 16.3,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 2.8,
      "mean_temp_c": 1.7,
      "min_rel_humidity_pct": 65,
      "min_temp_c": 0.6,
      "snow_on_ground_cm": null,
      "total_precip_mm": 3.3,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-12",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 16.1,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 3.9,
      "mean_temp_c": 1.9,
      "min_rel_humidity_pct": 70,
      "min_temp_c": -0.1,
      "snow_on_ground_cm": null,
      "total_precip_mm": 11.8,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-13",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 16.1,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 6.8,
      "mean_temp_c": 1.9,
      "min_rel_humidity_pct": 60,
      "min_temp_c": -2.9,
      "snow_on_ground_cm": 1,
      "total_precip_mm": 3.3,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-14",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 24.8,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": -2.5,
      "mean_temp_c": -6.8,
      "min_rel_humidity_pct": 54,
      "min_temp_c": -11.2,
      "snow_on_ground_cm": 0,
      "total_precip_mm": 0.1,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-15",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 27.8,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": -7.1,
      "mean_temp_c": -9.8,
      "min_rel_humidity_pct": 47,
      "min_temp_c": -12.5,
      "snow_on_ground_cm": 1,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-16",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 26.6,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": -6.3,
      "mean_temp_c": -8.6,
      "min_rel_humidity_pct": 58,
      "min_temp_c": -10.9,
      "snow_on_ground_cm": 1,
      "total_precip_mm": 0.9,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-17",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 28.8,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": -7.4,
      "mean_temp_c": -10.8,
      "min_rel_humidity_pct": 49,
      "min_temp_c": -14.2,
      "snow_on_ground_cm": 1,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-18",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 23.2,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": -2.8,
      "mean_temp_c": -5.2,
      "min_rel_humidity_pct": 58,
      "min_temp_c": -7.6,
      "snow_on_ground_cm": 2,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-19",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 27.4,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": -4.9,
      "mean_temp_c": -9.4,
      "min_rel_humidity_pct": 49,
      "min_temp_c": -13.8,
      "snow_on_ground_cm": 1,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-20",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 28.5,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": -7,
      "mean_temp_c": -10.5,
      "min_rel_humidity_pct": 60,
      "min_temp_c": -14.1,
      "snow_on_ground_cm": 2,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-21",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 24,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": -1.4,
      "mean_temp_c": -6,
      "min_rel_humidity_pct": 49,
      "min_temp_c": -10.7,
      "snow_on_ground_cm": 2,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-22",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 21,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": -0.2,
      "mean_temp_c": -3,
      "min_rel_humidity_pct": 54,
      "min_temp_c": -5.8,
      "snow_on_ground_cm": 2,
      "total_precip_mm": 0.7,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-23",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 16.9,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 2.4,
      "mean_temp_c": 1.1,
      "min_rel_humidity_pct": 80,
      "min_temp_c": -0.3,
      "snow_on_ground_cm": 2,
      "total_precip_mm": 8.1,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-24",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 16.1,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 3,
      "mean_temp_c": 1.9,
      "min_rel_humidity_pct": 92,
      "min_temp_c": 0.9,
      "snow_on_ground_cm": 2,
      "total_precip_mm": 7.2,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-25",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 15,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 4.1,
      "mean_temp_c": 3,
      "min_rel_humidity_pct": 88,
      "min_temp_c": 2,
      "snow_on_ground_cm": 0,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-26",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 13.9,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 6.1,
      "mean_temp_c": 4.1,
      "min_rel_humidity_pct": 79,
      "min_temp_c": 2.1,
      "snow_on_ground_cm": 0,
      "total_precip_mm": 17.6,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-27",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 15.2,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 4,
      "mean_temp_c": 2.8,
      "min_rel_humidity_pct": 80,
      "min_temp_c": 1.6,
      "snow_on_ground_cm": null,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-28",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 15.3,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 3.7,
      "mean_temp_c": 2.7,
      "min_rel_humidity_pct": 70,
      "min_temp_c": 1.7,
      "snow_on_ground_cm": 0,
      "total_precip_mm": 0.2,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-29",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 16.2,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 3.6,
      "mean_temp_c": 1.8,
      "min_rel_humidity_pct": 60,
      "min_temp_c": 0.1,
      "snow_on_ground_cm": null,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-30",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 16,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 3.2,
      "mean_temp_c": 2,
      "min_rel_humidity_pct": 74,
      "min_temp_c": 0.7,
      "snow_on_ground_cm": null,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    },
    {
      "cooling_degree_days": 0,
      "date": "2024-01-31",
      "flags": {
        "max_gust_direction_10s_deg": "M",
        "max_gust_speed_kmh": "M"
      },
      "heating_degree_days": 14,
      "max_gust_direction_10s_deg": null,
      "max_gust_speed_kmh": null,
      "max_rel_humidity_pct": null,
      "max_temp_c": 5.6,
      "mean_temp_c": 4,
      "min_rel_humidity_pct": 67,
      "min_temp_c": 2.4,
      "snow_on_ground_cm": null,
      "total_precip_mm": 0,
      "total_rain_mm": null,
      "total_snow_cm": null
    }
  ],
  "end": "2024-01-31",
  "lang": "en",
  "licence_url": "https://eccc-msc.github.io/open-data/licence/readme_en/",
  "observed_at_ms": 1792969237694,
  "source_url": "https://api.weather.gc.ca/collections/climate-daily/items?f=json&CLIMATE_IDENTIFIER=6158355&skipGeometry=true&datetime=2024-01-01%2F2024-01-31&sortby=LOCAL_DATE&limit=400",
  "start": "2024-01-01",
  "station": {
    "climate_id": "6158355",
    "daily_first_date": "2002-06-04",
    "daily_last_date": "2026-10-23",
    "distance_km": null,
    "elevation_m": 112.5,
    "first_date": "2002-06-04",
    "has_hourly": true,
    "has_monthly_summary": true,
    "has_normals": false,
    "hourly_first_date": "2002-06-04",
    "hourly_last_date": "2026-10-23",
    "last_date": "2026-10-23",
    "latitude": 43.666666666666664,
    "longitude": -79.4,
    "monthly_first_date": "2003-07-01",
    "monthly_last_date": "2006-12-01",
    "name": "TORONTO CITY",
    "operator": "Environment and Climate Change Canada - Meteorological Service of Canada",
    "province": "ON",
    "province_name": "ONTARIO",
    "station_id": 31688,
    "tc_id": "XTO",
    "timezone": "EST",
    "wmo_id": "71508"
  }
}
```

### Climate monthly

- Capability: `weather/climate_monthly`
- Description: Monthly climate summaries of one ECCC climate station: mean and extreme temperatures, total precipitation and snowfall, days with precipitation, sunshine, degree days and the station's monthly normals where ECCC lists them. start/end (YYYY-MM) bound the months; without them the whole record. An unknown climate_id is not_found.
- Instructions: Month-by-month climate history of a station, e.g. July rainfall by year.
- Cost: 5 credits per call
- Capability file: [Climate monthly](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/climate_monthly)

Accepted options:
- `climate_id` (string, required): ECCC Climate ID of a climate station (7 characters, e.g. 6158355 TORONTO CITY, 6158350 TORONTO, 1108447 VANCOUVER INTL A). Find ids with climate_stations. Pattern: ^[0-9A-Za-z]+$. Example: `<climate_id>`
- `end` (string): Last month, YYYY-MM. Pattern: ^[0-9]{4}-[0-9]{2}$. Example: `<end>`
- `lang` (string): Language of names and texts: en (English) or fr (French). Numbers are the same in both. Example: `en`
- `start` (string): First month, YYYY-MM. Pattern: ^[0-9]{4}-[0-9]{2}$. Example: `<start>`

Response schema example:
```json
{
  "attribution": "Data Source: Environment and Climate Change Canada",
  "count": 12,
  "end": "2004-12",
  "lang": "en",
  "licence_url": "https://eccc-msc.github.io/open-data/licence/readme_en/",
  "months": [
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 0,
      "days_with_precip_ge_1mm": 10,
      "days_with_valid_mean_temp": 31,
      "days_with_valid_precip": 31,
      "extreme_max_temp_c": 13.3,
      "extreme_min_temp_c": -22.1,
      "heating_degree_days": 804.2,
      "mean_temp_c": -7.941935483870968,
      "month": "2004-01",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 31,
      "total_precip_mm": 50,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 0,
      "days_with_precip_ge_1mm": 5,
      "days_with_valid_mean_temp": 29,
      "days_with_valid_precip": 29,
      "extreme_max_temp_c": 10.6,
      "extreme_min_temp_c": -16.9,
      "heating_degree_days": 580,
      "mean_temp_c": -2,
      "month": "2004-02",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 14,
      "total_precip_mm": 23.9,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 0,
      "days_with_precip_ge_1mm": 8,
      "days_with_valid_mean_temp": 31,
      "days_with_valid_precip": 31,
      "extreme_max_temp_c": 18.8,
      "extreme_min_temp_c": -9.4,
      "heating_degree_days": 459.1,
      "mean_temp_c": 3.1903225806451614,
      "month": "2004-03",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 0,
      "total_precip_mm": 46.3,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 0,
      "days_with_precip_ge_1mm": 12,
      "days_with_valid_mean_temp": 30,
      "days_with_valid_precip": 30,
      "extreme_max_temp_c": 23.3,
      "extreme_min_temp_c": -6.2,
      "heating_degree_days": 317.3,
      "mean_temp_c": 7.423333333333333,
      "month": "2004-04",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 0,
      "total_precip_mm": 71.2,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 11.7,
      "days_with_precip_ge_1mm": 11,
      "days_with_valid_mean_temp": 31,
      "days_with_valid_precip": 31,
      "extreme_max_temp_c": 28,
      "extreme_min_temp_c": 0,
      "heating_degree_days": 147.5,
      "mean_temp_c": 13.619354838709675,
      "month": "2004-05",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 0,
      "total_precip_mm": 89,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 33.3,
      "days_with_precip_ge_1mm": 7,
      "days_with_valid_mean_temp": 30,
      "days_with_valid_precip": 30,
      "extreme_max_temp_c": 32.7,
      "extreme_min_temp_c": 9.6,
      "heating_degree_days": 32.4,
      "mean_temp_c": 18.03,
      "month": "2004-06",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 0,
      "total_precip_mm": 44.6,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 98.3,
      "days_with_precip_ge_1mm": 9,
      "days_with_valid_mean_temp": 31,
      "days_with_valid_precip": 31,
      "extreme_max_temp_c": 29.9,
      "extreme_min_temp_c": 13.2,
      "heating_degree_days": 1.2,
      "mean_temp_c": 21.13225806451613,
      "month": "2004-07",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 0,
      "total_precip_mm": 70.6,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 70.8,
      "days_with_precip_ge_1mm": 7,
      "days_with_valid_mean_temp": 31,
      "days_with_valid_precip": 31,
      "extreme_max_temp_c": 29.5,
      "extreme_min_temp_c": 10.7,
      "heating_degree_days": 8.5,
      "mean_temp_c": 20.009677419354837,
      "month": "2004-08",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 0,
      "total_precip_mm": 49.4,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 50.9,
      "days_with_precip_ge_1mm": 3,
      "days_with_valid_mean_temp": 30,
      "days_with_valid_precip": 30,
      "extreme_max_temp_c": 28.3,
      "extreme_min_temp_c": 7.5,
      "heating_degree_days": 23.8,
      "mean_temp_c": 18.903333333333332,
      "month": "2004-09",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 0,
      "total_precip_mm": 33.2,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 0,
      "days_with_precip_ge_1mm": 5,
      "days_with_valid_mean_temp": 31,
      "days_with_valid_precip": 31,
      "extreme_max_temp_c": 23.2,
      "extreme_min_temp_c": 3.8,
      "heating_degree_days": 210.1,
      "mean_temp_c": 11.22258064516129,
      "month": "2004-10",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 0,
      "total_precip_mm": 22.8,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 0,
      "days_with_precip_ge_1mm": 7,
      "days_with_valid_mean_temp": 30,
      "days_with_valid_precip": 30,
      "extreme_max_temp_c": 15.4,
      "extreme_min_temp_c": -3,
      "heating_degree_days": 351.8,
      "mean_temp_c": 6.273333333333333,
      "month": "2004-11",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 0,
      "total_precip_mm": 59.4,
      "total_snowfall_cm": null
    },
    {
      "bright_sunshine_hours": null,
      "cooling_degree_days": 0,
      "days_with_precip_ge_1mm": 12,
      "days_with_valid_mean_temp": 31,
      "days_with_valid_precip": 31,
      "extreme_max_temp_c": 11.1,
      "extreme_min_temp_c": -23.3,
      "heating_degree_days": 605.7,
      "mean_temp_c": -1.538709677419355,
      "month": "2004-12",
      "normal_mean_temp_c": null,
      "normal_precip_mm": null,
      "normal_snowfall_cm": null,
      "normal_sunshine_hours": null,
      "snow_on_ground_last_day_cm": 0,
      "total_precip_mm": 80.4,
      "total_snowfall_cm": null
    }
  ],
  "observed_at_ms": 1792969237837,
  "source_url": "https://api.weather.gc.ca/collections/climate-monthly/items?f=json&CLIMATE_IDENTIFIER=6158355&skipGeometry=true&sortby=LOCAL_DATE&limit=2000&datetime=2004-01%2F2004-12",
  "start": "2004-01",
  "station": {
    "climate_id": "6158355",
    "daily_first_date": "2002-06-04",
    "daily_last_date": "2026-10-23",
    "distance_km": null,
    "elevation_m": 112.5,
    "first_date": "2002-06-04",
    "has_hourly": true,
    "has_monthly_summary": true,
    "has_normals": false,
    "hourly_first_date": "2002-06-04",
    "hourly_last_date": "2026-10-23",
    "last_date": "2026-10-23",
    "latitude": 43.666666666666664,
    "longitude": -79.4,
    "monthly_first_date": "2003-07-01",
    "monthly_last_date": "2006-12-01",
    "name": "TORONTO CITY",
    "operator": "Environment and Climate Change Canada - Meteorological Service of Canada",
    "province": "ON",
    "province_name": "ONTARIO",
    "station_id": 31688,
    "tc_id": "XTO",
    "timezone": "EST",
    "wmo_id": "71508"
  }
}
```

### Climate normals

- Capability: `weather/climate_normals`
- Description: Canadian Climate Normals 1981-2010 of one ECCC climate station, the normals period GeoMet publishes: every element (temperatures, degree days, days above or below thresholds, rain, snow, precipitation, snow depth, sunshine, frost dates...) with its 12 monthly values, annual value and quality code. The 1991-2020 normals are not on the open API. A station without normals answers an empty element list; an unknown climate_id is not_found.
- Instructions: Typical climate of a place by month: normal January temperature, average annual snowfall, frost-free period.
- Cost: 5 credits per call
- Capability file: [Climate normals](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/climate_normals)

Accepted options:
- `climate_id` (string, required): ECCC Climate ID of a climate station (7 characters, e.g. 6158355 TORONTO CITY, 6158350 TORONTO, 1108447 VANCOUVER INTL A). Find ids with climate_stations. Pattern: ^[0-9A-Za-z]+$. Example: `<climate_id>`
- `lang` (string): Language of names and texts: en (English) or fr (French). Numbers are the same in both. Example: `en`

Response schema example:
```json
{
  "attribution": "Data Source: Environment and Climate Change Canada",
  "count": 65,
  "elements": [
    {
      "annual": 9.39,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        -3.74,
        -2.58,
        1.4,
        7.85,
        14.14,
        19.36,
        22.34,
        21.5,
        17.2,
        10.72,
        4.94,
        -0.47
      ],
      "name": "Mean daily temperature deg C",
      "normal_id": 1,
      "years": 23
    },
    {
      "annual": 1.29,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        2.8,
        2.23,
        1.72,
        1.42,
        1.84,
        1.27,
        1.35,
        1.34,
        1.35,
        1.17,
        1.42,
        2.71
      ],
      "name": "StdDev mean monthly temperature deg C",
      "normal_id": 2,
      "years": 23
    },
    {
      "annual": 12.9,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        -0.72,
        0.44,
        4.69,
        11.51,
        18.35,
        23.78,
        26.62,
        25.51,
        20.98,
        13.97,
        7.53,
        2.11
      ],
      "name": "Mean daily max temperature deg C",
      "normal_id": 5,
      "years": 23
    },
    {
      "annual": 5.85,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        -6.73,
        -5.59,
        -1.89,
        4.14,
        9.88,
        14.89,
        18.01,
        17.44,
        13.38,
        7.41,
        2.31,
        -3.06
      ],
      "name": "Mean daily min temperature deg C",
      "normal_id": 8,
      "years": 23
    },
    {
      "annual": 103,
      "code": "C",
      "date": "04-13",
      "first_year": 1981,
      "last_year": 2002,
      "monthly": [
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
      ],
      "name": "Mean date last frost in spring",
      "normal_id": 13,
      "years": 22
    },
    {
      "annual": 307,
      "code": "C",
      "date": "11-03",
      "first_year": 1981,
      "last_year": 2002,
      "monthly": [
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
      ],
      "name": "Mean date first frost in fall",
      "normal_id": 14,
      "years": 22
    },
    {
      "annual": 203,
      "code": "C",
      "date": "07-22",
      "first_year": 1981,
      "last_year": 2002,
      "monthly": [
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
      ],
      "name": "Mean length frost-free period in days",
      "normal_id": 21,
      "years": 22
    },
    {
      "annual": 35.62,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        0,
        0,
        0,
        0.06,
        0.41,
        4.85,
        17.69,
        10.65,
        1.96,
        0,
        0,
        0
      ],
      "name": "Total degree-days Above 24 deg C",
      "normal_id": 22,
      "years": 23
    },
    {
      "annual": 374.64,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        0,
        0,
        0.1,
        1.7,
        15.3,
        66.93,
        136.85,
        113.59,
        38.65,
        1.52,
        0,
        0
      ],
      "name": "Total degree-days Above 18 deg C",
      "normal_id": 23,
      "years": 23
    },
    {
      "annual": 711.79,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        0,
        0,
        0.68,
        5.2,
        41.17,
        136.86,
        227.53,
        202.1,
        88.78,
        9.39,
        0.08,
        0
      ],
      "name": "Total degree-days Above 15 deg C",
      "normal_id": 24,
      "years": 23
    },
    {
      "annual": 1480.18,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        0.04,
        0,
        5.3,
        29.75,
        136.6,
        280.8,
        382.47,
        356.5,
        217.73,
        62.37,
        7.57,
        1.05
      ],
      "name": "Total degree-days Above 10 deg C",
      "normal_id": 25,
      "years": 23
    },
    {
      "annual": 2506.36,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        2.38,
        3.47,
        24.93,
        106.93,
        283.39,
        430.75,
        537.47,
        511.5,
        366.14,
        180.03,
        49.97,
        9.4
      ],
      "name": "Total degree-days Above 5 deg C",
      "normal_id": 26,
      "years": 23
    },
    {
      "annual": 3824.07,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        24.59,
        31.45,
        91.36,
        237.83,
        438.33,
        580.75,
        692.47,
        666.5,
        516.14,
        332.26,
        155.52,
        56.87
      ],
      "name": "Total degree-days Above 0 deg C",
      "normal_id": 27,
      "years": 23
    },
    {
      "annual": 373.72,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        140.5,
        104.13,
        47.9,
        2.46,
        0,
        0,
        0,
        0,
        0,
        0,
        7.23,
        71.5
      ],
      "name": "Total degree-days below 0 deg C",
      "normal_id": 28,
      "years": 23
    },
    {
      "annual": 882.08,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        273.29,
        217.24,
        136.47,
        21.55,
        0.07,
        0,
        0,
        0,
        0,
        2.77,
        51.67,
        179.02
      ],
      "name": "Total degree-days below 5 deg C",
      "normal_id": 29,
      "years": 23
    },
    {
      "annual": 1682,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        425.95,
        354.86,
        271.84,
        94.37,
        8.27,
        0.06,
        0,
        0,
        1.59,
        40.11,
        159.27,
        325.68
      ],
      "name": "Total degree-days below 10 deg C",
      "normal_id": 30,
      "years": 23
    },
    {
      "annual": 2739.69,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        580.91,
        495.94,
        422.22,
        219.82,
        67.84,
        6.11,
        0.06,
        0.6,
        22.65,
        142.13,
        301.78,
        479.63
      ],
      "name": "Total degree-days below 15 deg C",
      "normal_id": 31,
      "years": 23
    },
    {
      "annual": 3498.22,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        673.91,
        580.6,
        514.64,
        306.32,
        134.98,
        26.18,
        2.38,
        5.1,
        62.52,
        227.26,
        391.7,
        572.63
      ],
      "name": "Total degree-days below 18 deg C",
      "normal_id": 32,
      "years": 23
    },
    {
      "annual": 45.87,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        15.57,
        12.52,
        6.7,
        0.39,
        0,
        0,
        0,
        0,
        0,
        0,
        1.14,
        9.55
      ],
      "name": "Days with daily max temperature LE 0 deg C",
      "normal_id": 33,
      "years": 23
    },
    {
      "annual": 319.35,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        15.43,
        15.7,
        24.3,
        29.61,
        31,
        30,
        31,
        31,
        30,
        31,
        28.86,
        21.45
      ],
      "name": "Days with daily max temperature GT 0 deg C",
      "normal_id": 34,
      "years": 23
    },
    {
      "annual": 211.09,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        0.7,
        0.65,
        5.17,
        17.3,
        30,
        30,
        31,
        31,
        29.95,
        25.05,
        8.59,
        1.68
      ],
      "name": "Days with daily max temperature GT 10 deg C",
      "normal_id": 35,
      "years": 23
    },
    {
      "annual": 117.23,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        0,
        0,
        0.48,
        2.3,
        10.48,
        23.65,
        30.23,
        29.45,
        17.32,
        3.18,
        0.14,
        0
      ],
      "name": "Days with daily max temperature GT 20 deg C",
      "normal_id": 36,
      "years": 23
    },
    {
      "annual": 11.82,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        0,
        0,
        0,
        0.09,
        0.43,
        2.52,
        5.41,
        2.73,
        0.64,
        0,
        0,
        0
      ],
      "name": "Days with daily max temperature GT 30 deg C",
      "normal_id": 37,
      "years": 23
    },
    {
      "annual": 0.72,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        0,
        0,
        0,
        0,
        0,
        0.13,
        0.45,
        0.14,
        0,
        0,
        0,
        0
      ],
      "name": "Days with daily max temperature GT 35 deg C",
      "normal_id": 38,
      "years": 23
    },
    {
      "annual": 264.39,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        4.57,
        5.96,
        12.52,
        25.57,
        31,
        30,
        31,
        31,
        30,
        30.27,
        21.64,
        10.86
      ],
      "name": "Days with daily min temperature GT 0 deg C",
      "normal_id": 39,
      "years": 23
    },
    {
      "annual": 131.16,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        29.04,
        25.91,
        23.96,
        9.39,
        0.22,
        0,
        0,
        0,
        0,
        2.55,
        14.23,
        25.86
      ],
      "name": "Days with daily min temperature LE 2 deg C",
      "normal_id": 40,
      "years": 23
    },
    {
      "annual": 100.83,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        26.43,
        22.26,
        18.48,
        4.43,
        0,
        0,
        0,
        0,
        0,
        0.73,
        8.36,
        20.14
      ],
      "name": "Days with daily min temperature LE 0 deg C",
      "normal_id": 41,
      "years": 23
    },
    {
      "annual": 78.18,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        22.78,
        19.26,
        14.26,
        1.74,
        0,
        0,
        0,
        0,
        0,
        0.05,
        4.23,
        15.86
      ],
      "name": "Days with daily min temperature LT -2 deg C",
      "normal_id": 42,
      "years": 23
    },
    {
      "annual": 21.86,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        9.09,
        6.61,
        2.35,
        0.04,
        0,
        0,
        0,
        0,
        0,
        0,
        0.09,
        3.68
      ],
      "name": "Days with daily min temperature LT -10 deg C",
      "normal_id": 43,
      "years": 23
    },
    {
      "annual": 1.22,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        0.96,
        0.13,
        0.04,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0.09
      ],
      "name": "Days with daily min temperature LT -20 deg C",
      "normal_id": 44,
      "years": 23
    },
    {
      "annual": 0,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2003,
      "monthly": [
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "name": "Days with daily min temperature LT -30 deg C",
      "normal_id": 45,
      "years": 23
    },
    {
      "annual": 714.02,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        29.08,
        29.66,
        33.64,
        61.1,
        81.98,
        70.87,
        63.94,
        81.06,
        84.71,
        64.32,
        75.42,
        38.24
      ],
      "name": "Total rainfall mm",
      "normal_id": 52,
      "years": 26
    },
    {
      "annual": 30.97,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        26.92,
        20.92,
        23.51,
        27.78,
        27.02,
        37.1,
        26.21,
        44.49,
        46.54,
        33.89,
        32.71,
        24.6
      ],
      "name": "StdDev total rainfall mm",
      "normal_id": 53,
      "years": 26
    },
    {
      "annual": 121.51,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        37.18,
        27.02,
        19.8,
        4.99,
        0,
        0,
        0,
        0,
        0,
        0.06,
        8.34,
        24.12
      ],
      "name": "Total snowfall cm",
      "normal_id": 54,
      "years": 26
    },
    {
      "annual": 6.95,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        25.91,
        15.37,
        11.1,
        5.28,
        0,
        0,
        0,
        0,
        0,
        0.25,
        9.65,
        15.89
      ],
      "name": "StdDev total snowfall cm",
      "normal_id": 55,
      "years": 26
    },
    {
      "annual": 831.11,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        61.51,
        55.39,
        53.67,
        68.04,
        81.98,
        70.87,
        63.94,
        81.06,
        84.71,
        64.39,
        84.06,
        61.49
      ],
      "name": "Total precipitation mm",
      "normal_id": 56,
      "years": 26
    },
    {
      "annual": 32.46,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        31.05,
        26.09,
        26.71,
        28.15,
        27.02,
        37.1,
        26.21,
        44.49,
        46.54,
        33.84,
        34.76,
        27.59
      ],
      "name": "StdDev total precipitation mm",
      "normal_id": 57,
      "years": 26
    },
    {
      "annual": 114.08,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        5.35,
        4.77,
        7.92,
        11.17,
        12.74,
        10.96,
        10.36,
        10.23,
        11.05,
        11.65,
        10.92,
        6.96
      ],
      "name": "Days with rainfall GE 0.2 mm",
      "normal_id": 61,
      "years": 26
    },
    {
      "annual": 43.9,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        1.73,
        1.69,
        2.23,
        4.17,
        5.09,
        4.35,
        4.27,
        4.32,
        4.73,
        4.48,
        4.42,
        2.42
      ],
      "name": "Days with rainfall GE 5 mm",
      "normal_id": 62,
      "years": 26
    },
    {
      "annual": 24.01,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        1,
        1.08,
        0.96,
        1.91,
        2.78,
        2.39,
        2.41,
        2.5,
        2.86,
        2,
        2.81,
        1.31
      ],
      "name": "Days with rainfall GE 10 mm",
      "normal_id": 63,
      "years": 26
    },
    {
      "annual": 4.39,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        0.19,
        0.15,
        0.04,
        0.22,
        0.57,
        0.52,
        0.32,
        0.91,
        0.68,
        0.17,
        0.5,
        0.12
      ],
      "name": "Days with rainfall GE 25 mm",
      "normal_id": 64,
      "years": 26
    },
    {
      "annual": 40.89,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        11.96,
        8.65,
        6.5,
        2.23,
        0,
        0,
        0,
        0,
        0,
        0.08,
        3.12,
        8.35
      ],
      "name": "Days with snowfall GE 0.2 cm",
      "normal_id": 65,
      "years": 26
    },
    {
      "annual": 7.74,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        2.46,
        1.62,
        1.23,
        0.35,
        0,
        0,
        0,
        0,
        0,
        0,
        0.46,
        1.62
      ],
      "name": "Days with snowfall GE 5 cm",
      "normal_id": 66,
      "years": 26
    },
    {
      "annual": 2.65,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        0.81,
        0.73,
        0.38,
        0.12,
        0,
        0,
        0,
        0,
        0,
        0,
        0.15,
        0.46
      ],
      "name": "Days with snowfall GE 10 cm",
      "normal_id": 67,
      "years": 26
    },
    {
      "annual": 0.08,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        0.08,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "name": "Days with snowfall GE 25 cm",
      "normal_id": 68,
      "years": 26
    },
    {
      "annual": 145.49,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        15.42,
        11.58,
        12.62,
        12.61,
        12.74,
        10.96,
        10.36,
        10.23,
        11.05,
        11.65,
        13.04,
        13.23
      ],
      "name": "Days with precipitation GE 0.2 mm",
      "normal_id": 69,
      "years": 26
    },
    {
      "annual": 51.39,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        3.96,
        3.19,
        3.5,
        4.61,
        5.09,
        4.35,
        4.27,
        4.32,
        4.73,
        4.48,
        5.04,
        3.85
      ],
      "name": "Days with precipitation GE 5 mm",
      "normal_id": 70,
      "years": 26
    },
    {
      "annual": 26.99,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        1.69,
        1.73,
        1.5,
        2.13,
        2.78,
        2.39,
        2.41,
        2.5,
        2.86,
        2,
        3.08,
        1.92
      ],
      "name": "Days with precipitation GE 10 mm",
      "normal_id": 71,
      "years": 26
    },
    {
      "annual": 4.7,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        0.23,
        0.27,
        0.08,
        0.26,
        0.57,
        0.52,
        0.32,
        0.91,
        0.68,
        0.17,
        0.54,
        0.15
      ],
      "name": "Days with precipitation GE 25 mm",
      "normal_id": 72,
      "years": 26
    },
    {
      "annual": 1.61,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        6.79,
        6.43,
        3.13,
        0.16,
        0,
        0,
        0,
        0,
        0,
        0,
        0.37,
        2.49
      ],
      "name": "Mean Daily Snow Depth cm",
      "normal_id": 73,
      "years": 26
    },
    {
      "annual": 1.32,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        6.27,
        5.71,
        2.15,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1.73
      ],
      "name": "Median Daily Snow Depth cm",
      "normal_id": 74,
      "years": 26
    },
    {
      "annual": 64.5,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        19.96,
        19.4,
        11.42,
        1.15,
        0,
        0,
        0,
        0,
        0,
        0,
        1.88,
        10.69
      ],
      "name": "Days with snow depth GE 1 cm",
      "normal_id": 76,
      "years": 25
    },
    {
      "annual": 43.31,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        15,
        14.12,
        7.23,
        0.38,
        0,
        0,
        0,
        0,
        0,
        0,
        0.77,
        5.81
      ],
      "name": "Days with snow depth GE 5 cm",
      "normal_id": 77,
      "years": 25
    },
    {
      "annual": 24.47,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        9.8,
        7.24,
        4.12,
        0.08,
        0,
        0,
        0,
        0,
        0,
        0,
        0.46,
        2.77
      ],
      "name": "Days with snow depth GE 10 cm",
      "normal_id": 78,
      "years": 25
    },
    {
      "annual": 5.17,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        1.88,
        1.56,
        0.81,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0.04,
        0.88
      ],
      "name": "Days with snow depth GE 20 cm",
      "normal_id": 79,
      "years": 25
    },
    {
      "annual": 0.2,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        0.2,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "name": "Days with snow depth GE 50 cm",
      "normal_id": 80,
      "years": 25
    },
    {
      "annual": 0,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "name": "Days with snow depth GE 100 cm",
      "normal_id": 81,
      "years": 25
    },
    {
      "annual": 1.32,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        6.81,
        4.88,
        0.5,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        3.62
      ],
      "name": "Mean month end snow depth cm",
      "normal_id": 82,
      "years": 26
    },
    {
      "annual": 3.45,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        1.27,
        0.92,
        0.5,
        0.23,
        0,
        0,
        0,
        0,
        0,
        0,
        0.15,
        0.38
      ],
      "name": "Days with freezing rain or freezing drizzle",
      "normal_id": 83,
      "years": 26
    },
    {
      "annual": 20.96,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        0.31,
        0.23,
        0.5,
        1.69,
        2.83,
        3.78,
        4.14,
        3.23,
        2.59,
        0.85,
        0.5,
        0.31
      ],
      "name": "Days with thunderstorms",
      "normal_id": 84,
      "years": 26
    },
    {
      "annual": 0.3,
      "code": "A",
      "date": null,
      "first_year": 1981,
      "last_year": 2006,
      "monthly": [
        0,
        0,
        0,
        0.08,
        0.09,
        0.09,
        0,
        0,
        0,
        0.04,
        0,
        0
      ],
      "name": "Days with hail",
      "normal_id": 85,
      "years": 26
    },
    {
      "annual": 2066.26,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2001,
      "monthly": [
        85.85,
        111.29,
        161.02,
        179.98,
        227.69,
        259.57,
        279.63,
        245.55,
        194.38,
        154.3,
        88.92,
        78.08
      ],
      "name": "Total hours bright sunshine",
      "normal_id": 102,
      "years": 21
    },
    {
      "annual": 304.8,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2001,
      "monthly": [
        21.19,
        21.29,
        25.14,
        26.42,
        28.26,
        28.2,
        30.05,
        29.45,
        27.15,
        27.4,
        20.55,
        19.7
      ],
      "name": "Days with measurable bright sunshine",
      "normal_id": 103,
      "years": 21
    },
    {
      "annual": 44.47,
      "code": "C",
      "date": null,
      "first_year": 1981,
      "last_year": 2001,
      "monthly": [
        29.67,
        37.68,
        43.63,
        44.75,
        49.96,
        56.26,
        59.81,
        56.68,
        51.67,
        45.06,
        30.51,
        27.99
      ],
      "name": "Percent of daylight hours based on civil sunrise/sunset",
      "normal_id": 105,
      "years": 21
    },
    {
      "annual": 4720.22,
      "code": "D",
      "date": null,
      "first_year": 1981,
      "last_year": 2000,
      "monthly": [
        150.42,
        227.18,
        382.5,
        472.66,
        604.56,
        651.05,
        674.56,
        577.31,
        421.73,
        286.21,
        150.57,
        121.47
      ],
      "name": "Total hourly global solar radiation RF1 mJ/m^2",
      "normal_id": 106,
      "years": 17
    }
  ],
  "lang": "en",
  "licence_url": "https://eccc-msc.github.io/open-data/licence/readme_en/",
  "observed_at_ms": 1792969238103,
  "period": "1981-2010",
  "source_url": "https://api.weather.gc.ca/collections/climate-normals/items?f=json&CLIMATE_IDENTIFIER=6158350&skipGeometry=true&limit=3000",
  "station": {
    "climate_id": "6158350",
    "daily_first_date": "1840-03-01",
    "daily_last_date": "2017-04-27",
    "distance_km": null,
    "elevation_m": 112.5,
    "first_date": "1840-01-01",
    "has_hourly": true,
    "has_monthly_summary": true,
    "has_normals": true,
    "hourly_first_date": "1953-01-01",
    "hourly_last_date": "1969-05-31",
    "last_date": "2017-04-27",
    "latitude": 43.666666666666664,
    "longitude": -79.4,
    "monthly_first_date": "1840-01-01",
    "monthly_last_date": "2006-12-01",
    "name": "TORONTO",
    "operator": "Co-operative Climate Network",
    "province": "ON",
    "province_name": "ONTARIO",
    "station_id": 5051,
    "tc_id": null,
    "timezone": "EST",
    "wmo_id": "71266"
  }
}
```

### Climate stations

- Capability: `weather/climate_stations`
- Description: Search ECCC climate stations (the station list behind climate.weather.gc.ca historical data and normals): by climate_id, by part of the station name (query), by province, near lat/lon within radius_km (sorted by distance), and only stations with 1981-2010 normals (has_normals) or hourly data (has_hourly). Returns Climate ID, station id, coordinates, elevation and the first/last dates of daily, monthly and hourly data. An unknown climate_id is not_found; a search with no match is an empty list.
- Instructions: Find the Climate ID for climate_daily, climate_monthly or climate_normals, or see which stations have data for a period.
- Cost: 5 credits per call
- Capability file: [Climate stations](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/climate_stations)

Accepted options:
- `climate_id` (string): ECCC Climate ID of a climate station (7 characters, e.g. 6158355 TORONTO CITY, 6158350 TORONTO, 1108447 VANCOUVER INTL A). Find ids with climate_stations. Pattern: ^[0-9A-Za-z]+$. Example: `<climate_id>`
- `has_hourly` (boolean): has_hourly Example: `false`
- `has_normals` (boolean): has_normals Example: `false`
- `lang` (string): Language of names and texts: en (English) or fr (French). Numbers are the same in both. Example: `en`
- `lat` (number): Latitude in decimal degrees (Canada spans about 41 to 84). Give with lon. Example: `10`
- `limit` (number): limit Example: `25`
- `lon` (number): Longitude in decimal degrees, west negative (Canada spans about -142 to -52). Give with lat. Example: `10`
- `offset` (number): offset Example: `0`
- `province` (string): Two-letter province or territory code. Pattern: ^[A-Za-z]{2}$. Example: `<province>`
- `query` (string): Part of the station name, e.g. toronto city, vancouver intl. Example: `<query>`
- `radius_km` (number): radius_km Example: `25`

Response schema example:
```json
{
  "attribution": "Data Source: Environment and Climate Change Canada",
  "count": 3,
  "lang": "en",
  "licence_url": "https://eccc-msc.github.io/open-data/licence/readme_en/",
  "next_offset": null,
  "observed_at_ms": 1792969237514,
  "offset": 0,
  "source_url": "https://api.weather.gc.ca/collections/climate-stations/items?f=json&STATION_NAME=TORONTO+CITY&sortby=STATION_NAME&limit=25&offset=0",
  "stations": [
    {
      "climate_id": "6158355",
      "daily_first_date": "2002-06-04",
      "daily_last_date": "2026-10-23",
      "distance_km": null,
      "elevation_m": 112.5,
      "first_date": "2002-06-04",
      "has_hourly": true,
      "has_monthly_summary": true,
      "has_normals": false,
      "hourly_first_date": "2002-06-04",
      "hourly_last_date": "2026-10-23",
      "last_date": "2026-10-23",
      "latitude": 43.666666666666664,
      "longitude": -79.4,
      "monthly_first_date": "2003-07-01",
      "monthly_last_date": "2006-12-01",
      "name": "TORONTO CITY",
      "operator": "Environment and Climate Change Canada - Meteorological Service of Canada",
      "province": "ON",
      "province_name": "ONTARIO",
      "station_id": 31688,
      "tc_id": "XTO",
      "timezone": "EST",
      "wmo_id": "71508"
    },
    {
      "climate_id": "6158667",
      "daily_first_date": "2006-01-01",
      "daily_last_date": "2014-07-22",
      "distance_km": null,
      "elevation_m": 76.8,
      "first_date": "2006-01-01",
      "has_hourly": true,
      "has_monthly_summary": true,
      "has_normals": false,
      "hourly_first_date": "2006-01-01",
      "hourly_last_date": "2010-03-02",
      "last_date": "2014-07-22",
      "latitude": 43.62861111111111,
      "longitude": -79.395,
      "monthly_first_date": "2006-04-01",
      "monthly_last_date": "2006-12-01",
      "name": "TORONTO CITY CENTRE",
      "operator": null,
      "province": "ON",
      "province_name": "ONTARIO",
      "station_id": 30247,
      "tc_id": "YTZ",
      "timezone": "EST",
      "wmo_id": "71265"
    },
    {
      "climate_id": "6158359",
      "daily_first_date": "2010-02-02",
      "daily_last_date": "2026-10-23",
      "distance_km": null,
      "elevation_m": 76.8,
      "first_date": "2009-12-10",
      "has_hourly": true,
      "has_monthly_summary": true,
      "has_normals": false,
      "hourly_first_date": "2009-12-10",
      "hourly_last_date": "2026-10-23",
      "last_date": "2026-10-23",
      "latitude": 43.6275,
      "longitude": -79.39611111111111,
      "monthly_first_date": null,
      "monthly_last_date": null,
      "name": "TORONTO CITY CENTRE",
      "operator": "NAV Canada",
      "province": "ON",
      "province_name": "ONTARIO",
      "station_id": 48549,
      "tc_id": "YTZ",
      "timezone": "EST",
      "wmo_id": "71265"
    }
  ],
  "total": 3
}
```

### Find cities

- Capability: `weather/find_cities`
- Description: Find ECCC city forecast locations (the ids city_weather and weather_alerts take) by name or near a point. query searches names and forecast regions (English or French) and ranks exact, prefix and contains name matches first; lat/lon lists locations within radius_km sorted by distance. province narrows either. A name query with no match is not_found; a point with no location in range returns an empty list.
- Instructions: Before city_weather when the user names a place loosely or you need every forecast location near a point.
- Cost: 5 credits per call
- Capability file: [Find cities](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/find_cities)

Accepted options:
- `lang` (string): Language of names and texts: en (English) or fr (French). Numbers are the same in both. Example: `en`
- `lat` (number): Latitude in decimal degrees (Canada spans about 41 to 84). Give with lon. Example: `10`
- `limit` (number): limit Example: `10`
- `lon` (number): Longitude in decimal degrees, west negative (Canada spans about -142 to -52). Give with lat. Example: `10`
- `province` (string): Two-letter province or territory code (ON, QC, BC, AB, MB, SK, NS, NB, NL, PE, YT, NT, NU). Pattern: ^[A-Za-z]{2}$. Example: `<province>`
- `query` (string): Place name, English or French. Example: `<query>`
- `radius_km` (number): Search radius around lat/lon. Example: `50`

Response schema example:
```json
{
  "attribution": "Data Source: Environment and Climate Change Canada",
  "cities": [
    {
      "distance_km": null,
      "id": "on-143",
      "latitude": 43.65,
      "longitude": -79.38,
      "name": "Toronto",
      "province": "ON",
      "region": "City of Toronto",
      "url": "https://weather.gc.ca/en/location/index.html?coords=43.65,-79.38"
    },
    {
      "distance_km": null,
      "id": "on-128",
      "latitude": 43.63,
      "longitude": -79.39,
      "name": "Toronto Island",
      "province": "ON",
      "region": "City of Toronto",
      "url": "https://weather.gc.ca/en/location/index.html?coords=43.63,-79.39"
    },
    {
      "distance_km": null,
      "id": "on-4",
      "latitude": 43.69,
      "longitude": -79.76,
      "name": "Brampton",
      "province": "ON",
      "region": "Mississauga - Brampton",
      "url": "https://weather.gc.ca/en/location/index.html?coords=43.69,-79.76"
    },
    {
      "distance_km": null,
      "id": "on-85",
      "latitude": 43.88,
      "longitude": -79.26,
      "name": "Markham",
      "province": "ON",
      "region": "Vaughan - Richmond Hill - Markham",
      "url": "https://weather.gc.ca/en/location/index.html?coords=43.88,-79.26"
    },
    {
      "distance_km": null,
      "id": "on-32",
      "latitude": 43.87,
      "longitude": -79.86,
      "name": "Caledon",
      "province": "ON",
      "region": "Caledon",
      "url": "https://weather.gc.ca/en/location/index.html?coords=43.87,-79.86"
    },
    {
      "distance_km": null,
      "id": "on-68",
      "latitude": 43.63,
      "longitude": -79.95,
      "name": "Halton Hills",
      "province": "ON",
      "region": "Halton Hills - Milton",
      "url": "https://weather.gc.ca/en/location/index.html?coords=43.63,-79.95"
    },
    {
      "distance_km": null,
      "id": "on-24",
      "latitude": 43.59,
      "longitude": -79.66,
      "name": "Mississauga",
      "province": "ON",
      "region": "Mississauga - Brampton",
      "url": "https://weather.gc.ca/en/location/index.html?coords=43.59,-79.66"
    }
  ],
  "count": 7,
  "lang": "en",
  "licence_url": "https://eccc-msc.github.io/open-data/licence/readme_en/",
  "observed_at_ms": 1792969237243,
  "query": "Toronto",
  "source_url": "https://api.weather.gc.ca/collections/citypageweather-realtime/items?f=json&q=Toronto&limit=50",
  "total": 7
}
```

### Marine forecast

- Capability: `weather/marine_forecast`
- Description: ECCC marine forecast and warnings for one marine area (weather.gc.ca/marine): regular forecast per sub-area (winds, weather and visibility, air temperature, freezing spray), the extended forecast, the wave forecast where issued, and marine warnings in effect. Choose by area_id or by lat/lon on the water (the containing area). An unknown area_id is not_found.
- Instructions: Boating or shipping weather on Canadian coastal waters and the Great Lakes.
- Cost: 5 credits per call
- Capability file: [Marine forecast](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/marine_forecast)

Accepted options:
- `area_id` (string): Marine area id, e.g. m0000028 Strait of Georgia, m0000144 Lake Ontario, m0000053 Halifax Harbour; or use lat/lon. Pattern: ^[mM][0-9]{7}$. Example: `<area_id>`
- `lang` (string): Language of names and texts: en (English) or fr (French). Numbers are the same in both. Example: `en`
- `lat` (number): Latitude in decimal degrees (Canada spans about 41 to 84). Give with lon. Example: `10`
- `lon` (number): Longitude in decimal degrees, west negative (Canada spans about -142 to -52). Give with lat. Example: `10`

Response schema example:
```json
{
  "area": {
    "country": "CA",
    "id": "m0000028",
    "name": "Strait of Georgia",
    "region": "Pacific Coast",
    "sub_region": "Georgia Basin"
  },
  "attribution": "Data Source: Environment and Climate Change Canada",
  "extended_forecast": {
    "issued_at": "2026-10-25T23:00:00Z",
    "issued_at_local": "2026-10-25T16:00:00-07:00",
    "locations": [
      {
        "name": null,
        "periods": [
          {
            "name": "Tuesday",
            "text": "Wind northwest 10 to 20 knots becoming  southeast 10 to 20 in the afternoon."
          },
          {
            "name": "Wednesday",
            "text": "Wind northwest 5 to 15 knots becoming  southeast 10 to 20."
          },
          {
            "name": "Thursday",
            "text": "Wind east 10 to 20 knots backing to northerly  5 to 15 late in the day."
          }
        ]
      }
    ]
  },
  "lang": "en",
  "last_updated": "2026-10-25T22:55:26Z",
  "licence_url": "https://eccc-msc.github.io/open-data/licence/readme_en/",
  "observed_at_ms": 1792969238535,
  "other_area_ids": [],
  "regular_forecast": {
    "issued_at": "2026-10-25T17:30:00Z",
    "issued_at_local": "2026-10-25T10:30:00-07:00",
    "locations": [
      {
        "air_temperature": null,
        "freezing_spray": null,
        "name": "Strait of Georgia - north of Nanaimo",
        "period_of_coverage": "Today Tonight and Monday.",
        "status": null,
        "weather_visibility": "Showers ending Monday morning.",
        "wind": "Wind southeast 10 to 20 knots except north 5 to 15 over northern sections. Wind becoming northwest 5 to 15 this afternoon. Wind northwest 5 to 15 tonight and Monday."
      },
      {
        "air_temperature": null,
        "freezing_spray": null,
        "name": "Strait of Georgia - south of Nanaimo",
        "period_of_coverage": "Today Tonight and Monday.",
        "status": null,
        "weather_visibility": "Showers ending Monday morning.",
        "wind": "Wind easterly 15 to 25 knots becoming easterly 10 to 20 this afternoon then becoming northwest 10 to 20 near midnight. Wind diminishing to light Monday evening."
      }
    ]
  },
  "source_url": "https://api.weather.gc.ca/collections/marineweather-realtime/items/m0000028?f=json",
  "warnings": [
    {
      "category": "marine",
      "location": "Strait of Georgia - south of Nanaimo",
      "name": "Strong wind warning",
      "status": "IN EFFECT",
      "type": "warning"
    }
  ],
  "wave_forecast": null
}
```

### Weather alerts

- Capability: `weather/weather_alerts`
- Description: Active ECCC public weather alerts (warnings, watches, advisories and statements, the data behind weather.gc.ca/warnings) for a city page (city_id), a point (lat/lon: alerts whose area contains it), a province or territory, or all of Canada when no selector is given. Alert text is returned exactly as issued, as the ECCC licence requires. Ended alerts are dropped unless include_ended. No alert in effect is an empty list; an unknown city_id is not_found.
- Instructions: Is there a weather warning for this place or province right now.
- Cost: 5 credits per call
- Capability file: [Weather alerts](https://firecrawl.dev/alexandria/agents/providers/api-weather-gc-ca/weather/weather_alerts)

Accepted options:
- `city_id` (string): ECCC city page id, province code plus number: on-143 Toronto, qc-147 Montreal, bc-74 Vancouver, ab-52 Calgary, ns-19 Halifax. Find ids with find_cities. Pattern: ^[A-Za-z]{2}-[0-9A-Za-z]+$. Example: `<city_id>`
- `include_ended` (boolean): Keep alerts ECCC has marked ended. Example: `false`
- `lang` (string): Language of names and texts: en (English) or fr (French). Numbers are the same in both. Example: `en`
- `lat` (number): Latitude in decimal degrees (Canada spans about 41 to 84). Give with lon. Example: `10`
- `lon` (number): Longitude in decimal degrees, west negative (Canada spans about -142 to -52). Give with lat. Example: `10`
- `province` (string): Two-letter province or territory code. Pattern: ^[A-Za-z]{2}$. Example: `<province>`

Response schema example:
```json
{
  "alerts": [
    {
      "area": "Akulivik",
      "area_id": "fea1-1092",
      "code": "WDW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-25T21:15:00.000Z",
      "event_end_at": "2026-10-26T06:00:00.000Z",
      "expires_at": "2026-10-26T08:02:09.043Z",
      "id": "80754585727344543202610240504_fea1-1092",
      "impact": "Moderate",
      "name": "wind warning",
      "province": "QC",
      "published_at": "2026-10-25T21:25:09.043Z",
      "short_name": "Wind",
      "status": "continued",
      "status_code": "continued",
      "text": "What: High northwesterly winds gusting up to 90 kilometres per hour\n\nWhen: This evening\n\nAdditional information:\nWinds will gradually weaken overnight tonight.\n\nLocal utility outages are possible. Some property damage is possible.\n\nSecure loose objects.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to QCstorm@ec.gc.ca or post reports on social media using #QCStorm.",
      "type": "warning"
    },
    {
      "area": "Puvirnituq",
      "area_id": "fea1-1093",
      "code": "WDW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-25T21:15:00.000Z",
      "event_end_at": "2026-10-26T06:00:00.000Z",
      "expires_at": "2026-10-26T08:02:09.043Z",
      "id": "80754585727344543202610240504_fea1-1093",
      "impact": "Moderate",
      "name": "wind warning",
      "province": "QC",
      "published_at": "2026-10-25T21:25:09.043Z",
      "short_name": "Wind",
      "status": "continued",
      "status_code": "continued",
      "text": "What: High northwesterly winds gusting up to 90 kilometres per hour\n\nWhen: This evening\n\nAdditional information:\nWinds will gradually weaken overnight tonight.\n\nLocal utility outages are possible. Some property damage is possible.\n\nSecure loose objects.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to QCstorm@ec.gc.ca or post reports on social media using #QCStorm.",
      "type": "warning"
    },
    {
      "area": "Schefferville",
      "area_id": "fea1-984",
      "code": "WDW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-25T21:21:00.000Z",
      "event_end_at": "2026-10-26T11:21:00.000Z",
      "expires_at": "2026-10-26T13:22:37.019Z",
      "id": "164838122102965285202610250504_fea1-984",
      "impact": "Moderate",
      "name": "wind warning",
      "province": "QC",
      "published_at": "2026-10-25T21:24:37.019Z",
      "short_name": "Wind",
      "status": "continued",
      "status_code": "continued",
      "text": "What: High westerly winds gusting up to 90 kilometres per hour\n\nWhen: This evening\n\nAdditional information:\nWinds will gradually weaken overnight tonight.\n\nLocal utility outages are possible.\n\nSecure loose objects.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to QCstorm@ec.gc.ca or post reports on social media using #QCStorm.",
      "type": "warning"
    },
    {
      "area": "Kangiqsujuaq - Raglan Lake",
      "area_id": "fea1-1099",
      "code": "WDW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-26T16:00:00.000Z",
      "event_end_at": "2026-10-27T11:00:00.000Z",
      "expires_at": "2026-10-26T13:24:18.999Z",
      "id": "163551526102965285202610250504_fea1-1099",
      "impact": "Moderate",
      "name": "wind warning",
      "province": "QC",
      "published_at": "2026-10-25T21:24:18.999Z",
      "short_name": "Wind",
      "status": "issued",
      "status_code": "issued",
      "text": "What: High northwesterly winds gusting up to 90 kilometres per hour\n\nWhen: Monday\n\nAdditional information:\nWinds will gradually ease overnight Monday night\n\nLocal utility outages are possible. Disruptions to services and travel are possible.\n\nSecure loose objects.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to QCstorm@ec.gc.ca or post reports on social media using #QCStorm.",
      "type": "warning"
    },
    {
      "area": "Quaqtaq",
      "area_id": "fea1-1100",
      "code": "WDW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-26T16:00:00.000Z",
      "event_end_at": "2026-10-27T11:00:00.000Z",
      "expires_at": "2026-10-26T13:24:18.999Z",
      "id": "163551526102965285202610250504_fea1-1100",
      "impact": "Moderate",
      "name": "wind warning",
      "province": "QC",
      "published_at": "2026-10-25T21:24:18.999Z",
      "short_name": "Wind",
      "status": "issued",
      "status_code": "issued",
      "text": "What: High northwesterly winds gusting up to 90 kilometres per hour\n\nWhen: Monday\n\nAdditional information:\nWinds will gradually ease overnight Monday night\n\nLocal utility outages are possible. Disruptions to services and travel are possible.\n\nSecure loose objects.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to QCstorm@ec.gc.ca or post reports on social media using #QCStorm.",
      "type": "warning"
    },
    {
      "area": "Kangirsuk",
      "area_id": "fea1-1101",
      "code": "WDW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-26T16:00:00.000Z",
      "event_end_at": "2026-10-27T11:00:00.000Z",
      "expires_at": "2026-10-26T13:24:18.999Z",
      "id": "163551526102965285202610250504_fea1-1101",
      "impact": "Moderate",
      "name": "wind warning",
      "province": "QC",
      "published_at": "2026-10-25T21:24:18.999Z",
      "short_name": "Wind",
      "status": "issued",
      "status_code": "issued",
      "text": "What: High northwesterly winds gusting up to 90 kilometres per hour\n\nWhen: Monday\n\nAdditional information:\nWinds will gradually ease overnight Monday night\n\nLocal utility outages are possible. Disruptions to services and travel are possible.\n\nSecure loose objects.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to QCstorm@ec.gc.ca or post reports on social media using #QCStorm.",
      "type": "warning"
    },
    {
      "area": "Aupaluk",
      "area_id": "fea1-1102",
      "code": "WDW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-26T16:00:00.000Z",
      "event_end_at": "2026-10-27T11:00:00.000Z",
      "expires_at": "2026-10-26T13:24:18.999Z",
      "id": "163551526102965285202610250504_fea1-1102",
      "impact": "Moderate",
      "name": "wind warning",
      "province": "QC",
      "published_at": "2026-10-25T21:24:18.999Z",
      "short_name": "Wind",
      "status": "issued",
      "status_code": "issued",
      "text": "What: High northwesterly winds gusting up to 90 kilometres per hour\n\nWhen: Monday\n\nAdditional information:\nWinds will gradually ease overnight Monday night\n\nLocal utility outages are possible. Disruptions to services and travel are possible.\n\nSecure loose objects.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to QCstorm@ec.gc.ca or post reports on social media using #QCStorm.",
      "type": "warning"
    },
    {
      "area": "Tasiujaq",
      "area_id": "fea1-1103",
      "code": "WDW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-26T16:00:00.000Z",
      "event_end_at": "2026-10-27T11:00:00.000Z",
      "expires_at": "2026-10-26T13:24:18.999Z",
      "id": "163551526102965285202610250504_fea1-1103",
      "impact": "Moderate",
      "name": "wind warning",
      "province": "QC",
      "published_at": "2026-10-25T21:24:18.999Z",
      "short_name": "Wind",
      "status": "issued",
      "status_code": "issued",
      "text": "What: High northwesterly winds gusting up to 90 kilometres per hour\n\nWhen: Monday\n\nAdditional information:\nWinds will gradually ease overnight Monday night\n\nLocal utility outages are possible. Disruptions to services and travel are possible.\n\nSecure loose objects.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to QCstorm@ec.gc.ca or post reports on social media using #QCStorm.",
      "type": "warning"
    },
    {
      "area": "Ivujivik",
      "area_id": "fea1-1091",
      "code": "BZW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-25T20:35:00.000Z",
      "event_end_at": "2026-10-26T14:03:00.000Z",
      "expires_at": "2026-10-26T12:40:20.165Z",
      "id": "203631065102965285202610250504_fea1-1091",
      "impact": "Moderate",
      "name": "blizzard warning",
      "province": "QC",
      "published_at": "2026-10-25T20:40:20.165Z",
      "short_name": "Blizzard",
      "status": "issued",
      "status_code": "issued",
      "text": "What: blizzard conditions with poor visibilities in blowing snow are expected.\n\nWhen: Tonight\n\nAdditional information:\nConditions will improve gradually tomorrow.\n\nTravel will likely be hazardous.\n\nLimit travel and outdoor activities, if possible.\n\nBlizzard warnings are issued when widespread poor visibility in blowing snow is expected.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to QCstorm@ec.gc.ca or post reports on social media using #QCStorm.",
      "type": "warning"
    },
    {
      "area": "Salluit",
      "area_id": "fea1-1098",
      "code": "BZW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-25T20:35:00.000Z",
      "event_end_at": "2026-10-26T14:03:00.000Z",
      "expires_at": "2026-10-26T12:40:20.165Z",
      "id": "203631065102965285202610250504_fea1-1098",
      "impact": "Moderate",
      "name": "blizzard warning",
      "province": "QC",
      "published_at": "2026-10-25T20:40:20.165Z",
      "short_name": "Blizzard",
      "status": "issued",
      "status_code": "issued",
      "text": "What: blizzard conditions with poor visibilities in blowing snow are expected.\n\nWhen: Tonight\n\nAdditional information:\nConditions will improve gradually tomorrow.\n\nTravel will likely be hazardous.\n\nLimit travel and outdoor activities, if possible.\n\nBlizzard warnings are issued when widespread poor visibility in blowing snow is expected.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to QCstorm@ec.gc.ca or post reports on social media using #QCStorm.",
      "type": "warning"
    },
    {
      "area": "Northern Peninsula East",
      "area_id": "fea1-878",
      "code": "WDW",
      "colour": "yellow",
      "confidence": "High",
      "effective_at": "2026-10-26T00:00:00.000Z",
      "event_end_at": "2026-10-26T06:00:00.000Z",
      "expires_at": "2026-10-26T08:00:57.942Z",
      "id": "1608102061545548275202610240507_fea1-878",
      "impact": "Moderate",
      "name": "wind warning",
      "province": "NL",
      "published_at": "2026-10-25T18:36:57.942Z",
      "short_name": "Wind",
      "status": "continued",
      "status_code": "continued",
      "text": "Damaging winds are expected.\n\nLocations: Northern Peninsula East.\n\nMaximum wind gusts: westerly 80 km/h, except 110 in the Canada Bay area.\n\nTime span: later this evening until after midnight.\n\nLocal utility outages are possible.\n\nSecure loose objects.\n\nWind warnings are issued when there is a significant risk of damaging winds.\n\nPlease continue to monitor alerts and forecasts issued by Environment Canada. To report severe weather, send an email to NLstorm@ec.gc.ca or post reports on social media using #NLwx.",
      "type": "warning"
    }
  ],
  "attribution": "Data Source: Environment and Climate Change Canada",
  "city": null,
  "count": 11,
  "lang": "en",
  "licence_url": "https://eccc-msc.github.io/open-data/licence/readme_en/",
  "observed_at_ms": 1792969237389,
  "scope": "canada",
  "source_url": "https://api.weather.gc.ca/collections/weather-alerts/items?f=json&limit=1000"
}
```
