Stop fighting SDMX. Hosted REST API over Australia's 9 public government data sources, with one auth key and one response envelope.
The chart you spend 90 minutes building in Excel? One HTTP call.
Live service: https://ausdata.io · OpenAPI: /openapi.json · Swagger UI: /docs · LLM-agent manifest: /llms.txt
Docs URL note: The canonical docs surfaces are the Swagger UI at
https://api.ausdata.io/docsand the LLM-agent discovery manifest athttps://api.ausdata.io/llms.txt. The Fly deployment URLhttps://ausdata-api.fly.devserves the same content and is whatflyctloperates against. Thedocs.ausdata.iosubdomain is currently unresolved — pending an ops decision to either delete the DNS record or CNAME it toausdata-api.fly.devwith a Fly cert. Treathttps://api.ausdata.io/docsas the source of truth.
ausdata-api is the hosted SaaS frontend to a portfolio of free, MIT-licensed Australian data MCPs. Self-hosters can pip install any of the 9 sister packages directly; commercial customers can call a managed HTTPS endpoint with normalised auth, attribution, rate limits, and a uniform response envelope.
Sister packages on PyPI (all MIT, free):
| Package | Source | Status |
|---|---|---|
abs-mcp |
Australian Bureau of Statistics | LIVE |
aemo-mcp |
Australian Energy Market Operator | LIVE |
aihw-mcp |
Australian Institute of Health and Welfare | LIVE |
apra-mcp |
Australian Prudential Regulation Authority | LIVE |
asic-mcp |
Australian Securities and Investments Commission | LIVE |
ato-mcp |
Australian Taxation Office | LIVE |
au-weather-mcp |
Open-Meteo (BOM aggregation) | LIVE |
rba-mcp |
Reserve Bank of Australia | LIVE |
wgea-mcp |
Workplace Gender Equality Agency | LIVE |
aus-identity |
ABN / postcode / ASGS resolution helper | LIVE |
| Tier | Price | Monthly calls | Webhooks | Attribution |
|---|---|---|---|---|
| Free | $0 | 500 | yes | always returned |
| Analyst | $29/mo | 10,000 | yes | always returned |
| Pro | $99/mo | 100,000 | yes | always returned |
| Enterprise | custom | unlimited | yes | always returned |
Every tier returns CC-BY attribution in meta.sources[] (never gated). History
is uncapped on every tier. Per-minute cap is a flat 100/min across all tiers.
Pricing details at https://ausdata.io/pricing.
# Sign up at https://ausdata.io and copy your API key (starts with ak_)
export AUSDATA_KEY=ak_xxx
# Real wages: WPI minus CPI, the chart Greg Jericho builds weekly
curl -H "Authorization: Bearer $AUSDATA_KEY" \
"https://api.ausdata.io/v1/real-wages?start=2019-Q1&seasonal_adjustment=trend"
# Five-source economic snapshot
curl -H "Authorization: Bearer $AUSDATA_KEY" \
"https://api.ausdata.io/v1/economic-dashboard"
# Search 84+ curated datasets across 9 sources
curl -H "Authorization: Bearer $AUSDATA_KEY" \
"https://api.ausdata.io/v1/search-datasets?q=unemployment+nsw"23 v1 endpoints live. See /openapi.json,
Swagger UI, and the LLM-agent manifest at
/llms.txt for the full list.
Highlights:
| Endpoint | Purpose | Auth |
|---|---|---|
GET /v1/health |
Service status | public |
GET /v1/status |
Detailed per-upstream status + 24h metrics | public |
POST /v1/register |
Free-tier signup, returns API key | public |
GET /v1/search-datasets |
Fan-out search across all 9 sources | key |
GET /v1/data/{source}/{dataset_id} |
Generic data fetch | key |
GET /v1/describe/{source}/{dataset_id} |
Schema + filter docs | key |
GET /v1/datasets / /v1/datasets/{source} |
Catalogue | key |
GET /v1/real-wages |
WPI minus CPI quarterly series | key |
GET /v1/real-cash-rate |
RBA cash rate minus ABS CPI | key |
GET /v1/economic-dashboard |
Five-source macro snapshot | key |
GET /v1/cost-of-living |
11-group CPI_MONTHLY breakdown | key |
GET /v1/trade-balance |
ABS ITGS exports / imports | key |
GET /v1/youth-unemployment |
LF + LF_AGE comparison | key |
GET /v1/housing-affordability |
Mean dwelling value / median income ratio | key |
GET /v1/gender-pay-context |
WGEA-derived | key |
GET /v1/energy-snapshot |
AEMO spot prices | key |
GET /v1/releases |
Upcoming ABS/RBA release calendar | key |
GET /v1/weather/{location} |
Open-Meteo (BOM aggregation) | key |
GET /v1/whoami |
Caller tier, usage, key prefix | key |
GET/POST /v1/account/api-key |
Read or rotate API key | JWT |
POST/GET/DELETE /v1/webhooks |
Webhook subscription management | key |
POST /webhook/stripe |
Inbound billing events | Stripe |
You CAN self-host the sister MCPs:
uvx --from abs-mcp abs-mcp # ABS data, free, MIT
uvx --from rba-mcp rba-mcp # RBA data, free, MIT
# ... 7 moreYou'll pay for hosted (ausdata.io) when you need:
- A single REST surface with one auth key, not 9 separate MCP servers
- Cross-source endpoints (
/real-wages,/economic-dashboard) that aren't possible on a single sister - Operational features: 99.95% uptime SLA, status page, pre-warmed cache, webhook notifications
The free public sisters and the hosted API are complementary, not competitors — the free sisters are the brand-building / discovery surface; the hosted API is the commercial product.
This backend (ausdata-api) is FSL-1.1-MIT — Functional Source License with a 2-year MIT conversion. See LICENSE for full terms.
Plain-English summary:
- You CAN read, modify, fork, use internally, contribute, deploy for personal / research / non-commercial use.
- You CAN'T offer a competing hosted service from this code while the FSL term is active.
- 2 years after first release (so by 2028-05-16), the license auto-converts to MIT and all restrictions drop.
This isn't a "source available" trick — your fork is permanent MIT once the change date hits, retroactive to all prior releases. The 2-year window protects the commercial moat while we build customer trust.
The 9 sister MCP packages remain plain MIT — fork freely.
git clone https://github.com/Bigred97/ausdata-api.git
cd ausdata-api
# Install (uses uv)
uv sync --extra dev
# Copy and edit env vars
cp .env.example .env
# Fill in SUPABASE_URL, SUPABASE_JWKS_URL, STRIPE_* (Stripe optional for local dev)
# Run
uv run uvicorn ausdata_api.main:app --reload --port 8080
# Test
uv run pytest
# Lint
uv run ruff check src tests
# Build
uv buildOpenAPI / Swagger UI at http://localhost:8080/docs once running.
# First time only
fly launch --no-deploy
# Set secrets
fly secrets set \
SUPABASE_URL=... \
SUPABASE_JWKS_URL=... \
STRIPE_SECRET_KEY=... \
STRIPE_WEBHOOK_SECRET=... \
API_KEY_HASH_SECRET="$(python -c 'import secrets; print(secrets.token_urlsafe(64))')"
# Deploy
fly deployThe fly.toml pins region to Sydney (syd), health-checks /v1/health, and auto-scales between 1 and N machines.
This scaffold lives locally first. When you're ready:
cd ausdata-api
gh repo create Bigred97/ausdata-api --public --source=. --remote=origin --pushThat command creates a public GitHub repo and pushes the local commits. The FSL license file at the root protects against competing hosted services from the moment the code is public.
0.6.61 — LIVE at https://api.ausdata.io (Fly deployment: https://ausdata-api.fly.dev). 23 v1 endpoints, Supabase JWT
- API key auth, SQLite on
/datavolume, Fly.io Sydney region, Stripe billing wired, Resend transactional email, 700+ unit tests.
This hosted API composes a family of free, public MCP servers:
- Sister MCPs (free, MIT): abs · rba · ato · apra · aihw · asic · aemo · au-weather · wgea
- Hosted API + cross-source endpoints: ausdata.io
- Python SDK:
pip install ausdataio· Node MCP:npx -y ausdata-mcp