API Documentation

ZoneIQ provides planning zone and overlay data for South East Queensland addresses. Pass any address as a query parameter and receive structured JSON with zone rules, setbacks, permitted uses, and overlays.

Base URL: https://zoneiq.com.au

RapidAPI

Available on RapidAPI

ZoneIQ is listed on RapidAPI. Search for zoneiq at rapidapi.com to subscribe.

KeyUse your RapidAPI key — no separate ZoneIQ key needed. Pass it as the X-RapidAPI-Key header (RapidAPI injects this automatically).
Base URLYour RapidAPI endpoint URL differs from zoneiq.com.au. Check your RapidAPI dashboard for the correct host.
Plans
PlanRequestsPrice
Free100/month$0
Basic1,000/month$29 USD/month
Pro10,000/month$99 USD/month
Direct vs RapidAPIDirect keys (ziq_live_...) and RapidAPI subscriptions are independent. Use whichever suits your workflow.

Authentication

Pass your API key via the X-Api-Key header or the api_key query parameter.

Header (recommended)
X-Api-Key: ziq_live_your_key_here
Query parameter
/api/lookup?address=...&api_key=ziq_live_...

Unauthenticated requests are supported for testing but are rate-limited. Get a free API key to increase your limits.

Endpoint

GET/api/lookup

Look up planning zone and development rules for any SEQ address.

Parameters

ParameterInRequiredDescription
addressqueryYesFull address string. Include suburb and state for best results. e.g. 1 George St Brisbane QLD 4000
X-Api-KeyheaderNoYour API key. Required for higher rate limits.
api_keyqueryNoAlternative to X-Api-Key header.

Response format

Successful response (HTTP 200):

{
  "success": true,
  "query": {
    "address_input": "1 George St Brisbane QLD 4000",
    "address_resolved": "1 George Street, Brisbane City QLD 4000",
    "lat": -27.4697,
    "lng": 153.0238
  },
  "zone": {
    "code": "CR3",
    "name": "Centre",
    "category": "commercial",
    "council": "brisbane"
  },
  "rules": {
    "max_height_m": null,
    "max_storeys": null,
    "max_site_coverage_pct": 100,
    "min_permeability_pct": 0,
    "setbacks": {
      "front_m": 0,
      "side_m": 0,
      "rear_m": 0
    },
    "secondary_dwelling_permitted": "no",
    "short_term_accom_permitted": "yes",
    "home_business_permitted": "no",
    "subdivision_min_lot_size_m2": null
  },
  "key_rules": [
    "Height determined by applicable centre precinct",
    "Active street frontages required at ground level"
  ],
  "uses": {
    "permitted": ["Shop", "Office", "Food and drink outlet"],
    "requires_permit": ["Hospital", "Stadium"],
    "prohibited": ["Extractive industry", "Heavy industry"]
  },
  "overlays": {
    "flood": {
      "has_flood_overlay": false,
      "risk_level": "none"
    },
    "character": {
      "has_character_overlay": false
    },
    "schools": []
  },
  "meta": {
    "source": "Brisbane City Plan 2014",
    "source_url": "https://cityplan.brisbane.qld.gov.au",
    "last_verified": "2025-01-01",
    "disclaimer": "Indicative only. Always verify with council.",
    "response_ms": 312,
    "auth": {
      "authenticated": true,
      "plan": "starter"
    }
  }
}

Error codes

HTTPerror fieldDescription
400MISSING_ADDRESSNo address query parameter provided
401INVALID_KEYAPI key is missing, invalid, inactive, or rate-limited
404ADDRESS_NOT_FOUNDGeocoding failed — address could not be resolved
404OUTSIDE_COVERAGEAddress is outside the covered council areas
404ZONE_NOT_SEEDEDZone polygon found but rules not yet in database

All error responses follow the shape: { "success": false, "error": "CODE", "message": "..." }

Coverage

Brisbane City Council
Brisbane City Plan 2014
26,358 polygons
Gold Coast City Council
Gold Coast City Plan 2016
29,537 polygons
Moreton Bay Regional Council
MBRC Planning Scheme
13,950 polygons
Coming soon: Sunshine Coast (May 2026), Ipswich, Logan, Redland

Rate limits

PlanRequests/dayPrice
UnauthenticatedLimitedFree — for testing only
Free100$0/month
Starter500$29 AUD/month
Pro5,000$99 AUD/month

Rate limits reset at midnight UTC. When exceeded, the response will be HTTP 401 with error INVALID_KEY and a message indicating the limit.

Examples

curl
curl -G https://zoneiq.com.au/api/lookup \
  --data-urlencode "address=12 Windermere Rd Ascot QLD 4007" \
  -H "X-Api-Key: ziq_live_your_key_here"
JavaScript (fetch)
const response = await fetch(
  'https://zoneiq.com.au/api/lookup?address=' +
    encodeURIComponent('12 Windermere Rd Ascot QLD 4007'),
  {
    headers: { 'X-Api-Key': 'ziq_live_your_key_here' }
  }
)
const data = await response.json()

if (data.success) {
  console.log(data.zone.name)                        // "Low Density Residential"
  console.log(data.rules.max_height_m)               // 9.5
  console.log(data.overlays.flood.has_flood_overlay) // false
}
Python (httpx)
import httpx

response = httpx.get(
    "https://zoneiq.com.au/api/lookup",
    params={"address": "12 Windermere Rd Ascot QLD 4007"},
    headers={"X-Api-Key": "ziq_live_your_key_here"},
)
data = response.json()

if data["success"]:
    print(data["zone"]["name"])                         # Low Density Residential
    print(data["rules"]["max_height_m"])                # 9.5
    print(data["overlays"]["flood"]["has_flood_overlay"]) # False