WeatherAPI Geo API

Location, IP lookup, timezone, astronomy

OpenAPI Specification

weatherapi-geo-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: WeatherAPI.com Alerts Geo API
  description: 'WeatherAPI.com provides real-time, forecast, historical, marine, future, astronomy, air quality, pollen, sports, IP lookup, timezone, and geolocation data via a JSON/XML REST API. Trusted by 850,000+ developers worldwide. Average response time ~200ms.


    ## Authentication

    All endpoints require an API key passed as the `key` query parameter.


    ## Base URL

    `https://api.weatherapi.com/v1`


    ## Location Query (`q` parameter)

    Accepts: city name, lat/lon decimal, US zip, UK postcode, Canada postal code, METAR code (`metar:EGLL`), IATA airport code (`iata:DXB`), IP lookup (`auto:ip`), IPv4/IPv6 address, or location ID (`id:2801268`).


    ## Plans

    - **Free**: 100K calls/month, 3-day forecast, 1-day history

    - **Starter**: $7/mo — 3M calls, 7-day forecast, 7-day history

    - **Pro+**: $25/mo — 5M calls, 300-day future, 365-day history

    - **Business**: $65/mo — 10M calls, evapotranspiration

    - **Enterprise**: Custom — 15-min interval, pollen history, wind@100m, SLA'
  version: 1.0.2
  contact:
    name: WeatherAPI.com Support
    url: https://www.weatherapi.com/contact.aspx
  license:
    name: Commercial / Non-Commercial
    url: https://www.weatherapi.com/terms.aspx
  x-logo:
    url: https://cdn.weatherapi.com/v4/images/weatherapi_logo.png
  x-last-validated: '2026-05-28'
  x-generated-from: provider-openapi
servers:
- url: https://api.weatherapi.com/v1
  description: Production (HTTPS)
- url: http://api.weatherapi.com/v1
  description: Production (HTTP)
security:
- ApiKeyAuth: []
tags:
- name: Geo
  description: Location, IP lookup, timezone, astronomy
paths:
  /search.json:
    get:
      tags:
      - Geo
      summary: WeatherAPI Search / Autocomplete Locations
      description: Returns matching cities and towns as an array of Location objects. Useful for building autocomplete location pickers.
      operationId: searchLocations
      parameters:
      - $ref: '#/components/parameters/key'
      - name: q
        in: query
        required: true
        description: Partial city name, postcode, or coordinates to search.
        schema:
          type: string
          example: lond
        example: lond
      responses:
        '200':
          description: List of matching locations
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SearchLocation'
              examples:
                SearchLocations200Example:
                  summary: Default searchLocations 200 response
                  x-microcks-default: true
                  value:
                  - id: 2643743
                    name: London
                    region: City of London, Greater London
                    country: United Kingdom
                    lat: 51.5074
                    lon: -0.1278
                    url: sample value
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ip.json:
    get:
      tags:
      - Geo
      summary: WeatherAPI IP Lookup
      description: Returns geolocation and timezone data for a given IPv4 or IPv6 address. Pass `auto:ip` to auto-detect the caller's IP.
      operationId: ipLookup
      parameters:
      - $ref: '#/components/parameters/key'
      - name: q
        in: query
        required: true
        description: IPv4, IPv6 address, or `auto:ip` for caller's IP.
        schema:
          type: string
          example: auto:ip
        example: auto:ip
      responses:
        '200':
          description: IP geolocation data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IpLookupResponse'
              examples:
                IpLookup200Example:
                  summary: Default ipLookup 200 response
                  x-microcks-default: true
                  value:
                    ip: sample value
                    type: ipv4
                    continent_code: EGLL
                    continent_name: EU
                    country_code: United Kingdom
                    country_name: United Kingdom
                    is_eu: false
                    geoname_id: sample value
                    city: sample value
                    region: City of London, Greater London
                    lat: 51.5074
                    lon: -0.1278
                    tz_id: Europe/London
                    localtime_epoch: 1748441400
                    localtime: 2026-05-28 15:30
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /timezone.json:
    get:
      tags:
      - Geo
      summary: WeatherAPI Time Zone
      description: Returns the local time and timezone information for a given location.
      operationId: getTimezone
      parameters:
      - $ref: '#/components/parameters/key'
      - $ref: '#/components/parameters/q'
      responses:
        '200':
          description: Timezone data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimezoneResponse'
              examples:
                GetTimezone200Example:
                  summary: Default getTimezone 200 response
                  x-microcks-default: true
                  value:
                    location:
                      name: London
                      region: City of London, Greater London
                      country: United Kingdom
                      lat: 51.5074
                      lon: -0.1278
                      tz_id: Europe/London
                      localtime_epoch: 1748441400
                      localtime: 2026-05-28 15:30
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /astronomy.json:
    get:
      tags:
      - Geo
      summary: WeatherAPI Astronomy
      description: Returns sunrise, sunset, moonrise, moonset, moon phase, and moon illumination for a given location and date.
      operationId: getAstronomy
      parameters:
      - $ref: '#/components/parameters/key'
      - $ref: '#/components/parameters/q'
      - name: dt
        in: query
        required: true
        description: Date in yyyy-MM-dd format.
        schema:
          type: string
          format: date
          example: '2026-03-20'
        example: '2026-03-20'
      responses:
        '200':
          description: Astronomy data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AstronomyResponse'
              examples:
                GetAstronomy200Example:
                  summary: Default getAstronomy 200 response
                  x-microcks-default: true
                  value:
                    location:
                      name: London
                      region: City of London, Greater London
                      country: United Kingdom
                      lat: 51.5074
                      lon: -0.1278
                      tz_id: Europe/London
                      localtime_epoch: 1748441400
                      localtime: 2026-05-28 15:30
                    astronomy:
                      astro:
                        sunrise: 05:30 AM
                        sunset: 08:45 PM
                        moonrise: 10:15 PM
                        moonset: 06:42 AM
                        moon_phase: Waxing Crescent
                        moon_illumination: 35.0
                        is_moon_up: 1
                        is_sun_up: 1
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  parameters:
    q:
      name: q
      in: query
      required: true
      description: 'Location query. Accepts: city name, lat/lon, US zip, UK postcode, Canada postal code, METAR code (metar:EGLL), IATA (iata:DXB), auto:ip, IPv4/IPv6, or location ID (id:2801268).'
      schema:
        type: string
        example: London
    key:
      name: key
      in: query
      required: true
      description: Your WeatherAPI.com API key.
      schema:
        type: string
        example: YOUR_API_KEY
  schemas:
    Location:
      type: object
      description: Location metadata returned with every weather response.
      properties:
        name:
          type: string
          description: Location name
          example: London
        region:
          type: string
          description: Region or state
          example: City of London, Greater London
        country:
          type: string
          description: Country name
          example: United Kingdom
        lat:
          type: number
          format: float
          description: Latitude
          example: 51.5074
        lon:
          type: number
          format: float
          description: Longitude
          example: -0.1278
        tz_id:
          type: string
          description: IANA timezone ID, e.g. Europe/London
          example: Europe/London
        localtime_epoch:
          type: integer
          description: Local time as Unix epoch
          example: 1748441400
        localtime:
          type: string
          description: Local date and time string
          example: 2026-05-28 15:30
    SearchLocation:
      type: object
      properties:
        id:
          type: integer
          example: 2643743
        name:
          type: string
          example: London
        region:
          type: string
          example: City of London, Greater London
        country:
          type: string
          example: United Kingdom
        lat:
          type: number
          example: 51.5074
        lon:
          type: number
          example: -0.1278
        url:
          type: string
          description: URL-safe location slug
          example: sample value
    AstronomyResponse:
      type: object
      properties:
        location:
          $ref: '#/components/schemas/Location'
        astronomy:
          type: object
          properties:
            astro:
              $ref: '#/components/schemas/AstroElement'
    TimezoneResponse:
      type: object
      properties:
        location:
          $ref: '#/components/schemas/Location'
    IpLookupResponse:
      type: object
      properties:
        ip:
          type: string
          example: sample value
        type:
          type: string
          enum:
          - ipv4
          - ipv6
          example: ipv4
        continent_code:
          type: string
          example: EGLL
        continent_name:
          type: string
          example: EU
        country_code:
          type: string
          example: United Kingdom
        country_name:
          type: string
          example: United Kingdom
        is_eu:
          type: boolean
          example: false
        geoname_id:
          type: string
          example: sample value
        city:
          type: string
          example: sample value
        region:
          type: string
          example: City of London, Greater London
        lat:
          type: number
          example: 51.5074
        lon:
          type: number
          example: -0.1278
        tz_id:
          type: string
          example: Europe/London
        localtime_epoch:
          type: integer
          example: 1748441400
        localtime:
          type: string
          example: 2026-05-28 15:30
    AstroElement:
      type: object
      properties:
        sunrise:
          type: string
          example: 05:30 AM
        sunset:
          type: string
          example: 08:45 PM
        moonrise:
          type: string
          example: 10:15 PM
        moonset:
          type: string
          example: 06:42 AM
        moon_phase:
          type: string
          example: Waxing Crescent
        moon_illumination:
          type: number
          example: 35.0
        is_moon_up:
          type: integer
          example: 1
        is_sun_up:
          type: integer
          example: 1
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: integer
              description: WeatherAPI error code
            message:
              type: string
      example:
        error:
          code: 1006
          message: No location found matching parameter 'q'
  responses:
    Unauthorized:
      description: Unauthorized — API key missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Bad request — invalid parameter or location not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: key
      description: API key obtained from https://www.weatherapi.com/my/. Pass as `?key=YOUR_API_KEY` query parameter.
externalDocs:
  description: Official WeatherAPI.com Documentation
  url: https://www.weatherapi.com/docs/