Quickstart
Make your first ASIC calls: look up a company by ACN for free, purchase a current extract, read its directors, buy a person extract and order a document image.
This guide takes you from an empty account to a downloaded ASIC document image. You will look up an Australian company by ACN, purchase its current company extract, read the directors and secretaries from that extract for free, find a director in ASIC's people index and buy her person extract, then order a PDF of a lodged form and download it. Every step shows the exact curl command and the JSON that comes back. Use a test key while you follow along; the sandbox returns ASIC's sample data and never incurs statutory fees, but it goes through the same free, purchase and order tiers as production so the code you write here works unchanged on a live key. Read free lookups, extracts and orders for the model behind the sequence.
Get an API key
Sign in to the asicapi dashboard and create a key. You get two kinds:
asicapi_test_...keys hit the sandbox. Names are replaced with placeholders such asFAMILY NAME, GIVEN NAME1, no ASIC fees are charged, and document images are only available for company 009 136 109. See sandbox.asicapi_live_...keys hit ASIC's live register and incur statutory fees on purchases and orders.
Export the key so the examples below can use it.
export ASICAPI_KEY="asicapi_test_5Kx2mQ9pL7vN3rT8wY1zB4cD6fG0hJ"Send it on every request as a bearer token. See authentication for scopes and key rotation.
Look up a company by ACN
The {id} path segment accepts an ACN, ARBN or ARSN (spaces allowed) or an 11-digit ABN. This call returns the company's identity and status from ASIC's register and is free: meta.billable is false.
curl "https://api.asicapi.dev/v1/companies/004%20085%20616" \
-H "Authorization: Bearer $ASICAPI_KEY"{
"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",
"meta": { "billable": false, "product": null, "requestId": "req_01J8ZK3V7Q0M2X" }
}If the check digit does not match you get a 400 with code acn_invalid. Validate identifiers up front with GET /v1/identifiers/{value} if you take them from user input. Notice that there are no directors or addresses here: those are part of a company extract, which you purchase next.
Purchase a current company extract
A company extract is ASIC's product for everything beyond identity: office holders, registered office and principal place of business, share capital, members, external administration and the recent document list. Buy one with a single POST. ASIC produces the extract during the request and the 201 Created response is the full extract, which asicapi stores for 12 months under the id it returns. This is the first request in the guide that costs money on a live key; on a test key it returns meta.billable: false.
curl -X POST https://api.asicapi.dev/v1/companies/004085616/extracts \
-H "Authorization: Bearer $ASICAPI_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9d2f4c6e-8a1b-4d3e-b5f7-0c2a4e6d8b1f" \
-d '{ "type": "current" }'{
"object": "extract",
"id": "ext_01J9AB3K7Q2XM4",
"kind": "company",
"type": "current",
"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": "8 WATTLE COURT", "locality": "KEW", "state": "VIC", "postcode": "3101", "country": "AUSTRALIA" },
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null },
"cessationDocuments": [],
"court": null
},
{
"object": "officeholder",
"role": { "code": "SR", "label": "Secretary" },
"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": "8 WATTLE COURT", "locality": "KEW", "state": "VIC", "postcode": "3101", "country": "AUSTRALIA" },
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null },
"cessationDocuments": [],
"court": null
}
],
"addresses": [
{
"object": "address",
"type": { "code": "RG", "label": "Registered Office" },
"status": { "code": "C", "label": "Current" },
"from": "2018-01-15",
"to": null,
"address": { "careOf": null, "line1": "LEVEL 3", "street": "12 EXAMPLE STREET", "locality": "MELBOURNE", "state": "VIC", "postcode": "3000", "country": "AUSTRALIA" },
"sourceDocument": { "documentNumber": "0E4987654", "qualifier": null }
},
{
"object": "address",
"type": { "code": "PP", "label": "Principal Place Of Business" },
"status": { "code": "C", "label": "Current" },
"from": "2018-01-15",
"to": null,
"address": { "careOf": null, "line1": "UNIT 7", "street": "45 INDUSTRIAL DRIVE", "locality": "DANDENONG SOUTH", "state": "VIC", "postcode": "3175", "country": "AUSTRALIA" },
"sourceDocument": { "documentNumber": "0E4987654", "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": "8 WATTLE COURT", "locality": "KEW", "state": "VIC", "postcode": "3101", "country": "AUSTRALIA" }
}
],
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null }
}
],
"externalAdministration": null,
"charges": null,
"documents": {
"data": [
{ "object": "document", "documentNumber": "0E5123456", "formCode": "484", "formDescription": "Change to company details", "subForms": [{ "code": "484E", "description": "Change to members register" }], "receivedAt": "2024-05-01", "processedAt": "2024-05-03", "effectiveAt": "2024-04-30", "qualifier": null, "pageCount": 4, "imaged": true, "underRequisition": false, "xbrlAvailable": false, "xbrlDocumentNumber": null, "status": null, "priced": true }
],
"preAsicDocuments": [],
"hasMore": true
},
"annualReturns": null,
"financialReports": null,
"contactAddress": null,
"meta": { "billable": true, "product": "company_extract_current", "requestId": "req_01J9AB3K7Q2XM4" }
}charges, annualReturns and financialReports are null because they only exist in a historical extract; send { "type": "historical" } to receive them along with ceased office holders and former addresses. The whole extract is available again for free at GET /v1/extracts/ext_01J9AB3K7Q2XM4. See purchase a company extract for every option.
Read the office holders
You do not have to hold on to the big extract response. Each section is available at its own path, read from the most recent extract you hold, and the read is free. The response carries an extract reference so you know which purchase it came from, and meta.billable is false.
curl https://api.asicapi.dev/v1/companies/004085616/officeholders \
-H "Authorization: Bearer $ASICAPI_KEY"{
"object": "list",
"data": [
{
"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": "8 WATTLE COURT",
"locality": "KEW",
"state": "VIC",
"postcode": "3101",
"country": "AUSTRALIA"
},
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null },
"cessationDocuments": [],
"court": null
},
{
"object": "officeholder",
"role": { "code": "SR", "label": "Secretary" },
"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": "8 WATTLE COURT",
"locality": "KEW",
"state": "VIC",
"postcode": "3101",
"country": "AUSTRALIA"
},
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null },
"cessationDocuments": [],
"court": null
}
],
"hasMore": false,
"nextCursor": null,
"totalCount": null,
"extract": { "id": "ext_01J9AB3K7Q2XM4", "type": "current", "purchasedAt": "2026-09-04T03:12:44Z", "asOf": "2026-09-04T03:12:41Z" },
"meta": { "billable": false, "product": null, "requestId": "req_01J9AB4M8R3YN5" }
}Role codes come from ASIC's office holder role table. DR is a director, SR a secretary, LD an alternate director, VQ a liquidator appointed in a creditors' voluntary winding up. The full list is on the office holders concept page. Had you skipped the previous step, this call would have returned 402 Payment Required with code extract_required and the purchase request to make in details.purchase; status=all, which includes ceased office holders, needs a historical extract and returns the same error while you hold only a current one.
Search for a person and purchase a person extract
ASIC indexes people by family name, given names and, where recorded, date of birth. Family name and at least one given name are required. The search is free and returns up to 100 matches plus a searchId; each match has a person id that stays valid for 30 days.
curl "https://api.asicapi.dev/v1/people/search?familyName=SMITH&givenName=JANE&birthDateFrom=1975-01-01&birthDateTo=1975-12-31" \
-H "Authorization: Bearer $ASICAPI_KEY"{
"object": "list",
"searchId": "psr_01J8ZK5A9C3D7E",
"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_2q7v4n1x",
"name": { "familyName": "SMITH", "givenNames": ["JANE"], "formatted": "JANE SMITH" },
"birth": { "date": "1975-11-20", "locality": "PERTH", "stateOrCountry": "WA" },
"formerName": { "familyName": "BROWN", "givenNames": ["JANE"], "formatted": "JANE BROWN" }
}
],
"hasMore": false,
"nextCursor": null,
"totalCount": 2,
"meta": { "billable": false, "product": null, "requestId": "req_01J8ZK5B0F2G6H" }
}A person's directorships, licences and shareholdings are a person extract, purchased per person. Pass the searchId and the ids you want (up to 100 in one request) to POST /v1/people/extracts. The response is a list with one extract per person, each with its own ext_ id.
curl -X POST https://api.asicapi.dev/v1/people/extracts \
-H "Authorization: Bearer $ASICAPI_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 2b7e9f31-4c5d-4a6e-8f90-1a2b3c4d5e6f" \
-d '{ "searchId": "psr_01J8ZK5A9C3D7E", "personIds": ["prs_8f3k2m9q"], "history": false, "includeShareholdings": true }'{
"object": "list",
"data": [
{
"object": "extract",
"id": "ext_01J9AB6P0T5AQ7",
"kind": "person",
"type": "current",
"subject": { "id": "prs_8f3k2m9q", "name": { "familyName": "SMITH", "givenNames": ["JANE", "LOUISE"], "formatted": "JANE LOUISE SMITH" } },
"purchasedAt": "2026-09-04T03:20:10Z",
"asOf": "2026-09-04T03:20:08Z",
"expiresAt": "2027-09-04T03:20:10Z",
"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.",
"person": {
"id": "prs_8f3k2m9q",
"asicIdentifier": "012345678",
"name": { "familyName": "SMITH", "givenNames": ["JANE", "LOUISE"], "formatted": "JANE LOUISE SMITH" },
"birth": { "date": "1975-04-03", "locality": "MELBOURNE", "stateOrCountry": "VIC" },
"formerName": null
},
"roles": [
{
"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": null, "street": "8 WATTLE COURT", "locality": "KEW", "state": "VIC", "postcode": "3101", "country": "AUSTRALIA" },
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null }
},
{
"object": "role",
"role": { "code": "SR", "label": "Secretary" },
"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": null, "street": "8 WATTLE COURT", "locality": "KEW", "state": "VIC", "postcode": "3101", "country": "AUSTRALIA" },
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null }
}
],
"licences": [],
"shareholdings": [
{
"object": "shareholding",
"classCode": "ORD",
"numberHeld": 1000,
"beneficiallyOwned": true,
"fullyPaid": true,
"status": { "code": "C", "label": "Current" },
"jointHolding": false,
"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
},
"sourceDocument": { "documentNumber": "0E5123456", "qualifier": null }
}
],
"documents": [],
"notices": [],
"meta": { "billable": true, "product": "person_extract", "requestId": "req_01J9AB6P1U6BR8" }
}
],
"hasMore": false,
"nextCursor": null,
"totalCount": 1,
"meta": { "billable": true, "product": "person_extract", "requestId": "req_01J9AB6P1U6BR8" }
}From now on GET /v1/people/prs_8f3k2m9q and GET /v1/people/prs_8f3k2m9q/roles read this extract for free and carry the same extract reference you saw on the office holders list.
Order a document image
Every form lodged with ASIC has a nine-character document number. Ordering the image is asynchronous: the API accepts the order with 202 Accepted, ASIC retrieves the pages from its imaging system, and the order becomes ready with a download URL. The fee is incurred at acceptance. On a test key only documents belonging to company 009 136 109 have images, so use one of its document numbers.
curl -X POST https://api.asicapi.dev/v1/documents/0E5123456/image-orders \
-H "Authorization: Bearer $ASICAPI_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6c1f9a2e-3b44-4d0f-9d8e-1a2b3c4d5e6f" \
-d '{ "delivery": { "method": "web" } }'{
"object": "order",
"id": "ord_01J8ZK6M4R9S2T",
"type": "document_image",
"status": "pending",
"documents": [
{
"object": "document",
"documentNumber": "0E5123456",
"formCode": "484",
"formDescription": "Change to company details",
"subForms": [{ "code": "484E", "description": "Change to members register" }],
"receivedAt": "2024-05-01",
"processedAt": "2024-05-03",
"effectiveAt": "2024-04-30",
"qualifier": null,
"pageCount": 4,
"imaged": true,
"underRequisition": false,
"xbrlAvailable": false,
"xbrlDocumentNumber": null,
"status": null,
"priced": true
}
],
"delivery": { "method": "web", "email": null },
"downloadUrl": null,
"asicRequestIds": [],
"createdAt": "2026-09-04T01:12:08Z",
"readyAt": null,
"meta": { "billable": true, "product": "document_image", "requestId": "req_01J8ZK6M5U1V3W" }
}Poll the order until status is ready, or subscribe to the order.ready webhook instead of polling. Polling is free.
curl https://api.asicapi.dev/v1/orders/ord_01J8ZK6M4R9S2T \
-H "Authorization: Bearer $ASICAPI_KEY"{
"object": "order",
"id": "ord_01J8ZK6M4R9S2T",
"type": "document_image",
"status": "ready",
"documents": [
{
"object": "document",
"documentNumber": "0E5123456",
"formCode": "484",
"formDescription": "Change to company details",
"subForms": [{ "code": "484E", "description": "Change to members register" }],
"receivedAt": "2024-05-01",
"processedAt": "2024-05-03",
"effectiveAt": "2024-04-30",
"qualifier": null,
"pageCount": 4,
"imaged": true,
"underRequisition": false,
"xbrlAvailable": false,
"xbrlDocumentNumber": null,
"status": null,
"priced": true
}
],
"delivery": { "method": "web", "email": null },
"downloadUrl": "https://api.asicapi.dev/v1/orders/ord_01J8ZK6M4R9S2T/download",
"asicRequestIds": ["000114747"],
"createdAt": "2026-09-04T01:12:08Z",
"readyAt": "2026-09-04T01:12:41Z",
"meta": { "billable": false, "product": null, "requestId": "req_01J8ZK7C8X4Y9Z" }
}Download the PDF with the same bearer token. The URL expires seven days after readyAt.
curl -L -o 0E5123456.pdf https://api.asicapi.dev/v1/orders/ord_01J8ZK6M4R9S2T/download \
-H "Authorization: Bearer $ASICAPI_KEY"Next steps
Free lookups, extracts and orders
The three tiers, the 402 you get without an extract, retention and reconciliation.
Authentication
Live and test keys, scopes, jurisdictions and key rotation.
Requests and responses
Headers, JSON conventions, the extract reference and the meta billing object.
Errors
Every error code with its HTTP status and the ASIC rejection it maps to.
Purchase a company extract
Current, historical and relational extracts and the documents option.
Introduction
asicapi is a JSON REST API over the ASIC company register, giving developers company extracts, office holders, people, documents and charges by ACN.
Authentication and API keys
Authenticate to the asicapi REST API with bearer API keys, understand live and test key prefixes, product scopes, jurisdictions and how to rotate keys safely.