Skip to content
DataMill
Now covering65M+ records · 52 registers · 16 validation routes

The data layer behind Australian software.

65M+ records across company, property, geospatial, banking, and sanctions registers, normalised behind one API. Power autocomplete, validation, checks, and analysis. One integration, instead of 52 pipelines.

No lock-in contract. Transparent billing.
DM/company
Looking up ACME Holdings Pty Ltd
Running
Rows in datasets65,420,479
Agents · datasets · functions · definitions3 · 52 · 16 · 2
Operational · degraded · down73 · 0 · 0
Uptime in Last Day99.37%
requestresult
/v1/asic/companies/searchQueued
/v1/asic/companies/lookupQueued
/v1/asic/business-names/searchQueued
/v1/abr/australian-business-numbers/searchQueued
/v1/validate/company-numberQueued
/v1/validate/business-numberQueued
/v1/asic/australian-financial-services-licensees/searchQueued
/v1/acnc/registered-charities/searchQueued
/v1/dfat/sanctions/consolidated-list/searchQueued
Querying: …0 / 9 requests
The problem

Software needs more than one register. Australia ships it fragmented.

Autocomplete needs company and business names. Onboarding needs identifiers, licences, and a sanctions screen. Finance needs banking data. Property and lending need addresses and sales history. Each lives behind a different authority, a different format, a different licence, and a different refresh cycle.

A fix was planned. It never shipped.

The Modernising Business Registers programme was meant to bring ASIC and ABR registers onto one platform. It was abandoned in 2023 after projected costs rose from roughly $480 million to about $2.7 billion. ASIC and ABR remain operationally separate, and no federal API joins them.

Free data is not ready data.

Most of this data is free to obtain, and that is the part teams price correctly. What gets underestimated is that every source is a separate, permanent pipeline — a bulk XML file here, a delimited export there, a spreadsheet that changes shape without notice. Free to obtain, expensive to maintain.

The fragmentation is structural, not temporary.

The promise

One API. The maintenance already done.

One key, one route shape, and every register below it already collected, normalised, and kept current on its source’s own schedule.

65,000,000

Records

Indexed and searchable right now, across every register in the catalogue.

52

Registers

Australian authorities, sanctions lists, and NZ charity and address data on one search and lookup pattern.

16

Validations

Format and checksum routes for the identifiers your workflows already collect.

What the data powers

Six capabilities, one API. Whatever your product needs to do with Australian data — autocomplete a name, validate an identifier, verify a record, enrich a customer, analyse a market, or screen a counterparty — it is the same integration underneath.

Browse the catalogue
Autocomplete
ABR · ASIC · ACNC · Geoscape
52 registers

Type-ahead on company, business-name, address, and product records across registers.

Validate
ABN · ACN · BSB · IBAN · TFN · more
16 routes

Format and checksum routes for the identifiers your forms already collect.

Verify
ASIC · ABR · APRA · ACNC
65M+ records

Match a name to a live register record, with the source and refresh time attached.

Enrich
ABS · GLEIF · ORIC · Geoscape
27 families

Attach status, classification, and geo context to a record you already hold.

Analyse
NSW Valuer General · CDR · ABS
4 registers

Property sales, ANZSIC and OSCA classifications, and CDR banking products for models.

Screen
DFAT · OFAC · EU · UK · Canada · more
12 lists

12 sanctions and debarment lists through one shape; every match is a signal to review.

Why DataMill

Why teams build on a source-aware layer

Every record carries the authority it came from and when it was refreshed. What DataMill does not prove is stated plainly, so a compliance review is not guessing.

One request shape

Every register uses the same search and lookup pattern. Adding your tenth dataset costs what the first one did.

Source attribution built in

Every record carries the authority it came from and when it was last refreshed, so your audit trail comes with the data.

Identifier validation alongside

Sixteen format and checksum routes — ABN, ACN, TFN, BSB, IBAN and more — sitting next to the registers that confirm them.

Honest boundaries

A passing checksum is not proof an entity exists. A no-match is not a clearance. We state what the data does and does not prove.

Quotas you can plan against

Published request quotas, sustained rates, and burst limits, with live usage in the Customer Portal.

Status you can check

Each register publishes its refresh schedule and current status, so freshness is something you can verify.

Built for teams that depend on data

Whether you are verifying a supplier, screening a counterparty, or enriching an address, it is the same two calls against a different register.

Registers live52
searchready
lookupready
validateready

Search and lookup on every register

Search by name to find candidates, then look up the full record by id. The same two calls, on all 52.

ASICAPRAGEOsearchlookupstatus

One shape across every source

Business, financial, charity, sanctions, geospatial, property, and IP registers answer to the same route pattern.

reference.datamill.com.au
OpenAPIall-endpoints.json
Ready
generated at buildpublic

Generated OpenAPI

Point your codegen at a published contract document and keep typed clients in step with the API.

abr/business-numbersdaily
asic/companiesweekly
dfat/sanctionssyncing
geo/addressesmonthly

Know when data moved

Every register publishes its refresh schedule and current status, so staleness is something you can check.

Customer Portalscoped
API_KEY••••••
PLAN_CODE••••••
LOOKUP_TOKEN••••••

Keys, plans, and quotas

Create scoped API keys, pick a plan, and watch usage against your quota from the Customer Portal.

Lookups this month12,480
Growth

Usage you can see

Track accepted searches, lookups, error classes, and which registers your product actually leans on.

200 · asic/companies
"name": "ACME HOLDINGS PTY LTD"
"acn": "000 000 019"
"status": "Registered"
"source": "ASIC"
"refreshedAt": "2026-08-19"

Predictable payloads

Documented fields per register, with the source authority and refresh time attached to every record.

validate/business-numberValid
Checksumpassed
51 824 753 556ABN

Identifier validation

Sixteen format and checksum routes for Australian, New Zealand, and international identifiers, beside the registers.

The question: Is this ABN real, and whose is it?

Validation and data, working together

Check the identifier is well-formed, find the record it points at, then pull the detail. Neither half answers the question alone — a number that passes its checksum still has to match something real.

Validate the record

Confirm the identifier against one of 16 checks

Find the record

Search for a company, person, or address

Answer

Retrieve the details

Pull the full record and enrich what you already hold

From question to answer in two calls

Search, then look up

Search a register by name to get candidates, then look up the full record by id. Learn it once and it works on all 52.

search · asic/companies
1# search a register by name
2curl -H "x-api-key: $KEY" \
3 api.datamill.com.au/v1/asic/companies/search?q=Acme
5{ "results": [{
6 "id": "01J8F3K2M4",
7 "name": "ACME HOLDINGS PTY LTD",
8 "acn": "000 000 019",
9 "status": "Registered"
10 }], "source": "ASIC"
11}

Catch the bad input before it costs you

One call, no follow-up

Registers take two calls. Validation takes one: send the number, get a verdict. 16 routes covering the identifiers your forms already collect.

validate · business-number
1# one call, no lookup id to follow
2curl -H "x-api-key: $KEY" \
3 "api.datamill.com.au/v1/validate/business-number
4 ?number=51824753556"
6{ "valid": true,
7 "identifier": "ABN",
8 "normalised": "51 824 753 556",
9 "checks": ["format", "checksum"] }

Stop maintaining 52 pipelines.

Start with the register your workflow already needs, and add the rest for the same price as the first.