Company extracts: current, historical and relational
What an ASIC company extract is, how to purchase a current, historical or relational extract by ACN with asicapi, and how to read each section.
An ASIC company extract is the official report of what the Australian Securities and Investments Commission holds about a company: its identifiers, addresses, office holders, share capital, members, charges, documents and reporting history. A current extract shows the position today. A historical extract adds every record that has ceased, so you can see former directors, previous registered offices, satisfied charges and past annual returns. A relational extract turns the view around and lists the roles, licences and shareholdings the company itself holds in other companies. On asicapi an extract is something you purchase once by ACN, ARBN or ARSN with a single POST, and then read as often as you like, free of ASIC fees, through the extract endpoints and the company section endpoints.
An extract is a purchased snapshot
ASIC charges a statutory fee each time an extract is produced, and the sections inside it (office holders, addresses, share capital, members and so on) do not exist outside one. asicapi keeps that model explicit instead of hiding it behind individual GET calls:
- You buy an extract with
POST /v1/companies/{id}/extracts. ASIC produces it in the same call, so the response is the complete extract with HTTP 201 and an id of the formext_.... - The extract is a snapshot taken at
asOf. asicapi stores it for 12 months, and every read of it is free. - The section endpoints such as
GET /v1/companies/{id}/officeholdersread from the most recent extract you hold that contains the section. They never purchase anything. If you hold nothing suitable they answer402 Payment Requiredand tell you exactly what to buy.
The purchasing guide applies the same rules to person, register and weekly summary extracts and to asynchronous orders such as document images.
Buy, then read
Look the company up for free
GET /v1/companies/{id} returns the company's identity and status (name, numbers, type, class, status, dates, former names) without an extract and without an ASIC fee. Use it to confirm you have the right company before you spend anything.
Purchase the extract
POST /v1/companies/{id}/extracts with a type of current, historical or relational. The response is the whole extract. Keep the id if you want to refer to this exact snapshot later.
Read the sections
Call the section endpoints, or GET /v1/extracts/{id} for the whole extract again. Each section response carries an extract reference telling you which purchase it came from and when ASIC produced it, and meta.billable is false.
The three extract types
| Type | ASIC product | What it contains | Organisation types |
|---|---|---|---|
current | company_extract_current | Company details and former names, current addresses (plus any future-dated address), current office holders, current share classes, the current top twenty members per class, external administration appointees and documents when the status is EXAD, financial reports, the document list and the contact address | APTY, APUB, RACN, FNOS, MISM |
historical | company_extract_historical | Everything in a current extract plus every ceased record: former addresses with their to dates, ceased office holders with cessationDocuments[], cancelled share classes, members who dropped out of the top twenty, satisfied charges, and annual returns for every year | APTY, APUB, RACN, FNOS, MISM |
relational | company_relationships | The roles the company holds in other companies (rolesHeld[], for example ultimate holding company, local agent, trustee or responsible entity), the licences it holds (licences[]) and the shares it holds in proprietary companies (shareholdings[]) | APTY, APUB, FNOS, RACN |
Every dated record in a current or historical extract carries a status of current, ceased or future. A current extract contains only current and future-dated records. A historical extract contains current and ceased records together, with ceased records sorted most recently ceased first. Purchasing an extract for any other organisation type, or a relational extract for a managed investment scheme, returns extract_unavailable_for_type (HTTP 422). Trusts and non-registered entities have a free document list but no extract; see companies on the ASIC register.
Sections, keys and endpoints
An ASIC extract is assembled from sections. Each one is a key on the extract object returned by the purchase and by GET /v1/extracts/{id}, and each has a section endpoint that reads it from the extract you hold.
| ASIC extract section | Key in the extract object | Section endpoint |
|---|---|---|
| Company details (name, ACN, type, status, dates, former names) | company | GET /v1/companies/{id} (free, no extract needed) |
| Addresses | addresses | GET /v1/companies/{id}/addresses |
| Office holders | officeholders | GET /v1/companies/{id}/officeholders |
| Share structure | shareCapital | GET /v1/companies/{id}/share-capital |
| Members | members | GET /v1/companies/{id}/members |
| Documents relating to external administration | externalAdministration | GET /v1/companies/{id}/external-administration |
| Satisfied charges (historical only) | charges | GET /v1/companies/{id}/charges |
| Document list and pre-ASIC documents | documents | GET /v1/companies/{id}/documents (also free without an extract) |
| Annual returns (historical only) | annualReturns | GET /v1/companies/{id}/annual-returns |
| Financial reports | financialReports | GET /v1/companies/{id}/financial-reports |
| Contact address for ASIC use only | contactAddress | GET /v1/companies/{id}/addresses?type[]=CC |
| Roles held, licences and shareholdings (relational only) | rolesHeld, licences, shareholdings | GET /v1/companies/{id}/relationships |
Keys that do not apply to the extract type are null: charges and annualReturns are null on a current extract, and a relational extract carries rolesHeld, licences and shareholdings instead of the company sections. The documents key holds the document list as ASIC included it at purchase ({ "data": [...], "preAsicDocuments": [...], "hasMore": true }); the documents endpoint is always live and free, so use it for paging and filtering.
Purchasing an extract
curl -X POST https://api.asicapi.dev/v1/companies/004085616/extracts \
-H "Authorization: Bearer $ASICAPI_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6c1f0a2e-4b8d-4f3a-9e7c-1d2b3c4d5e6f" \
-d '{ "type": "historical", "documents": { "years": 5, "limit": 200 } }'The optional documents object limits how much of the document list ASIC includes in the extract (years back from today and a limit on the number of documents). waiverToken is also accepted for accounts that hold a fee waiver. Send an Idempotency-Key so that a retried request cannot buy the same extract twice.
{
"object": "extract",
"id": "ext_01J9AB3K7Q2XM4",
"kind": "company",
"type": "historical",
"subject": {
"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
},
"purchasedAt": "2026-09-04T03:12:44Z",
"asOf": "2026-09-04T03:12:41Z",
"expiresAt": "2027-09-04T03:12:44Z",
"disclaimer": "This extract contains information derived from the Australian Securities and Investments Commission's (ASIC) database under section 1274A of the Corporations Act 2001. Please advise ASIC of any error which you may identify.",
"company": {
"object": "company",
"id": "004085616",
"acn": "004085616",
"formatted": "004 085 616",
"numberType": { "code": "ACN", "label": "Australian Company Number" },
"abn": "53004085616",
"name": "ACME WIDGETS PTY LTD",
"nameStartDate": "2004-03-12",
"type": { "code": "APTY", "label": "Australian Proprietary Company" },
"class": { "code": "LMSH", "label": "Limited By Shares" },
"subClass": { "code": "PROP", "label": "Proprietary Company" },
"status": { "code": "REGD", "label": "Registered" },
"registrationDate": "1948-07-06",
"reviewDate": "2026-07-06",
"deregistration": null,
"stateOfRegistration": { "code": "VIC", "label": "Victoria" },
"placeOfRegistration": "VICTORIA",
"previousStateNumber": "C0123456X",
"controllingJurisdiction": { "code": "ASIC", "label": "Australian Securities and Investments Commission" },
"governanceType": null,
"disclosingEntity": false,
"registeredCharity": false,
"principalPlace": { "locality": "MELBOURNE", "state": "VIC", "postcode": "3000" },
"formerNames": [
{ "name": "ACME WIDGET COMPANY PTY LTD", "from": "1948-07-06", "to": "2004-03-12", "sourceDocument": { "documentNumber": "0E1122334", "qualifier": null } }
],
"schemeCategories": [],
"satisfiedChargesExtractSize": "small"
},
"officeholders": [
{
"object": "officeholder",
"role": { "code": "DR", "label": "Director" },
"status": { "code": "C", "label": "Current" },
"appointedAt": "2015-02-01",
"ceasedAt": null,
"party": {
"type": "person",
"person": { "familyName": "SMITH", "givenNames": ["JANE", "LOUISE"], "formatted": "JANE LOUISE SMITH" },
"birth": { "date": "1975-04-03", "locality": "MELBOURNE", "stateOrCountry": "VIC" },
"organisation": null
},
"address": { "careOf": null, "line1": null, "street": "4 SAMPLE AVENUE", "locality": "KEW", "state": "VIC", "postcode": "3101", "country": "AUSTRALIA" },
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null },
"cessationDocuments": [],
"court": null
},
{
"object": "officeholder",
"role": { "code": "DR", "label": "Director" },
"status": { "code": "E", "label": "Ceased/Former" },
"appointedAt": "2004-03-12",
"ceasedAt": "2015-02-01",
"party": {
"type": "person",
"person": { "familyName": "NGUYEN", "givenNames": ["PETER"], "formatted": "PETER NGUYEN" },
"birth": { "date": "1961-11-20", "locality": "SYDNEY", "stateOrCountry": "NSW" },
"organisation": null
},
"address": { "careOf": null, "line1": null, "street": "18 EXAMPLE ROAD", "locality": "HAWTHORN", "state": "VIC", "postcode": "3122", "country": "AUSTRALIA" },
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null },
"cessationDocuments": [
{ "documentNumber": "0E5123456", "receivedAt": "2015-02-03", "formCode": "484", "pageCount": 2, "description": "Change to company details" }
],
"court": null
}
],
"addresses": [
{
"object": "address",
"type": { "code": "RG", "label": "Registered Office" },
"status": { "code": "C", "label": "Current" },
"from": "2018-01-15",
"to": null,
"address": { "careOf": "C/- EXAMPLE ACCOUNTANTS", "line1": "LEVEL 3", "street": "12 EXAMPLE STREET", "locality": "MELBOURNE", "state": "VIC", "postcode": "3000", "country": "AUSTRALIA" },
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null }
}
],
"shareCapital": [
{
"object": "shareClass",
"classCode": "ORD",
"classTitle": "ORDINARY",
"status": { "code": "C", "label": "Current" },
"sharesIssued": 1000,
"amountPaid": "1000.00",
"amountDue": "0.00",
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null }
}
],
"members": [
{
"object": "shareholding",
"classCode": "ORD",
"numberHeld": 1000,
"beneficiallyOwned": true,
"fullyPaid": true,
"status": { "code": "C", "label": "Current" },
"jointHolding": false,
"holders": [
{
"party": { "type": "person", "person": { "familyName": "SMITH", "givenNames": ["JANE", "LOUISE"], "formatted": "JANE LOUISE SMITH" }, "birth": null, "organisation": null },
"address": { "careOf": null, "line1": null, "street": "4 SAMPLE AVENUE", "locality": "KEW", "state": "VIC", "postcode": "3101", "country": "AUSTRALIA" }
}
],
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null }
}
],
"externalAdministration": null,
"charges": [
{
"object": "charge",
"chargeNumber": "1234567",
"status": { "code": "SATF", "label": "Satisfied" },
"type": { "code": "B", "label": "Both Fixed & Floating" },
"registeredAt": "2005-03-14T02:15:00Z",
"createdAt": "2005-03-10",
"expiresAt": null,
"satisfiedAt": "2011-08-01",
"preAsicChargeNumber": null,
"chargees": [
{ "party": { "type": "organisation", "person": null, "birth": null, "organisation": { "number": "000000019", "numberType": { "code": "ACN", "label": "Australian Company Number" }, "name": "NATIONAL TRADING BANK LIMITED", "abn": null } } }
],
"documents": []
}
],
"documents": {
"data": [
{
"object": "document",
"documentNumber": "0E5123456",
"formCode": "484",
"formDescription": "Change to company details",
"subForms": [{ "code": "484B", "description": "Change to officeholders" }],
"receivedAt": "2015-02-03",
"processedAt": "2015-02-04",
"effectiveAt": "2015-02-01",
"qualifier": null,
"pageCount": 2,
"imaged": true,
"underRequisition": false,
"xbrlAvailable": false,
"xbrlDocumentNumber": null,
"status": null,
"priced": true
}
],
"preAsicDocuments": [],
"hasMore": true
},
"annualReturns": [
{ "year": "2002", "outstanding": false, "dueDate": "2003-01-31", "extendedDueDate": null, "agmDueDate": null, "extendedAgmDueDate": null, "agmHeldDate": null }
],
"financialReports": [],
"contactAddress": null,
"meta": { "billable": true, "product": "company_extract_historical", "requestId": "req_01J9AB3K7Q2XM4" }
}The company key is the same object GET /v1/companies/{id} returns, minus meta, frozen as at asOf. The sections are plain arrays rather than paginated lists because the extract is complete. Sandbox keys return the same shape with "billable": false and ASIC's placeholder names.
Reading a section
Once you hold an extract, the section endpoints read from it. They accept the same filters as before (status, role[], type[], classCode), and an optional extract query parameter naming a specific extract id when you do not want the most recent one.
curl "https://api.asicapi.dev/v1/companies/004085616/officeholders?status=former&role[]=DR" \
-H "Authorization: Bearer $ASICAPI_KEY"{
"object": "list",
"data": [
{
"object": "officeholder",
"role": { "code": "DR", "label": "Director" },
"status": { "code": "E", "label": "Ceased/Former" },
"appointedAt": "2004-03-12",
"ceasedAt": "2015-02-01",
"party": {
"type": "person",
"person": { "familyName": "NGUYEN", "givenNames": ["PETER"], "formatted": "PETER NGUYEN" },
"birth": { "date": "1961-11-20", "locality": "SYDNEY", "stateOrCountry": "NSW" },
"organisation": null
},
"address": { "careOf": null, "line1": null, "street": "18 EXAMPLE ROAD", "locality": "HAWTHORN", "state": "VIC", "postcode": "3122", "country": "AUSTRALIA" },
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null },
"cessationDocuments": [
{ "documentNumber": "0E5123456", "receivedAt": "2015-02-03", "formCode": "484", "pageCount": 2, "description": "Change to company details" }
],
"court": null
}
],
"hasMore": false,
"nextCursor": null,
"totalCount": null,
"extract": { "id": "ext_01J9AB3K7Q2XM4", "type": "historical", "purchasedAt": "2026-09-04T03:12:44Z", "asOf": "2026-09-04T03:12:41Z" },
"meta": { "billable": false, "product": null, "requestId": "req_01J9AB4N2R8YT6" }
}The extract reference is the audit trail: it tells you (and your users) which snapshot the data came from and when ASIC produced it. Store extract.id alongside anything you derive from the data.
When you hold no suitable extract
A section endpoint never buys an extract on your behalf. If you hold none for the company, or the one you hold has expired, the response is 402 Payment Required with error code extract_required and a ready-made purchase instruction in details.purchase:
{
"error": {
"type": "extract_required_error",
"code": "extract_required",
"message": "Office holders are part of a company extract. Purchase one with POST /v1/companies/004085616/extracts.",
"param": null,
"asicCode": null,
"requestId": "req_01J9AB3K7Q2XM4",
"docUrl": "https://asicapi.dev/docs/errors#extract_required",
"details": {
"purchase": {
"method": "POST",
"path": "/v1/companies/004085616/extracts",
"body": { "type": "current" },
"product": "company_extract_current"
}
}
}
}The historical-versus-current rule works the same way. A current extract cannot answer a question about ceased records, so if you hold only a current extract and ask for status=former or status=all, or call the charges, annual returns or financial reports endpoints, the same error is returned with "body": { "type": "historical" } and a message saying a historical extract is needed. A historical extract satisfies every section endpoint, including the current-only views, so if you know you will need ceased records buy the historical extract first rather than both.
One extract serves every section
Buying a current or historical extract once gives you office holders, addresses, share capital, members, external administration, documents and the rest in a single fee. There is no per-section charge, and reading the same section repeatedly costs nothing.
Retention, listing and refreshing
Extracts are retained for 12 months from purchasedAt; expiresAt gives the exact moment. Reading an expired extract by id returns extract_expired (HTTP 410), and the section endpoints ignore expired extracts when choosing the most recent one you hold. GET /v1/companies/{id}/extracts lists the extracts you hold for a company, newest first, with type, purchasedAt and asOf, so you can decide whether the snapshot you have is fresh enough.
An extract never updates itself. To see changes lodged with ASIC since asOf, purchase again: you get a new id, a new asOf and a new fee, and the section endpoints switch to the new extract automatically. Extracts belong to the account that bought them; reading another account's extract id returns extract_owner_mismatch (HTTP 403).
The section 1274A disclaimer
ASIC requires the following wording to accompany every extract, and asicapi returns it verbatim in the disclaimer field on every purchased extract:
This extract contains information derived from the Australian Securities and Investments Commission's (ASIC) database under section 1274A of the Corporations Act 2001. Please advise ASIC of any error which you may identify.
If you republish extract data to end users, show this text with it. Two further notices ASIC prints on paper extracts are worth reproducing: for companies with registeredCharity: true the ACNC text described on the companies page, and for registered Australian bodies a reminder that only limited information is lodged with ASIC and the body's home regulator should also be searched.
Contact address for ASIC use only
The final section of every current and historical extract is the address ASIC uses to correspond with the company, address type CC. ASIC sends the annual statement, invoices and other notices there when the company requests it. ASIC's rule is that this section must always appear last on an extract and that it is for ASIC's use only; it is not an address for service of documents on the company. It is returned in the contactAddress key of the extract (null when the company has not nominated one) and through type[]=CC on the addresses endpoint. See company addresses.
Ordering rules
asicapi preserves ASIC's ordering so that a JSON extract reads the same way as a printed one:
- Office holders are ordered by role in ASIC's fixed sequence (responsible entity, compliance plan auditor, previous executive officer, director, secretary, alternate director, auditor, local agent, ultimate holding company, then the receiver, liquidator, administrator and controller roles). Within a role, current records come first, then ceased records in reverse chronological order of ceasing.
- Addresses are grouped by type in the order registered office, registered office in Australia, principal place of business, registered address in the place of incorporation, current before ceased within each type.
- Documents are in reverse chronological order of the date ASIC received them, newest first.
- Charges are in chronological order of registration, oldest first.
- Members are grouped by share class, ranked by holding. ASIC records only the twenty largest members of each class for a proprietary company, plus anyone tied with the twentieth; a member shown as ceased in a historical extract may simply have dropped out of the top twenty rather than sold out.
- Annual returns are in year order, oldest first, one record per year.
Related
Purchasing
Free lookups, purchased extracts and asynchronous orders explained in one place.
Purchase a company extract
POST /v1/companies/{id}/extracts and the list of extracts you hold.
Get a company
The free company object: identity and status without an extract.
Charges
Satisfied charges read from a historical extract.
Company status
Registered, deregistered and under external administration.
Company status and deregistration
What each ASIC company status means, from registered to strike-off action in progress, deregistered and under external administration, with reasons.
Types of company office holders in Australia
Every ASIC office holder role explained: directors, secretaries, auditors, liquidators, administrators, receivers and responsible entities.