DataQuoll Facilities API

Emergency service facility locations from Geoscience Australia: where responders come from. A reference layer, not a feed.

Operations 1

GET /api/v1/facilities Emergency service facility locations #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dataquoll-io:dataquoll-io-facilities-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dataquoll-io-facilities-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DataQuoll Facilities API
  description: 'DataQuoll turns fragmented Australian public data into answers about locations, events and assets.


    Today''s datasets: real-time emergency incidents and warnings (bushfires, floods, storms, earthquakes, rescues, and more) in one GeoJSON schema with CAP-aligned severity, urgency, and certainty fields that carry only what each agency states; disaster declarations reported by LGA as declared-area status; live river gauges with BoM flood classes; and a historical archive. DataQuoll was formerly EmergencyAPI. Standards-validated CAP output is available as an Atom feed via ?format=cap-atom and as per-incident documents via /api/v1/incidents/{id}?format=cap-au, both validated against the OASIS CAP 1.2 schema and the CAP-AU Profile v3.0. Includes real-time incidents, proximity search, and historical audit trail snapshots.


    **Disclaimer:** DataQuoll provides aggregated emergency incident data for informational

    purposes only. This data is sourced from

    official government feeds, community-decoded SA pager feeds and an agency feed whose licence is not published (NT PFES).

    It may be delayed, incomplete, or inaccurate. Do not use this API as a substitute for

    official emergency warnings.'
  version: 1.113.0
  contact:
    name: DataQuoll Support
    url: https://dataquoll.io
  license:
    name: Proprietary
servers:
- url: https://dataquoll.io
  description: Primary host
- url: https://emergencyapi.com
  description: Legacy host, identical responses until the announced sunset
security:
- BearerAuth: []
tags:
- name: Facilities
  description: 'Emergency service facility locations from Geoscience Australia: where responders come from. A reference layer, not a feed.'
paths:
  /api/v1/facilities:
    get:
      operationId: listFacilities
      summary: Emergency service facility locations
      description: 'Where responders come from: the locations of police, ambulance, metropolitan fire, rural and country fire, and SES facilities across Australia, from Geoscience Australia under CC BY 4.0. A static reference layer, not a live feed.


        Two lanes, and at least one is required. Either a radius search (lat, lng and radius together) or a filter (state and/or class). A bare call is rejected rather than returning all 8,888 facilities.


        Address columns derived from G-NAF are deliberately not collected, because they carry a separate licence to the rest of the dataset.'
      tags:
      - Facilities
      parameters:
      - name: lat
        in: query
        description: Latitude of the search centre. Required with lng and radius.
        schema:
          type: number
          minimum: -90
          maximum: 90
      - name: lng
        in: query
        description: Longitude of the search centre. Required with lat and radius.
        schema:
          type: number
          minimum: -180
          maximum: 180
      - name: radius
        in: query
        description: Search radius in kilometres. Required with lat and lng.
        schema:
          type: number
          exclusiveMinimum: 0
          maximum: 500
      - name: state
        in: query
        description: 'Lowercase state code. Note that three Australian Federal Police facilities in the Indian Ocean Territories carry no state and are returned only by radius search.

          '
        schema:
          type: string
          enum:
          - nsw
          - vic
          - qld
          - sa
          - wa
          - tas
          - nt
          - act
      - name: class
        in: query
        description: Facility class, as a short alias or the full source string.
        schema:
          type: string
          enum:
          - police
          - ambulance
          - fire
          - rural_fire
          - ses
          - other
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 500
          default: 100
      security:
      - BearerAuth: []
      - PaymentAuth: []
      x-payment-info:
        offers:
        - amount: '80000'
          currency: '0x20C000000000000000000000b9537d11c60E8b50'
          description: One request
          intent: charge
          method: tempo
        price:
          mode: fixed
          currency: USD
          amount: '0.08'
        protocols:
        - mpp:
            method: tempo
            intent: charge
            currency: '0x20C000000000000000000000b9537d11c60E8b50'
        - x402:
            scheme: exact
            network: eip155:8453
            asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
            amount: '80000'
      responses:
        '200':
          description: Matching facilities
          headers:
            Payment-Receipt:
              $ref: '#/components/headers/PaymentReceipt'
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  disclaimer:
                    type: string
                    description: States that a listed facility is not necessarily staffed or able to respond.
                  facilities:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type:
                          - string
                          - 'null'
                        class:
                          type: string
                          enum:
                          - AMBULANCE STATION
                          - POLICING FACILITY
                          - METRO FIRE FACILITY
                          - RURAL/COUNTRY FIRE SERVICE FACILITY
                          - SES FACILITY
                          - OTHER EMERGENCY MANAGEMENT FACILITY
                        operationalStatus:
                          type:
                          - string
                          - 'null'
                        coordinates:
                          type:
                          - object
                          - 'null'
                          properties:
                            lat:
                              type: number
                            lng:
                              type: number
                        location:
                          type: object
                          properties:
                            address:
                              type:
                              - string
                              - 'null'
                            suburb:
                              type:
                              - string
                              - 'null'
                            state:
                              type:
                              - string
                              - 'null'
                            postcode:
                              type:
                              - string
                              - 'null'
                        spatialConfidence:
                          type:
                          - string
                          - 'null'
                        source:
                          type: object
                          properties:
                            publisher:
                              type: string
                            agency:
                              type:
                              - string
                              - 'null'
                              description: The state or territory agency Geoscience Australia sourced the record from.
                        fetchedAt:
                          type: string
                          format: date-time
        '400':
          description: Neither lane supplied, or a parameter out of range
        '401':
          description: Missing or invalid API key. While pay per request is on, a request with no Authorization header gets 402 instead.
        '402':
          description: 'Pay per request: no key was sent, so the answer is a price. The WWW-Authenticate header carries an MPP Payment challenge; pay it and send the request again with Authorization: Payment. Also sent, with a fresh price, when a payment fails its checks or its price has expired. Only while pay per request is on; otherwise a request without a key gets 401.'
          headers:
            WWW-Authenticate:
              $ref: '#/components/headers/PaymentChallenge'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: Rate limit exceeded
components:
  headers:
    PaymentChallenge:
      description: 'The MPP payment challenge, scheme Payment: the price, the token, where to pay, the realm (dataquoll.io) and when the price expires, 5 minutes after it is issued. Pay it with an MPP client and send the request again with Authorization: Payment.'
      schema:
        type: string
    PaymentReceipt:
      description: 'Sent only on the response to a paid request (Authorization: Payment): the receipt for the payment, naming its transaction. Never sent when a key was used.'
      schema:
        type: string
  schemas:
    ProblemDetails:
      type: object
      description: RFC 9457 Problem Details
      properties:
        type:
          type: string
          example: https://emergencyapi.com/errors/rate-limit-exceeded
        title:
          type: string
          example: Rate Limit Exceeded
        status:
          type: integer
          example: 429
        detail:
          type: string
        instance:
          type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'API key in format: eak_live_... . Keys work from any origin by default. A key can optionally be restricted to specific browser origins in the dashboard; a request from a browser origin not on the allowlist is rejected with 403. Requests without an Origin header (server-side) are never blocked by this.'
    PaymentAuth:
      type: http
      scheme: payment
      description: 'Pay per request with MPP (the Machine Payments Protocol), for an agent with no API key. Send the request with no Authorization header and the 402 response carries the price in its WWW-Authenticate header. Pay it in USDC.e on Tempo with an MPP client, then send the request again with `Authorization: Payment <credential>`; the response carries a Payment-Receipt header. Offered only on the operations that list it, and only while pay per request is on. A request with a Bearer key is never charged. Prices, receipts and refunds: https://docs.dataquoll.io/machine-payments'
x-service-info:
  docs:
    homepage: https://dataquoll.io
    apiReference: https://docs.dataquoll.io
    llms: https://dataquoll.io/llms.txt