asicapidocs

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.

GEThttps://api.asicapi.dev/v1/people/search

Query 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

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

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

FieldTypeDescription
objectstringAlways personSearch.
searchIdstringIdentifier of this search, prefixed psr_. Pass it to POST /v1/people/extracts with a selection of person ids.
createdAttimestampWhen the search was run, RFC 3339 UTC.
expiresAttimestampWhen 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[]arrayMatching people, in the order ASIC returns them. At most 100.
data[].objectstringAlways personMatch.
data[].idstringPerson id, prefixed prs_. Put it in personIds when purchasing, and use it as the {personId} path parameter on the person read endpoints.
data[].nameobjectThe person's current name on the register: familyName, givenNames[] and formatted.
data[].birthobjectBirth 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[].formerNameobject or nullSet 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.
totalCountintegerNumber of matches returned.
metaobjectPeople searches are free, so billable is false and product is null. requestId echoes the X-Request-Id header.

Errors

CodeHTTP statusWhen
name_required400familyName or givenName is missing or empty. param names the missing parameter.
name_invalid_characters400A name contains a digit, full stop or comma, or a given name contains an embedded space.
birth_date_range_invalid400Only one of birthDateFrom and birthDateTo was supplied, birthDateFrom is in the future, or birthDateFrom is later than birthDateTo. message states which rule failed.
validation_error422limit is not a positive integer.
no_matches404ASIC found no person matching the name and birth date range.
too_many_matches422ASIC 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_unavailable503The ASIC database is unavailable. Retry with backoff.

A too_many_matches error looks like this:

Error
{
  "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 this searchId returns search_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.date null as 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, formerName is set and name is the current name, so the family name in name may differ from the familyName you searched. When the current name matched, formerName is null even 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.

On this page