API documentation
A REST API over Australia's active business register: search, verify, match and enrich businesses by name and ABN. JSON in, JSON out. Weekly-refreshed data.
Base URL & authentication
All requests are HTTPS and authenticated with an API key (a Pro feature) passed as a bearer token. Create keys in your dashboard.
Base URL https://www.concaveintel.com/api/v1
Header Authorization: Bearer abri_your_key_hereRate limits & metering
600 requests/minute per key (higher on Enterprise). Usage is metered against your plan's monthly allowances: records for search/lookup, rows for match, credits for enrich, with usage-based overage above them (see pricing). Over the limit returns 429; an exhausted enrichment pool returns 402.
Endpoints
GET/businesses
Search the register across all eligible entity types. Query params: q (name), division, state, postcode, gst=true|false, type (segment|all), sort, dir, limit (≤200), offset.
curl "$BASE/businesses?division=E&state=NSW&limit=50" \
-H "Authorization: Bearer $KEY"
{ "data": [ { "abn": "51824006411", "business_name": "...",
"state": "NSW", "postcode": "2480", "gst_registered": true,
"division": "E", "division_name": "Construction",
"industry_confidence": 0.86, "segment": "trading_classified" } ],
"meta": { "count": 50, "limit": 50, "offset": 0 } }GET/businesses/{abn}
Fetch one business by ABN, the KYB verification path. Resolves against the full active register (all ~9M ABNs, sole traders included), not just the trading directory. Status, GST and entity type are register facts; industry is labelled. Accepts formatted or bare ABNs. Meters 1 record.
curl "$BASE/businesses/51824006411" -H "Authorization: Bearer $KEY"POST/match
Resolve a list of business names or ABNs to records (up to 1,000/request), matched against the full active register (all ~9M ABNs, sole traders included). Handles messy names, typos and Name T/A Trading Name patterns. Pass an optional postcodes array (parallel to names) to boost accuracy by breaking name collisions. Each hit carries a scoreand method. Meters rows submitted.
curl -X POST "$BASE/match" -H "Authorization: Bearer $KEY" \
-d '{ "names": ["ACME PLUMBING PTY LTD", "12 345 678 901"],
"postcodes": ["2480", ""] }'
{ "data": [ { "input": "...", "match": { "abn": "...", "business_name": "..." },
"score": 0.98, "method": "exact" } ],
"meta": { "submitted": 2, "matched": 1 } }POST/match/jobs
Submit a large list (up to 50,000 names) for asynchronous matching. Returns a job_id immediately; the fuzzy postcode-matcher runs in the background. Poll GET /match/jobs/{id} until status is done. Meters rows submitted.
curl -X POST "$BASE/match/jobs" -H "Authorization: Bearer $KEY" \
-d '{ "names": ["ACME PLUMBING", "..."], "postcodes": ["2000", "..."] }'
{ "job_id": "…", "status": "pending", "submitted": 2, "poll": "/api/v1/match/jobs/…" }
curl "$BASE/match/jobs/JOB_ID" -H "Authorization: Bearer $KEY"
{ "job_id": "…", "status": "done", "matched": 1,
"data": [ { "input": "...", "abn": "...", "matched_name": "...",
"score": 0.98, "method": "exact" } ] }POST/enrich
Live, web-sourced dossier for a business (summary, website, key people, locations, size, recent activity, sources). Spends one enrichment credit per new business; cached results are free. Inferred, not official. Any outreach must comply with the Spam Act 2003.
curl -X POST "$BASE/enrich" -H "Authorization: Bearer $KEY" \
-d '{ "abn": "51824006411" }'GET/analytics
Monthly registration, cancellation and GST events by state, entity type or postcode.
curl "$BASE/analytics?state=NSW&from=2023-01-01" -H "Authorization: Bearer $KEY"Errors use standard HTTP: 400 bad request, 401 missing/invalid key, 402 credits exhausted, 404 not found, 429 rate limited. Body: { "error": "..." }.
Attribution: contains data from the Australian Business Register (© Commonwealth of Australia, CC-BY 3.0 AU). Industry and enrichment fields are model-derived, not official ABR/ABS classification.