List a person's company roles and directorships
List every company where a person is or was a director, secretary, liquidator or other office holder on the ASIC register, filtered by role and status.
A person's roles are the appointments ASIC has recorded against their name across every company on the register: director, secretary, alternate director, liquidator, administrator, receiver and the other office holder roles, plus a Member role for each company in which they are a recorded shareholder. This endpoint returns those roles as a paginated list with the company summary attached to each, so you can build a directorship history, check for concurrent appointments or find every company a liquidator has been appointed to. It reads from the most recent person extract you hold for the person and is free; the extract is purchased once with POST /v1/people/extracts, as explained in the purchasing guide.
https://api.asicapi.dev/v1/people/{personId}/rolesPath parameters
Prop
Type
Query parameters
Prop
Type
Example request
curl "https://api.asicapi.dev/v1/people/prs_8f3k2m9q/roles?status=all&role[]=DR&role[]=SR" \
-H "Authorization: Bearer $ASICAPI_KEY"Example response
{
"object": "list",
"extract": {
"id": "ext_01J9AG8K1L4M7N2P",
"type": "historical",
"purchasedAt": "2026-09-04T03:12:44Z",
"asOf": "2026-09-04T03:12:41Z"
},
"data": [
{
"object": "role",
"role": { "code": "DR", "label": "Director" },
"status": { "code": "C", "label": "Current" },
"appointedAt": "2015-02-01",
"ceasedAt": null,
"company": {
"acn": "004085616",
"formatted": "004 085 616",
"numberType": { "code": "ACN", "label": "Australian Company Number" },
"name": "ACME WIDGETS PTY LTD",
"type": { "code": "APTY", "label": "Australian Proprietary Company" },
"status": { "code": "REGD", "label": "Registered" },
"abn": "53004085616",
"registeredCharity": false
},
"address": {
"careOf": null,
"line1": "UNIT 7",
"street": "45 STATION STREET",
"locality": "HAWTHORN",
"state": "VIC",
"postcode": "3122",
"country": "AUSTRALIA"
},
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null }
},
{
"object": "role",
"role": { "code": "DR", "label": "Director" },
"status": { "code": "C", "label": "Current" },
"appointedAt": "2021-09-14",
"ceasedAt": null,
"company": {
"acn": "009136109",
"formatted": "009 136 109",
"numberType": { "code": "ACN", "label": "Australian Company Number" },
"name": "NORTHERN RIVERS COMMUNITY FOUNDATION LTD",
"type": { "code": "APUB", "label": "Australian Public Company" },
"status": { "code": "REGD", "label": "Registered" },
"abn": "27009136109",
"registeredCharity": true
},
"address": {
"careOf": null,
"line1": "UNIT 7",
"street": "45 STATION STREET",
"locality": "HAWTHORN",
"state": "VIC",
"postcode": "3122",
"country": "AUSTRALIA"
},
"sourceDocument": { "documentNumber": "3E4455667", "qualifier": null }
},
{
"object": "role",
"role": { "code": "DR", "label": "Director" },
"status": { "code": "E", "label": "Ceased/Former" },
"appointedAt": "2011-03-01",
"ceasedAt": "2018-06-30",
"company": {
"acn": "004249987",
"formatted": "004 249 987",
"numberType": { "code": "ACN", "label": "Australian Company Number" },
"name": "SOUTHERN CROSS LOGISTICS PTY LTD",
"type": { "code": "APTY", "label": "Australian Proprietary Company" },
"status": { "code": "EXAD", "label": "** Under External Administration And/Or Controller Appointed **" },
"abn": "38004249987",
"registeredCharity": false
},
"address": {
"careOf": null,
"line1": null,
"street": "18 BEACH ROAD",
"locality": "MANLY",
"state": "NSW",
"postcode": "2095",
"country": "AUSTRALIA"
},
"sourceDocument": { "documentNumber": "2E7788990", "qualifier": null }
},
{
"object": "role",
"role": { "code": "SR", "label": "Secretary" },
"status": { "code": "E", "label": "Ceased/Former" },
"appointedAt": "2009-06-15",
"ceasedAt": "2014-11-30",
"company": {
"acn": "001000004",
"formatted": "001 000 004",
"numberType": { "code": "ACN", "label": "Australian Company Number" },
"name": "BLUE HARBOUR HOLDINGS PTY LTD",
"type": { "code": "APTY", "label": "Australian Proprietary Company" },
"status": { "code": "REGD", "label": "Registered" },
"abn": "71001000004",
"registeredCharity": false
},
"address": {
"careOf": null,
"line1": null,
"street": "18 BEACH ROAD",
"locality": "MANLY",
"state": "NSW",
"postcode": "2095",
"country": "AUSTRALIA"
},
"sourceDocument": { "documentNumber": "7E1234567", "qualifier": null }
}
],
"hasMore": false,
"nextCursor": null,
"totalCount": 4,
"meta": {
"billable": false,
"product": null,
"requestId": "req_01J9AD9V4X1Y7Z2A"
}
}Response fields
| Field | Type | Description |
|---|---|---|
object | string | Always list. |
extract | object | The extract the roles were read from: id, type (current or historical), purchasedAt, asOf. |
data[] | array | Role objects matching the filters, in ASIC's order. |
data[].object | string | Always role. |
data[].role | code | Office holder role code and label from the office holder roles table, or SH Member from the additional person roles table. |
data[].status | code | Record status from the record status table: C current or E ceased. |
data[].appointedAt | date or null | Date the person was appointed. null for Member roles and where ASIC holds no date. |
data[].ceasedAt | date or null | Date the appointment ceased. null for current roles. |
data[].company.acn | string | ACN, ARBN or ARSN of the company, 9 digits without spaces. |
data[].company.formatted | string | The same number in ASIC's spaced display format. |
data[].company.numberType | code | Heading ASIC gives the number, from the number types table: ACN, ARBN, NUMBER (a registration number that is none of the others) or ARSN. |
data[].company.name | string | Company name as registered, uppercase. |
data[].company.type | code | Organisation type from the organisation types table, for example APTY, APUB, FNOS. |
data[].company.status | code | Organisation status from the organisation statuses table, for example REGD, DRGD, EXAD, SOFF. |
data[].company.abn | string or null | ABN from the Australian Business Register feed, when one exists. |
data[].company.registeredCharity | boolean | true when the company is registered with the ACNC and the person is one of its directors. See get a person for the notice ASIC requires. |
data[].address | object or null | Address ASIC records for the person in this role: careOf, line1, street, locality, state, postcode, country. |
data[].sourceDocument | object or null | documentNumber and qualifier of the document that last changed this role. |
hasMore | boolean | Whether another page exists. |
nextCursor | string or null | Cursor for the next page. See pagination. |
totalCount | integer | Total roles matching the filters across all pages. |
meta | object | Reads are free: billable is false and product is null. |
Errors
| Code | HTTP status | When |
|---|---|---|
extract_required | 402 | You hold no person extract for this person, or you asked for status=former or status=all and hold only a current extract. details.purchase carries the POST body that would satisfy the request, with history: true in the second case. |
extract_not_found | 404 | The extract query parameter names an extract that does not exist, belongs to another person or is not a person extract. |
extract_expired | 410 | The extract is more than 12 months old. Purchase again. |
extract_owner_mismatch | 403 | The extract named by extract was purchased under a different account. |
person_not_found | 404 | The person id is malformed or was never returned by a search under your account. |
validation_error | 422 | status is not one of current, former, all; a role[] value is not a known role code; extract is malformed; or limit is out of range. |
When you hold a current extract and ask for ceased roles, the 402 tells you a historical extract is needed:
{
"error": {
"type": "extract_required_error",
"code": "extract_required",
"message": "Ceased roles are only included in a historical person extract. Purchase one with POST /v1/people/extracts.",
"param": "status",
"asicCode": null,
"requestId": "req_01J9AD9V4X1Y7Z2A",
"docUrl": "https://asicapi.dev/docs/errors#extract_required",
"details": {
"purchase": {
"method": "POST",
"path": "/v1/people/extracts",
"body": {
"searchId": "psr_01J9AB3CD4EFG5HJ6KM7NP8QR",
"personIds": ["prs_8f3k2m9q"],
"history": true,
"includeShareholdings": false
},
"product": "person_extract"
}
}
}
}Notes from the ASIC register
- A view over the extract. This endpoint filters and pages the
roles[]of the same extract that get a person returns whole. It never contacts ASIC and is never billed; see the purchasing guide. - Ordering. ASIC orders roles by role code in its own sequence (director and secretary first, then alternate directors, then external administration roles, then scheme and other roles), with current appointments before ceased ones and ceased appointments in reverse chronological order. Member roles come last. asicapi preserves this order; the
role[]andstatusfilters remove entries without reordering. - Current versus historical. ASIC only returns ceased roles in a historical extract.
status=formerandstatus=alltherefore need an extract purchased withhistory: true; with only a current extract they returnextract_required. Both kinds of extract cost the same, so buy a historical one when you expect to need cessations. - Member roles. When the extract was purchased with
includeShareholdings, ASIC adds a Member role with codeSHfor each company in which the person appears on the members register. The share class, number of shares and paid-up status are in shareholdings; the Member role only tells you the company. ASIC records members for proprietary companies only, and only the twenty largest holders per share class. - Charity directors.
registeredCharityis only populated when the person is a director of that company. The ACNC register, not ASIC, is the authoritative source for a charity's current directors. - Roles held through a company. Roles a company holds in other companies (local agent, trustee, ultimate holding company, responsible entity) are not personal roles and appear on company relationships instead.
- Cessation documents and court orders. The person extract does not carry the director cessation documents or court order details that the company-side office holders endpoint returns. Use the company endpoint when you need those.
Related
Purchase a person extract
Buy the extract this endpoint reads, current or historical.
Get a person
The full person object with roles, licences, shareholdings and documents.
List a person's shareholdings
Share class, number held and paid-up status for each Member role.
Office holder roles
All 37 role codes grouped by management, external administration and scheme roles.
Office holders
How ASIC records appointments, cessations and the documents behind them.
Company office holders
Directors and secretaries of a company by ACN.
Record status and other codes
Current, ceased and future status codes.
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.
List a person's shareholdings in Australian companies
List the shares a person holds in Australian proprietary companies as recorded by ASIC, with share class, number held, paid-up status and the issuing company.