Overview
The MapView API answers the questions people ask about an Australian property, with the same answers the MapView app shows:
- Scores: the MapView Score, plus Liveability, Walkability, Crime, Noise & Disturbance and Extension Potential, each with the rows that make it.
- Must Knows: the hazard verdict (flood, bushfire, contamination, mineshafts), the hazards checked and the encumbrances on the lot.
- Planning permits: applications lodged near a property, nearest first, with the council’s own status words.
- Addresses: suggestions with G-NAF place ids, to pin every other call to the right lot.
Every response says what it cost and, for scores, which version of the rules produced it.
Base URL
https://api.mapview.ai/v1
Authentication
Send your organisation’s API key as a bearer token:
Authorization: Bearer mv_live_…
Keys come from the partner portal. The same key works for co-branded reports and for the data API. Keep keys on your server: a key in a browser or mobile app can be copied and billed to you.
Credits and plans
Each call costs credits. The cost is fixed per endpoint and printed below; failed calls cost nothing.
| Endpoint | Credits |
|---|---|
GET /usage | 0 |
GET /addresses/suggest | 1 |
GET /permits | 3 |
GET /permits/{reference} | 1 |
GET /permits/coverage | 1 |
GET /scores | 10 |
GET /scores/{category} | 3 |
GET /must-knows | 5 |
Every response carries three headers:
| Header | Meaning |
|---|---|
X-Credits-Charged | What this call cost |
X-Credits-Used | Credits used so far this month, including this call |
X-Credits-Monthly | Your plan’s monthly credits |
The Free plan stops at its monthly credits. Paid plans carry on into overage, billed per credit at the end of the month. See plans and prices.
Errors
Errors are JSON with a stable code:
{ "error": "credits_exhausted", "message": "This month's 100 credits are used. Upgrade for more." }
| Status | error | What to do |
|---|---|---|
| 400 | invalid_request | Fix the request. A point must be in Australia; the message says which field. |
| 401 | unauthorized | Check the key. |
| 402 | credits_exhausted | The month’s credits are used. Upgrade, or wait for the 1st. |
| 403 | organisation_inactive | Your organisation is suspended. Contact us. |
| 404 | not_found | Nothing at that reference or point. |
| 429 | rate_limited | Too many calls a second for your plan. Retry after the Retry-After header. |
| 502 | upstream_unavailable | A source didn’t answer. Retry shortly; you weren’t charged. |
| 503 | api_unavailable | The API is down for maintenance. Retry shortly. |
Usage
GET /usage returns your plan, this month’s credits used and remaining, and calls by product. It costs nothing.
curl https://api.mapview.ai/v1/usage -H "Authorization: Bearer $MAPVIEW_KEY"
{
"data": {
"plan": { "code": "starter", "name": "Starter", "monthlyCredits": 10000, "overage": true },
"used": 1240,
"remaining": 8760,
"byProduct": [{ "product": "permits.search", "calls": 310, "credits": 930 }]
},
"meta": { "credits": 0, "creditsUsedThisMonth": 1240 }
}
Address suggestions
GET /addresses/suggest?q= returns up to ten suggestions for at least three characters. Pass a suggestion’s placeId to the scores endpoints to pin them to that exact lot.
curl "https://api.mapview.ai/v1/addresses/suggest?q=18%20Murphy%20St%20Richmond" -H "Authorization: Bearer $MAPVIEW_KEY"
{ "data": [{ "text": "18 Murphy Street, Richmond VIC 3121", "placeId": "GAVIC421062846" }], "meta": { "credits": 1 } }
Planning permits
GET /permits returns planning applications lodged near a point, nearest first.
| Parameter | Required | Meaning |
|---|---|---|
lat, lng | Yes | The property |
radius | No | Metres, 50 to 1000. Default 500. |
since | No | Only applications received on or after this date (YYYY-MM-DD) |
decision | No | approved, in_progress, refused or under_review |
limit | No | 1 to 50. Default 20. meta.total says how many matched. |
curl "https://api.mapview.ai/v1/permits?lat=-37.8231&lng=144.9937&radius=500&since=2025-01-01" \
-H "Authorization: Bearer $MAPVIEW_KEY"
{
"data": [
{
"reference": "PLN25/0901",
"description": "Demolition of the existing dwelling and construction of two dwellings",
"address": "2 Kent Street, Richmond",
"receivedDate": "2025-11-02",
"decision": "approved",
"status": "Permit issued",
"distanceM": 60,
"lat": -37.8226,
"lng": 144.9941,
"sourceUrl": "https://…"
}
],
"meta": { "credits": 3, "creditsUsedThisMonth": 1243, "total": 14, "radiusM": 500 }
}
decision is MapView’s reading of the council’s status. status is the council’s own wording when it is words; it is null when the council only publishes a code.
One permit. GET /permits/{reference}?lat=&lng= returns one application, found within 1 km of the point given. Every permit in a search result carries its point. References match whatever the council’s spacing or padding.
Coverage. GET /permits/coverage?lat=&lng=&state= says whether the council at a point feeds permits to MapView (coverage 1, 0.5 or 0) and when it was last updated. Check it before reading “no permits” as “nothing lodged”.
Scores
GET /scores returns the MapView Score and every grid score for a property.
| Parameter | Required | Meaning |
|---|---|---|
lat, lng | Yes | The property |
state | Recommended | VIC, NSW, QLD, SA, WA, TAS, NT or ACT |
suburb, postcode, address | Recommended | The address parts, for the lot lookups |
placeId | Recommended | The G-NAF id from /addresses/suggest, which pins the lot |
curl "https://api.mapview.ai/v1/scores?lat=-37.8231&lng=144.9937&state=VIC&suburb=Richmond&postcode=3121" \
-H "Authorization: Bearer $MAPVIEW_KEY"
{
"data": {
"overall": { "status": "scored", "score": 72, "band": "Mixed", "caveat": null },
"scores": {
"liveability": { "state": "resolved", "score": 81, "tier": "excellent", "word": "Good", "note": "Supermarket 400 m by road", "rows": [] },
"walkability": { "state": "resolved", "score": 88, "tier": "excellent", "word": "Very Walkable" },
"crime": { "state": "resolved", "score": 58, "tier": "moderate", "word": "Average" },
"noise": { "state": "notMapped", "score": null },
"extension": { "state": "resolved", "score": 67, "tier": "moderate", "word": "Partly suitable" }
}
},
"meta": { "credits": 10, "rulesVersion": "e81e0d37+fe8c3278" }
}
A score is 0 to 100, and higher is always better: a high Crime score means less crime than the state rate, and a high Noise score means quiet. Tiers: 75 and up is excellent, 50 to 74 moderate, below 50 limited.
A score that can’t be measured says so instead of guessing: state is notMapped (no data here) or notApplicable (for example, Extension Potential on public land). The overall is withheld, with a reason, when a hazard that would change it isn’t mapped.
One score. GET /scores/{category} returns one of liveability, walkability, crime, noise or extension, for 3 credits.
Rules version. meta.rulesVersion names the scoring rules that produced the answer. When MapView changes a scoring rule, the version changes, so you can tell a changed answer from a changed property.
Must Knows
GET /must-knows takes the same parameters as /scores and returns the hazard verdict:
{
"data": {
"state": "resolved",
"verdict": "caution",
"word": "Check",
"reason": "Heritage overlay; flood not flagged",
"uncheckedHazards": [],
"hazards": [{ "label": "Flood", "value": "Not flagged" }],
"encumbrances": { "easements": [] }
},
"meta": { "credits": 5, "rulesVersion": "e81e0d37+fe8c3278" }
}
verdict is clear, caution, flagged or unchecked. uncheckedHazards names any hazard that couldn’t be checked at this lot. Read an empty list as “all checked”, never as “no hazards”.
Limits
| Plan | Calls a second |
|---|---|
| Free | 2 |
| Starter | 5 |
| Growth | 10 |
| Scale | 25 |
| Enterprise | 50 or more |
Need more? Talk to us.
Co-branded reports
Property and suburb PDF reports with your branding have their own endpoints. See the Co-branded Reports API. The same key works for both.
Machine-readable reference
The OpenAPI document for these endpoints is at https://api.mapview.ai/v1/openapi.json. This page is also available as Markdown for AI coding tools.