Search people by name and date of birth
Search the ASIC register for a director, secretary, liquidator or shareholder by family name, given names and date of birth range with the asicapi REST API.
Every director, secretary, liquidator, auditor and recorded shareholder on the ASIC register is indexed by name and, where ASIC holds it, by date and place of birth. The people search is the first step in finding out which Australian companies a person is or was involved with. You supply a family name and at least one given name, optionally narrow the results with a birth date range, and receive a list of matching people. The search is free and never billed. Each match carries a person id, and the sequence from there is: search here, then purchase a person extract for the ids you want with POST /v1/people/extracts, then read the extract as often as you like with get a person, roles, shareholdings and documents. Only the purchase is billed; see the purchasing guide.
https://api.asicapi.dev/v1/people/searchQuery parameters
Prop
Type
Whether an extract is current or historical, and whether it includes shareholdings, is chosen when you purchase (history and includeShareholdings in the body of POST /v1/people/extracts), not on the search.
Example request
curl "https://api.asicapi.dev/v1/people/search?familyName=SMITH&givenName=JANE&givenName2=LOUISE&birthDateFrom=1970-01-01&birthDateTo=1979-12-31" \
-H "Authorization: Bearer $ASICAPI_KEY"Example response
{
"object": "personSearch",
"searchId": "psr_01J9AB3CD4EFG5HJ6KM7NP8QR",
"createdAt": "2026-09-04T03:12:45Z",
"expiresAt": "2026-10-04T03:12:45Z",
"data": [
{
"object": "personMatch",
"id": "prs_8f3k2m9q",
"name": {
"familyName": "SMITH",
"givenNames": ["JANE", "LOUISE"],
"formatted": "JANE LOUISE SMITH"
},
"birth": {
"date": "1975-04-03",
"locality": "MELBOURNE",
"stateOrCountry": "VIC"
},
"formerName": null
},
{
"object": "personMatch",
"id": "prs_2d7h4n1x",
"name": {
"familyName": "SMITH",
"givenNames": ["JANE", "LOUISE"],
"formatted": "JANE LOUISE SMITH"
},
"birth": {
"date": "1971-11-22",
"locality": "BRISBANE",
"stateOrCountry": "QLD"
},
"formerName": null
},
{
"object": "personMatch",
"id": "prs_9k2p6w3z",
"name": {
"familyName": "WILLIAMS",
"givenNames": ["JANE", "LOUISE"],
"formatted": "JANE LOUISE WILLIAMS"
},
"birth": {
"date": null,
"locality": null,
"stateOrCountry": null
},
"formerName": {
"familyName": "SMITH",
"givenNames": ["JANE", "LOUISE"],
"formatted": "JANE LOUISE SMITH"
}
}
],
"totalCount": 3,
"meta": {
"billable": false,
"product": null,
"requestId": "req_01J9AB3CD4EFG5HJ"
}
}Response fields
| Field | Type | Description |
|---|---|---|
object | string | Always personSearch. |
searchId | string | Identifier of this search, prefixed psr_. Pass it to POST /v1/people/extracts with a selection of person ids. |
createdAt | timestamp | When the search was run, RFC 3339 UTC. |
expiresAt | timestamp | When the search and its person ids stop being usable for purchasing. Always 30 days after createdAt, matching the one month for which ASIC retains name search results. Extracts you have already purchased stay readable for 12 months regardless. |
data[] | array | Matching people, in the order ASIC returns them. At most 100. |
data[].object | string | Always personMatch. |
data[].id | string | Person id, prefixed prs_. Put it in personIds when purchasing, and use it as the {personId} path parameter on the person read endpoints. |
data[].name | object | The person's current name on the register: familyName, givenNames[] and formatted. |
data[].birth | object | Birth details as ASIC records them: date (ISO 8601 or null), locality and stateOrCountry. All three are null when ASIC has no birth record for the name. |
data[].formerName | object or null | Set when the person matched because a former name matched your criteria. Contains familyName, givenNames[] and formatted of the former name; data[].name still holds the current name. null when the current name matched. |
totalCount | integer | Number of matches returned. |
meta | object | People searches are free, so billable is false and product is null. requestId echoes the X-Request-Id header. |
Errors
| Code | HTTP status | When |
|---|---|---|
name_required | 400 | familyName or givenName is missing or empty. param names the missing parameter. |
name_invalid_characters | 400 | A name contains a digit, full stop or comma, or a given name contains an embedded space. |
birth_date_range_invalid | 400 | Only one of birthDateFrom and birthDateTo was supplied, birthDateFrom is in the future, or birthDateFrom is later than birthDateTo. message states which rule failed. |
validation_error | 422 | limit is not a positive integer. |
no_matches | 404 | ASIC found no person matching the name and birth date range. |
too_many_matches | 422 | ASIC found more names than it will list and returned an approximate count instead. details.fuzzyCount carries that count. Add a second given name or a birth date range and search again. |
asic_unavailable | 503 | The ASIC database is unavailable. Retry with backoff. |
A too_many_matches error looks like this:
{
"error": {
"type": "invalid_request_error",
"code": "too_many_matches",
"message": "ASIC matched approximately 1240 names for SMITH, JOHN. Provide a second given name or a birth date range.",
"param": null,
"asicCode": "PN52",
"details": { "fuzzyCount": 1240 },
"requestId": "req_01J9AB3CD4EFG5HJ",
"docUrl": "https://asicapi.dev/docs/errors#too_many_matches"
}
}Notes from the ASIC register
- Search, purchase, read. ASIC treats a people search as the first stage of a personal name extract. The search returns names and a search results identifier; the extract is then requested for all or some of those names. asicapi keeps the same model: the search is free, the person ids it returns are bound to the search, the extract is purchased and billed once with
POST /v1/people/extracts, and reading the extract afterwards is free. A search on its own never costs anything, so search as often as you need to narrow the candidates before buying. - Thirty-day validity. ASIC retains name search results for one month. asicapi exposes this as
expiresAt. After that time a purchase using thissearchIdreturnssearch_expired(HTTP 410) and you must search again. Extracts already purchased are unaffected. - Birth date range matching. When you supply a birth date range, ASIC returns names whose recorded birth date falls inside the range and also names that have no birth date recorded. Do not treat a match with
birth.datenullas confirmed; the person may have been born outside your range. - Former names. A person is returned when either their current name or a former name matches the search. When a former name matched,
formerNameis set andnameis the current name, so the family name innamemay differ from thefamilyNameyou searched. When the current name matched,formerNameisnulleven if the person has former names on the register. - One entry may cover several people. Where ASIC has no birth details for two or more people with the same name, their roles may be recorded under a single name entry. Extracts for such a match carry a same-name notice; see get a person.
- Ordering. Matches are returned in ASIC's order, which is not alphabetical or by birth date. Sort client side if you need a stable presentation.
- Sandbox. With a test key, ASIC's sample data replaces names with placeholders such as
FAMILY NAME, GIVEN NAME1. Search behaviour, ids and expiry work exactly as in production. See sandbox.
Related
Purchase a person extract
Buy extracts for up to 100 people from this search in one request.
Get a person
Read the extract you hold: directorships, roles, licences and shareholdings.
Purchasing guide
Free lookups, purchased extracts and asynchronous orders explained.
People on the ASIC register
How ASIC identifies people, why birth details matter and what a personal name extract contains.
Directors and secretaries
What ASIC records about company directors and secretaries.
Banned and disqualified register
Check whether a person is disqualified from managing corporations.
Errors
The error envelope, error types and every error code.
People API
Endpoints for people on the ASIC register: search a director or secretary by name and date of birth, then list their company roles, shareholdings, lodged documents and full personal name extract.
Get a person's roles, licences and shareholdings
Read a person's ASIC personal name extract as JSON: every directorship, secretary and liquidator role, registered licence, shareholding and lodged document.