DataQuoll Mobile sites API

Mobile network site records from the ACCC Mobile Infrastructure Report data release, a yearly snapshot. A location reference, not coverage.

Operations 1

GET /api/v1/mobile-sites Mobile network site 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-mobile-sites-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-mobile-sites-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DataQuoll Mobile sites 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: Mobile sites
  description: Mobile network site records from the ACCC Mobile Infrastructure Report data release, a yearly snapshot. A location reference, not coverage.
paths:
  /api/v1/mobile-sites:
    get:
      operationId: listMobileSites
      summary: Mobile network site locations
      description: 'Where the mobile networks'' radio sites are: Telstra, Optus, TPG and the Optus-TPG shared network (MOCN), from the ACCC Mobile Infrastructure Report data release under CC BY 2.5 AU. A yearly snapshot as at 31 January, not a live feed.


        Each record is one operator at one site. A tower shared by three networks appears three times, and Optus-TPG MOCN records repeat Optus actively shared sites, so a record count is not a tower count. rfnsaId is not unique even within one operator; id is the record key.


        Two lanes, and at least one is required. Either a radius search (lat, lng and radius together, nearest first) or a filter (at least one of state, lga or operator). Both page with limit and offset; hasMore says whether another page exists. To find incidents near a site, pass its coordinates to /api/v1/incidents/nearby.'
      tags:
      - Mobile sites
      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: operator
        in: query
        description: Network operator. mocn is accepted for optus-tpg-mocn.
        schema:
          type: string
          enum:
          - telstra
          - optus
          - tpg
          - optus-tpg-mocn
          - mocn
      - name: state
        in: query
        description: 'Lowercase state code, from the local government area the site falls in. Sites in the ABS Other Territories (Christmas Island, Jervis Bay Territory) carry no state and are returned only by radius or lga; a few on water or offshore, outside every LGA, only by radius.

          '
        schema:
          type: string
          enum:
          - nsw
          - vic
          - qld
          - sa
          - wa
          - tas
          - nt
          - act
      - name: lga
        in: query
        description: Five-digit ABS local government area code (2022 edition), e.g. 17200 for Sydney.
        schema:
          type: string
          pattern: ^[0-9]{5}$
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 500
          default: 100
      - name: offset
        in: query
        description: Records to skip, for paging. The order is fixed, so pages never repeat or skip a record.
        schema:
          type: integer
          minimum: 0
          default: 0
      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 site records
          headers:
            Payment-Receipt:
              $ref: '#/components/headers/PaymentReceipt'
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  hasMore:
                    type: boolean
                  offset:
                    type: integer
                  asAt:
                    type: string
                    format: date
                    description: The date the ACCC snapshot describes (31 January of the release year).
                  disclaimer:
                    type: string
                    description: States that a listed site is a location reference, not proof of service or coverage.
                  sites:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Stable within one annual release only.
                        rfnsaId:
                          type: string
                          description: The Radio Frequency National Site Archive ID, as published. Shared by operators on one site.
                        operator:
                          type: string
                          enum:
                          - telstra
                          - optus
                          - tpg
                          - optus-tpg-mocn
                        coordinates:
                          type: object
                          properties:
                            lat:
                              type: number
                            lng:
                              type: number
                        technologies:
                          type: array
                          items:
                            type: string
                          description: The technology and band columns the ACCC marks for this record, e.g. LTE700, NR3500.
                        generations:
                          type: array
                          items:
                            type: string
                            enum:
                            - 2G
                            - 3G
                            - 4G
                            - 5G
                        coFunded:
                          type:
                          - boolean
                          - 'null'
                          description: 'true when built under a government co-contribution program. null means not recorded as co-funded, which is not the same as not co-funded: programs only had to be identified from 18 May 2020 (Mobile Black Spot from 2015).

                            '
                        coContributionProgram:
                          type:
                          - string
                          - 'null'
                        fundingRound:
                          type:
                          - string
                          - 'null'
                        activeSharing:
                          type:
                          - boolean
                          - 'null'
                          description: Optus records only, as published.
                        activeSharingParty:
                          type:
                          - string
                          - 'null'
                        location:
                          type: object
                          properties:
                            state:
                              type:
                              - string
                              - 'null'
                            lgaCode:
                              type:
                              - string
                              - 'null'
                            lgaName:
                              type:
                              - string
                              - 'null'
                        distanceKm:
                          type: number
                          description: Radius search only.
                        asAt:
                          type: string
                          format: date
                        source:
                          type: object
                          properties:
                            publisher:
                              type: string
        '400':
          description: Neither lane supplied, an unknown operator or state, 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