Gov APIimmi.homeaffairs.gov.au ↗
Retrieve Australian postcodes for 417 Working Holiday visa specified work areas including remote, northern, regional, and disaster-declared zones.
What is the Gov API?
This API exposes a single endpoint, get_specified_work_postcodes, that returns fully expanded postcode lists for five distinct specified work area categories under Australia's Working Holiday subclass 417 visa. The response surfaces up to five named arrays — including northern_australia, remote_and_very_remote_australia, regional_australia, bushfire_declared_areas, and natural_disaster_declared_areas — drawn from the Australian Department of Home Affairs. Postcode ranges are pre-expanded to individual strings, so no further parsing is needed.
curl -X GET 'https://api.parse.bot/scraper/a4760497-cd6c-4b34-b347-6d4607df6fac/get_specified_work_postcodes?area_type=all' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace immi-homeaffairs-gov-au-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Visa417Postcodes SDK — check eligible postcodes for specified work areas."""
from parse_apis.australia_visa_417_specified_work_postcodes_api import (
Visa417Postcodes,
AreaType,
AreaTypeInvalid,
)
client = Visa417Postcodes()
# Fetch all area types at once — single request returns all five postcode lists.
all_areas = client.postcodesets.get(area_type=AreaType.ALL)
print(f"Remote & Very Remote: {len(all_areas.remote_and_very_remote_australia)} postcodes")
print(f"Northern Australia: {len(all_areas.northern_australia)} postcodes")
print(f"Regional Australia: {len(all_areas.regional_australia)} postcodes")
# Fetch a single area type — only that area's list is populated.
northern = client.postcodesets.get(area_type=AreaType.NORTHERN_AUSTRALIA)
print(f"Northern postcodes sample: {northern.northern_australia[:5]}")
# Typed error handling for invalid area_type values.
try:
result = client.postcodesets.get(area_type=AreaType.BUSHFIRE_DECLARED_AREAS)
print(f"Bushfire declared areas: {len(result.bushfire_declared_areas)} postcodes")
except AreaTypeInvalid as exc:
print(f"Invalid area type: {exc}")
print("exercised: postcodesets.get with ALL / NORTHERN_AUSTRALIA / BUSHFIRE_DECLARED_AREAS")
Returns expanded lists of Australian postcodes for specified work areas under the 417 visa. Postcodes are expanded from ranges (e.g. '2832 to 2836' becomes individual codes) and special entries like 'All postcodes in the Northern Territory are eligible' are expanded to the full NT range (0800-0899). A postcode may appear in multiple area types.
| Param | Type | Description |
|---|---|---|
| area_type | string | Which area type to retrieve postcodes for. Accepts exactly one of: all, remote_and_very_remote_australia, northern_australia, regional_australia, bushfire_declared_areas, natural_disaster_declared_areas. When 'all', returns all five area types in a single response. |
{
"type": "object",
"fields": {
"northern_australia": "array of postcode strings (present when area_type is 'all' or 'northern_australia')",
"regional_australia": "array of postcode strings (present when area_type is 'all' or 'regional_australia')",
"bushfire_declared_areas": "array of postcode strings (present when area_type is 'all' or 'bushfire_declared_areas')",
"natural_disaster_declared_areas": "array of postcode strings (present when area_type is 'all' or 'natural_disaster_declared_areas')",
"remote_and_very_remote_australia": "array of postcode strings (present when area_type is 'all' or 'remote_and_very_remote_australia')"
},
"sample": {
"northern_australia": [
"0800",
"0801",
"0872",
"4472",
"4478",
"4680",
"6537",
"6770"
]
}
}About the Gov API
What the endpoint returns
The get_specified_work_postcodes endpoint returns arrays of individual Australian postcode strings grouped by specified work area category. The source data often lists postcodes as ranges (e.g. "2832 to 2836") or blanket statements (e.g. "All postcodes in the Northern Territory"); the API resolves both forms into discrete strings, so you can do direct lookups without writing range-expansion logic yourself.
Filtering by area type
The optional area_type parameter controls which category arrays appear in the response. Pass one of: all, northern_australia, regional_australia, remote_and_very_remote_australia, bushfire_declared_areas, or natural_disaster_declared_areas. Omitting the parameter behaves the same as passing all, returning every category at once. Each matching category appears as a top-level key in the JSON response containing a flat array of postcode strings.
Coverage details
The five area types reflect the categories used on the Department of Home Affairs specified work conditions page for the 417 visa. northern_australia and remote_and_very_remote_australia tend to have the largest postcode sets; bushfire_declared_areas and natural_disaster_declared_areas reflect government-declared zones that can change when new declarations are issued. The API represents the postcode lists as published — it does not add suburb names, state labels, or coordinate data alongside the codes.
Official source
The Australian Department of Home Affairs publishes this information at immi.homeaffairs.gov.au but does not provide a developer API for programmatic access to the specified work postcode data.
The Gov API is a managed, monitored endpoint for immi.homeaffairs.gov.au — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when immi.homeaffairs.gov.au changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official immi.homeaffairs.gov.au API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Check whether a job listing's postcode qualifies for a second or third year of a 417 Working Holiday visa
- Build a farm-work or harvest-work job board that flags eligible regional and remote postcodes
- Validate user-entered work location postcodes in a visa compliance tool
- Generate a lookup table of all northern_australia postcodes for offline use in a mobile app
- Cross-reference bushfire_declared_areas or natural_disaster_declared_areas postcodes against ABS geographic datasets
- Power an eligibility checker widget that accepts a postcode and returns which 417 specified work categories it belongs to
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the Australian Department of Home Affairs offer an official developer API for this data?+
What does the response look like when I request a single area type versus all?+
remote_and_very_remote_australia, the response contains only that one array key with its postcode strings. Passing all (or omitting the parameter) returns all five category keys — northern_australia, regional_australia, remote_and_very_remote_australia, bushfire_declared_areas, and natural_disaster_declared_areas — in a single response object.Does the API return suburb names, state codes, or geographic coordinates alongside postcodes?+
How current are the bushfire and natural disaster declared area postcodes?+
bushfire_declared_areas and natural_disaster_declared_areas may change between calls if the source page has been updated. There is no change-history or diff endpoint available.Can I look up whether a specific postcode appears in any eligible area without fetching the full list?+
all and filter client-side. You can also fork the API on Parse and revise it to add a dedicated postcode-lookup endpoint that returns only the matching categories for a given code.