Skip to content

Bigred97/ausdata-api

Repository files navigation

ausdata-api

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/docs and the LLM-agent discovery manifest at https://api.ausdata.io/llms.txt. The Fly deployment URL https://ausdata-api.fly.dev serves the same content and is what flyctl operates against. The docs.ausdata.io subdomain is currently unresolved — pending an ops decision to either delete the DNS record or CNAME it to ausdata-api.fly.dev with a Fly cert. Treat https://api.ausdata.io/docs as the source of truth.


What this is

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

Pricing

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.


Get started

# 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"

Endpoints (v1)

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

Self-host vs hosted

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 more

You'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.


License

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.


Local development

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 build

OpenAPI / Swagger UI at http://localhost:8080/docs once running.


Deploy (Fly.io, Sydney)

# 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 deploy

The fly.toml pins region to Sydney (syd), health-checks /v1/health, and auto-scales between 1 and N machines.


Publishing this repo to GitHub

This scaffold lives locally first. When you're ready:

cd ausdata-api
gh repo create Bigred97/ausdata-api --public --source=. --remote=origin --push

That 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.


Status

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 /data volume, Fly.io Sydney region, Stripe billing wired, Resend transactional email, 700+ unit tests.

The ausdata.io ecosystem

This hosted API composes a family of free, public MCP servers:

About

The hosted REST API for Australian public data — one auth key, uniform JSON, cross-source economic endpoints over ABS, RBA, ATO, APRA, AIHW, ASIC, AEMO, BOM and WGEA. Real wages, cash rate, CPI, housing approvals vs migration, and more.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors