Tomorrow.io Historical Weather API

Retrieve historical weather observations and monthly climate normals for any point or polygon on Earth using the same field catalog as the realtime and forecast APIs.

Documentation

Specifications

Other Resources

🔗
APIsJSON
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/apis.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-alert-threshold-tuning-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-decommission-location-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-historical-and-normals-analysis-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-insight-driven-alert-setup-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-insight-scoped-event-query-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-location-severe-weather-events-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-map-tile-precipitation-overlay-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-realtime-then-timelines-deep-dive-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-realtime-vs-climate-normals-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-route-weather-hazard-scan-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-saved-location-realtime-forecast-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tomorrow-io/refs/heads/main/arazzo/tomorrow-io-tag-location-cohort-workflow.yml

OpenAPI Specification

tomorrow-io-historical-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Tomorrow.io Alerts Historical API
  version: '4.0'
  description: 'Create, manage, and trigger weather-based alerts. Alerts evaluate Tomorrow.io

    weather data layers against custom thresholds for one or more linked locations

    and deliver notifications via webhook, email, and the Tomorrow.io app.

    '
  contact:
    name: Tomorrow.io Support
    url: https://support.tomorrow.io
servers:
- url: https://api.tomorrow.io/v4
  description: Tomorrow.io Production
security:
- apikeyAuth: []
tags:
- name: Historical
  description: Retrieve historical weather data and climate normals.
paths:
  /historical:
    post:
      tags:
      - Historical
      summary: Retrieve Historical Timeline
      operationId: postHistorical
      description: 'Retrieve a historical weather timeline for a point, polygon, or polyline

        across a given start and end time window. Supports the full field catalog

        and minute, hour, and day timesteps depending on plan tier.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HistoricalRequest'
      parameters:
      - name: apikey
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Historical timeline payload.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /historical/climate/normals:
    get:
      tags:
      - Historical
      summary: Get Climate Normals
      operationId: getClimateNormals
      description: 'Retrieve monthly climate normals (long-term averages and percentiles) for a

        given point. Useful for benchmarking current conditions against typical

        conditions for the location and season.

        '
      parameters:
      - name: location
        in: query
        required: true
        schema:
          type: string
      - name: fields
        in: query
        schema:
          type: string
      - name: apikey
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Climate normals payload.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClimateNormalsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  responses:
    RateLimited:
      description: Rate limit exceeded for the plan tier.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    ClimateNormalsResponse:
      type: object
      properties:
        location:
          type: object
          properties:
            lat:
              type: number
            lon:
              type: number
        data:
          type: object
          properties:
            months:
              type: array
              items:
                type: object
                properties:
                  month:
                    type: integer
                  values:
                    type: object
                    additionalProperties:
                      type: number
    HistoricalRequest:
      type: object
      required:
      - location
      - fields
      - timesteps
      - startTime
      - endTime
      properties:
        location:
          oneOf:
          - type: string
          - type: object
            description: GeoJSON Point/Polygon/LineString
        fields:
          type: array
          items:
            type: string
        timesteps:
          type: array
          items:
            type: string
            enum:
            - 1m
            - 5m
            - 15m
            - 1h
            - 1d
        startTime:
          type: string
          format: date-time
        endTime:
          type: string
          format: date-time
        units:
          type: string
          enum:
          - metric
          - imperial
        timezone:
          type: string
    ErrorResponse:
      type: object
      properties:
        code:
          type: integer
        type:
          type: string
        message:
          type: string
    HistoricalResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            timelines:
              type: array
              items:
                type: object
                properties:
                  timestep:
                    type: string
                  startTime:
                    type: string
                  endTime:
                    type: string
                  intervals:
                    type: array
                    items:
                      type: object
                      properties:
                        startTime:
                          type: string
                          format: date-time
                        values:
                          type: object
                          additionalProperties: true
  securitySchemes:
    apikeyAuth:
      type: apiKey
      in: query
      name: apikey