World Air Quality Index (WAQI) Map API

Map tile and station boundary queries

OpenAPI Specification

waqi-map-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: World Air Quality Index (WAQI) JSON Feed Map API
  description: The WAQI JSON API provides real-time air quality data, AQI readings, pollutant measurements, and station data for more than 12,000 monitoring stations worldwide. It delivers city-level and station-level air quality index values for pollutants including PM2.5, PM10, NO2, CO, SO2, and Ozone, along with geo-location queries, weather conditions, and 3-8 day forecast data. Authentication requires a free token obtained from the Air Quality Open Data Platform.
  version: 1.0.0
  contact:
    name: WAQI Support
    url: https://aqicn.org/api/
  license:
    name: Non-Commercial Use
    url: https://aqicn.org/api/
  termsOfService: https://aqicn.org/api/
servers:
- url: https://api.waqi.info
  description: WAQI Production API
security:
- tokenAuth: []
tags:
- name: Map
  description: Map tile and station boundary queries
paths:
  /map/bounds/:
    get:
      operationId: getMapBounds
      summary: Get monitoring stations within geographic bounds
      description: Returns all monitoring stations within a specified rectangular geographic bounding box, suitable for map display. Supports filtering by network (network parameter).
      tags:
      - Map
      parameters:
      - name: latlng
        in: query
        required: true
        description: 'Bounding box as a comma-separated string in the format: lat_north,lng_west,lat_south,lng_east.'
        schema:
          type: string
          pattern: ^-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?$
          example: 40.712,-74.006,34.052,-118.243
      - name: token
        in: query
        required: true
        description: API authentication token.
        schema:
          type: string
          example: demo
      - name: networks
        in: query
        required: false
        description: Filter results by monitoring network (e.g., 'all' for all networks).
        schema:
          type: string
          example: all
      responses:
        '200':
          description: Successful response with list of monitoring stations within the bounding box
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MapBoundsResponse'
              example:
                status: ok
                data:
                - lat: 40.6943
                  lon: -73.9249
                  uid: 7536
                  aqi: '45'
                  station:
                    name: Brooklyn, New York, USA
                    time: '2024-01-15T12:00:00-05:00'
        '400':
          description: Invalid bounding box parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Invalid or missing API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    MapStation:
      type: object
      description: A monitoring station returned in map bounds queries
      properties:
        lat:
          type: number
          format: float
          description: Station latitude
          example: 40.6943
        lon:
          type: number
          format: float
          description: Station longitude
          example: -73.9249
        uid:
          type: integer
          description: Unique station identifier
          example: 7536
        aqi:
          type: string
          description: Current AQI value (may be '-' if unavailable)
          example: '45'
        station:
          type: object
          properties:
            name:
              type: string
              description: Station display name
              example: Brooklyn, New York, USA
            time:
              type: string
              format: date-time
              description: Timestamp of the last reading
              example: '2024-01-15T12:00:00-05:00'
      required:
      - lat
      - lon
      - uid
      - aqi
    ErrorResponse:
      type: object
      description: Error response returned when a request fails
      properties:
        status:
          type: string
          enum:
          - error
          description: Always 'error' for error responses
        data:
          type: string
          description: Human-readable error message
          example: Unknown city or station
      required:
      - status
      - data
    MapBoundsResponse:
      type: object
      description: Response from the map bounds endpoint
      properties:
        status:
          type: string
          enum:
          - ok
          - error
          description: Response status indicator
        data:
          type: array
          description: List of monitoring stations within the bounding box
          items:
            $ref: '#/components/schemas/MapStation'
      required:
      - status
      - data
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: query
      name: token
      description: API token obtained from the Air Quality Open Data Platform at https://aqicn.org/data-platform/token/
externalDocs:
  description: WAQI JSON API Documentation
  url: https://aqicn.org/json-api/doc/