Australian public holidays, show days and school terms. One API, every state, every source cited.
Ask “is this date a holiday for this district?” and get the gazetted answer, including the regional show days and local replacements that state-level lists get wrong.
Get a free API key
Free plan: 30 requests a minute. The key is shown once. Lost your key?
Try it
Examples that trip up other sources: Karratha on King’s Birthday · Geelong on Melbourne Cup Day · Hobart on Recreation Day · Tasmania, Saturday 26 Dec
Endpoints
Base URL https://dates.gazetted.dev. Send the key as Authorization: Bearer gz_… or ?api_key=gz_…. All responses are JSON.
| Endpoint | Auth | What it returns |
|---|---|---|
GET /v1/is-holiday?state=&date=&q= | key | is_public_holiday, statewide records, regional matches for q, and any statewide holiday that is replaced in that district. |
GET /v1/holidays?state=&from=&to=&q=&type= | key | All holidays in the range. q filters regional rows by district, council or town. type is public_holiday, bank_holiday or government_holiday. |
GET /v1/school-terms?state=&year= | key | Terms, holidays between terms, pupil-free days. Government schools. |
GET /v1/me | key | Your plan and limits. |
POST /v1/keys/rotate | key | New key, old one revoked. |
GET /v1/coverage | none | Which states and years exist. |
POST /v1/signup | none | {"email"} → account and key. Three per minute per address. |
POST /v1/login | none | {"email"} → emails a one-time sign-in link that issues a fresh key. |
Example
curl -H "Authorization: Bearer gz_…" \
"https://dates.gazetted.dev/v1/is-holiday?state=WA&date=2026-09-28&q=karratha"
{
"state": "WA",
"date": "2026-09-28",
"is_public_holiday": false,
"statewide": [ { "name": "King's Birthday", "type": "public_holiday", … } ],
"regional_matches": [],
"replaced_in_district": [ "King's Birthday" ]
}
Karratha holds its King’s Birthday on 3 August, so 28 September is a normal working day there. The response says so instead of guessing.
Record shape
| Field | Meaning |
|---|---|
date, name, jurisdiction | ISO date, name as published, state code. |
type | public_holiday, bank_holiday (NSW and ACT August, not public), government_holiday (Tasmania Easter Tuesday, Launceston Cup: public service only). |
scope | state or regional. |
district_text | The government’s own wording for the area, verbatim. Some are prose (“south of and including Oatlands and Swansea”). |
precision | state, lga, postcodes, or sub_lga_prose when the district is a fragment of a council area described in words. |
replaces | Name of the statewide holiday this local one stands in for. On that statewide date, the district is not on holiday. |
part_day | e.g. 19:00-24:00 for SA and NT Christmas Eve. |
source_url, source_checked | Where it came from and when it was last checked. |
Coverage
| State | Holidays | School terms |
|---|
Regional holidays: Queensland show days (98 districts), Tasmania (11 regional days with areas from the Statutory Holidays Act), Northern Territory show days, Victoria non-metropolitan replacements, Western Australia regional King’s Birthday. Known gaps are listed in the repo and fill in as states gazette them, usually September to November for the following year.
Why this exists
The federal machine-readable holidays dataset was retired in January 2026. State pages publish their own lists in eight different shapes, and none of them map regional days to a district you can query. Payroll, rostering and delivery apps end up hand-coding “second Monday in March” rules that drift the year a date is proclaimed differently.
Gazetted stores dates, not rules. Every record is a published date with the URL it came from. When a state changes something, the record changes and the source line tells you why.
Plans
| Plan | Requests per minute | Price |
|---|---|---|
| Free | 30 | $0. For evaluation and hobby use. |
| Paid | 600 | Coming soon. Email hello@gazetted.dev if you need it now. |