Skip to content
Eden Engine

Historical Daily High Temperature by Airport

omnial/get-historical-airport-daily-maxima

Given an airport's ICAO station code, a date range (up to 31 days), and an IANA timezone, returns each local calendar day's maximum temperature in Celsius, plus how many raw observations backed that maximum and data-quality flags (gap size, duplicate readings, source-verification note). A date range with no recorded observations yet, such as one that hasn't happened yet, comes back as an empty result rather than an error.

activeper callv1
Provider
Web & Business Data Network
Category
weather
Provider price
$0.01365 per call
Latency p50 / p95
— / —
Success rate
—
Verified
—

Provider list price; Omnial MCP charges provider cost plus a platform markup on top.

Contract

input_schema.json
{
  "type": "object",
  "required": [
    "end_date",
    "station_id",
    "timezone_name",
    "start_date"
  ],
  "properties": {
    "end_date": {
      "type": "string",
      "description": "End date in YYYYMMDD format."
    },
    "start_date": {
      "type": "string",
      "description": "Start date in YYYYMMDD format."
    },
    "station_id": {
      "type": "string",
      "description": "Airport station ICAO code (e.g. EFHK, KJFK). Obtain from search endpoint's icaoCode field."
    },
    "country_code": {
      "type": "string",
      "description": "Two-letter ISO country code for the station (e.g. FI, US)."
    },
    "timezone_name": {
      "type": "string",
      "description": "IANA timezone name for local date grouping (e.g. Europe/Helsinki, America/New_York). DST transitions are handled automatically."
    }
  },
  "additionalProperties": false
}
output_schema.json
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "provenance": {
          "type": "string",
          "description": "How the daily maximum was computed from raw readings, e.g. 'DERIVED_FROM_ROWS' (computed from individual observation rows rather than a pre-aggregated daily summary the upstream vendor supplied directly)."
        },
        "daily_maxima": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string",
                "description": "Local calendar date, YYYY-MM-DD."
              },
              "max_temp_c": {
                "type": "number",
                "description": "Maximum temperature for the day, Celsius."
              },
              "duplicate_count": {
                "type": "number",
                "description": "Duplicate readings detected and folded into this day's summary."
              },
              "observation_count": {
                "type": "number",
                "description": "How many raw observations were recorded for the day."
              },
              "largest_gap_minutes": {
                "type": "number",
                "description": "Largest gap, in minutes, between consecutive observations that day."
              },
              "max_observed_at_utc": {
                "type": "string",
                "description": "ISO 8601 UTC timestamp of the maximum reading."
              },
              "max_observed_at_local": {
                "type": "string",
                "description": "ISO 8601 timestamp with the station's local UTC offset."
              },
              "last_observed_at_local": {
                "type": "string",
                "description": "ISO 8601 timestamp of the day's last observation, local offset."
              },
              "first_observed_at_local": {
                "type": "string",
                "description": "ISO 8601 timestamp of the day's first observation, local offset."
              }
            },
            "additionalProperties": true
          },
          "description": "One entry per local calendar day in the requested range."
        },
        "data_source_note": {
          "type": "string",
          "description": "A data-quality caveat about the underlying observation source, e.g. 'UNVERIFIED_TWC_AIRPORT_HISTORY_PROXY' -- the historical data has not been independently cross-checked against a second source."
        },
        "request_metadata": {
          "type": "object",
          "properties": {
            "warnings": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Observed as an empty array on the one real call with data; the shape of a populated entry is unconfirmed."
            },
            "row_count": {
              "type": "number",
              "description": "Number of daily entries in daily_maxima."
            },
            "retrieved_at": {
              "type": "string",
              "description": "ISO 8601 UTC timestamp of when the upstream data was fetched."
            },
            "timezone_name": {
              "type": "string",
              "description": "Echoes the input's IANA timezone name."
            },
            "requested_end_date": {
              "type": "string",
              "description": "Echoes the input's end_date, YYYYMMDD."
            },
            "requested_start_date": {
              "type": "string",
              "description": "Echoes the input's start_date, YYYYMMDD."
            }
          },
          "additionalProperties": true
        }
      },
      "description": "Present only when the requested range has recorded observations.",
      "additionalProperties": true
    },
    "status": {
      "type": "string",
      "description": "'success' on the one real call observed that returned data."
    }
  },
  "description": "The daily-maxima record, as returned at routing.responseResultPath. Absent entirely (shapes to {}) for a date range with no observations recorded yet, as observed for a future date range.",
  "additionalProperties": true
}

Pricing

Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.

Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.

ChargeRate
Per call
Flat, regardless of what comes back
$0.01365
Cost basis
Not recorded

This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.

Updated
Sep 15, 2026