asicapidocs

Pagination and result limits

How asicapi paginates ASIC search results and document lists with cursors, the 100-name cap on online company name searches, and document list date windows.

Lists in asicapi are paginated with an opaque cursor. You ask for a page with limit, read hasMore, and pass nextCursor back to get the next page. The same shape is used for name search results, office holders, members, documents, register browses and weekly summaries. Two ASIC-specific rules sit on top of this: online company name searches are capped by ASIC at 100 names, and company document lists can be windowed by years or by a date range.

The list shape

Response
{
  "object": "list",
  "data": [
    { "object": "document", "documentNumber": "0E5123456", "formCode": "484", "formDescription": "Change to company details", "subForms": [], "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 }
  ],
  "hasMore": true,
  "nextCursor": "eyJvZmZzZXQiOjUwLCJ0b2tlbiI6IjAwMDExNDc0NyJ9",
  "totalCount": 412,
  "meta": { "billable": false, "product": null, "requestId": "req_01J8ZKC2D7E1F5" }
}
FieldTypeDescription
dataarrayThe items on this page, in the order ASIC returns them
hasMorebooleantrue when more items exist beyond this page
nextCursorstring or nullOpaque token for the next page. null when hasMore is false
totalCountinteger or nullTotal items matching the request when ASIC reports one (name searches, people searches, document lists). null where ASIC does not supply a count
extractobjectPresent only on lists served from a purchased extract (office holders, members and the other section endpoints). Identifies the extract being paged; see requests and responses

Query parameters

Prop

Type

Request
curl "https://api.asicapi.dev/v1/companies/004085616/documents?limit=100&cursor=eyJvZmZzZXQiOjUwLCJ0b2tlbiI6IjAwMDExNDc0NyJ9" \
  -H "Authorization: Bearer $ASICAPI_KEY"

Cursors encode the position in the result set and are valid for 30 minutes. Changing any filter while paginating returns 400 validation_error with param set to cursor; start a new list instead. Paging is never billable: free lookups are free on every page, and section endpoints page over the extract you already hold.

Section endpoints page over the extract you hold

Office holders, addresses, share capital, members, charges, a person's roles and the other section endpoints do not query ASIC when you page through them. They paginate over the most recent extract you purchased, or the one you name with the extract query parameter, and every page carries the same extract reference and meta.billable: false. Because the extract is a fixed snapshot, a cursor over it is stable: the list cannot change under you between pages. To page over newer data, purchase a new extract and start again. If you hold no suitable extract the first page returns 402 extract_required; see free lookups, extracts and orders.

Order of results

Ordering is ASIC's, not alphabetical. Office holders are grouped by role in ASIC's sequence, then current before ceased, with ceased records newest first. Documents are newest first by received date. Name search results are ordered by score, then name. Pass sortBy=name to a name search if you prefer alphabetical results.

The 100-name cap on company name searches

ASIC's online names index will return at most 100 names for one search. The cap applies at the point where ASIC selects names, before scoring and before your limit, so a broad search on a common word will not paginate past 100 even though the register holds far more matches. Two things can happen when a search is too broad:

  • ASIC finds more than 100 names at the exact match level, or finds no exact match and more than 100 at the primary key level. asicapi returns 422 too_many_matches with details.counts showing how many exact and total matches ASIC found.
  • ASIC finds fewer than 100 names, but all are rejected by your criteria (for example every match scored below minScore) while more than 100 exist on other keys. asicapi returns 404 no_matches with details.counts where returned is 0 and found is non-zero.
Response (422 Unprocessable Entity)
{
  "error": {
    "type": "invalid_request_error",
    "code": "too_many_matches",
    "message": "ASIC found 0 exact and 1874 primary key matches for \"PACIFIC\". Add words to the name, set exact=true or narrow the scope, or use the offline search.",
    "param": "q",
    "asicCode": "ON52",
    "requestId": "req_01J8ZKD3E8F2G6",
    "details": { "counts": { "returned": 0, "found": 1874 } },
    "docUrl": "https://asicapi.dev/docs/errors#too_many_matches"
  }
}

Ways to stay under the cap:

TechniqueEffect
exact=trueOnly the single name that matches exactly is returned
More words in qReduces the candidate set at the primary key level
scope=registered-companiesExcludes business names, reservations and deregistered organisations
types[]=APTYRestrict to one organisation type
includeDeregistered=falseDrop deregistered companies
minScore=90Drop weak matches (applied after selection, so this alone will not lift the cap)

Offline search for the rest

When you need every match, use the offline name search. POST /v1/companies/search/offline accepts the same search parameters, returns 202 Accepted with an offlineSearch object, and ASIC runs the search against the full index as a batch job. The complete result set is delivered to the email address or webhook you nominate, with no 100-name cap.

Request
curl -X POST https://api.asicapi.dev/v1/companies/search/offline \
  -H "Authorization: Bearer $ASICAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "q": "PACIFIC", "scope": "registered-companies", "delivery": { "method": "email", "email": "searches@example.com.au" } }'
Response (202 Accepted)
{
  "object": "offlineSearch",
  "id": "ofs_01J8ZKE4F9G3H7",
  "status": "pending",
  "q": "PACIFIC",
  "scope": "registered-companies",
  "deliveredTo": "searches@example.com.au",
  "createdAt": "2026-09-04T01:20:44Z",
  "meta": { "billable": true, "product": "name_search", "requestId": "req_01J8ZKE4G0H4J8" }
}

The offline_search.ready webhook fires when the results are available.

People search limits

People searches return up to 100 matches as well. When ASIC's index holds more than 100 candidates it returns only a fuzzy count of how many names would match, and asicapi responds with 422 too_many_matches. Narrow with a second given name (givenName2) or a date of birth range (birthDateFrom, birthDateTo).

Document list windows

A company's document list can hold thousands of forms going back to 1991. GET /v1/companies/{id}/documents lets you window the list before paginating.

Prop

Type

Supplying both years and a date range returns 400 document_period_conflict. A from without a to, or a from later than to, returns 400 document_date_range_invalid. With no window at all, every document is selected and paginated newest first.

Further documents lodged

ASIC's document list is sent in a fixed window and, when a company has lodged more documents than that window holds, ASIC marks the last document with a notice that there are further documents lodged by this company. asicapi turns this into ordinary pagination: hasMore is true, nextCursor is set, and requesting the next page asks ASIC for the next window. totalCount reflects ASIC's count of documents in the selected period, so you can show "showing 50 of 412" without fetching everything.

A purchased company extract also embeds a document list, sized by the optional documents object on POST /v1/companies/{id}/extracts ({ "years": 5, "limit": 200 }). The extract holds that window only, with documents.hasMore: true when the company has lodged more. The embedded list is a snapshot as at the purchase and is not paginated; use the free GET /v1/companies/{id}/documents endpoint to page through the full, live document list.

Register browses

GET /v1/registers/{register}/entries browses ASIC's professional and banned registers by family name prefix. ASIC returns entries in name order from the browse key onward and asicapi paginates them with the same cursor mechanism. totalCount is null for register browses because ASIC does not report a total.

On this page