ASIC, TPB, NSW Fair Trading — and nine more statutory registers, each with its own schema and rate limits.1 AusVerify normalises all of them behind one typed endpoint. REST for back-office workflows. MCP for AI agents.2
// Press "Run verification" to call the API…
Every adapter produces the same canonical Registration type. Different registers, same shape.
const res = await fetch("https://ausverify.com/v1/verify", { method: "POST", headers: { "Authorization": `Bearer ${process.env.AUSVERIFY_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ given_name: "Aroha", family_name: "Tane", profession: "financial_adviser", jurisdiction: "AU", }), }); const { results, match_quality } = await res.json(); // results[0].status: "registered" | "expired" | "conditional" | "not_found"
import os import requests resp = requests.post( "https://ausverify.com/v1/verify", headers={ "Authorization": f"Bearer {os.environ['AUSVERIFY_API_KEY']}", }, json={ "given_name": "Aroha", "family_name": "Tane", "profession": "financial_adviser", "jurisdiction": "AU", }, ) data = resp.json() # data["results"][0]["status"]: "registered" | "expired" | "conditional"
curl -X POST https://ausverify.com/v1/verify \ -H "Authorization: Bearer $AUSVERIFY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "given_name": "Aroha", "family_name": "Tane", "profession": "financial_adviser", "jurisdiction": "AU" }'
One line of config gives Claude, Cursor, or any agent access to verify_practitioner as a native tool. No OAuth. No scraping. No rate-limiting surprises from brittle public registers.
AUD. Monthly or annual (20% off). Cancel any time. Start free — no card required.
Need more than 50K verifications or dedicated infrastructure? Enterprise from $1,500/mo — Talk to us →
Private beta is open. Early access users lock in founder pricing, get direct access to the team, and see new registers first.
freshness object with verified_at and is_stale. If a register goes down, we return cached data with is_stale: true and queue a refresh.verify_practitioner as a tool. No OAuth dance, no scraping, no rate-limiting surprises from brittle public registers.freshness.is_stale: true and queue a refresh. You always get a structured response — never a 503. The source_last_refreshed field tells you exactly how old the data is.1 Unified schema covers 12 regulators across 8 verticals. Versioned; breaking changes get a 90-day deprecation window and a migration script.
2 MCP server published as @ausverify/mcp on npm. Open-source. REST API key required — no OAuth for read-only lookups.