asicapidocs

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.

Proprietary companies must report their members to ASIC, and ASIC records the twenty largest holders in each share class on the register. A person's shareholdings are the other side of that record: every company in which the person is listed as a member, with the share class, the number of shares, whether they are held beneficially and whether they are fully paid. This is how you discover a person's ownership interests in private companies for beneficial ownership, KYC and related-party checks. The endpoint reads from the most recent person extract you hold that was purchased with includeShareholdings: true and is free; the extract is bought once with POST /v1/people/extracts, as explained in the purchasing guide.

GEThttps://api.asicapi.dev/v1/people/{personId}/shareholdings

Path parameters

Prop

Type

Query parameters

Prop

Type

Example request

Request
curl "https://api.asicapi.dev/v1/people/prs_8f3k2m9q/shareholdings?status=all" \
  -H "Authorization: Bearer $ASICAPI_KEY"

Example response

Response
{
  "object": "list",
  "extract": {
    "id": "ext_01J9AG8K1L4M7N2P",
    "type": "historical",
    "purchasedAt": "2026-09-04T03:12:44Z",
    "asOf": "2026-09-04T03:12:41Z"
  },
  "data": [
    {
      "object": "shareholding",
      "classCode": "ORD",
      "numberHeld": 500,
      "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
      },
      "address": {
        "careOf": null,
        "line1": "UNIT 7",
        "street": "45 STATION STREET",
        "locality": "HAWTHORN",
        "state": "VIC",
        "postcode": "3122",
        "country": "AUSTRALIA"
      },
      "sourceDocument": { "documentNumber": "0E5123456", "qualifier": null }
    },
    {
      "object": "shareholding",
      "classCode": "A",
      "numberHeld": 1200,
      "beneficiallyOwned": false,
      "fullyPaid": true,
      "status": { "code": "C", "label": "Current" },
      "jointHolding": true,
      "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": "6E2233445", "qualifier": "AR 2011" }
    },
    {
      "object": "shareholding",
      "classCode": "ORD",
      "numberHeld": 100,
      "beneficiallyOwned": true,
      "fullyPaid": false,
      "status": { "code": "E", "label": "Ceased/Former" },
      "jointHolding": false,
      "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 }
    }
  ],
  "hasMore": false,
  "nextCursor": null,
  "totalCount": 3,
  "meta": {
    "billable": false,
    "product": null,
    "requestId": "req_01J9AE2B7C3D8E4F"
  }
}

Response fields

FieldTypeDescription
objectstringAlways list.
extractobjectThe extract the holdings were read from: id, type (current or historical), purchasedAt, asOf.
data[]arrayShareholding records for the person.
data[].objectstringAlways shareholding.
data[].classCodestringShare class code as the issuing company reports it, for example ORD, A, PREF. Class titles are on the company's share capital.
data[].numberHeldintegerNumber of shares of that class held.
data[].beneficiallyOwnedboolean or nullWhether the shares are held beneficially. null when the company did not report it.
data[].fullyPaidboolean or nullWhether the shares are fully paid. null when not reported.
data[].statuscodeC current or E ceased. Ceased holdings appear only with status=former or status=all, read from a historical extract.
data[].jointHoldingbooleantrue when the shares are held jointly with one or more other members.
data[].companyobjectSummary of the issuing company: acn, formatted, numberType, name, type, status, abn, registeredCharity.
data[].addressobject or nullMember address as reported by the company.
data[].sourceDocumentobject or nullThe document that last changed the holding; qualifier is set for annual returns (AR 2011) and financial reports (FR 2011).
hasMorebooleanWhether another page exists.
nextCursorstring or nullCursor for the next page. See pagination.
totalCountintegerTotal holdings matching the filter.
metaobjectReads are free: billable is false and product is null.

Errors

CodeHTTP statusWhen
extract_required402You hold no person extract for this person that includes shareholdings, or you asked for ceased holdings and hold only a current one. details.purchase carries the POST body that would satisfy the request, with includeShareholdings: true and, where needed, history: true.
extract_not_found404The extract query parameter names an extract that does not exist, belongs to another person or is not a person extract.
extract_expired410The extract is more than 12 months old. Purchase again.
extract_owner_mismatch403The extract named by extract was purchased under a different account.
person_not_found404The person id is malformed or was never returned by a search under your account.
validation_error422status is not one of current, former, all; extract is malformed; or limit is out of range.
402 Payment Required
{
  "error": {
    "type": "extract_required_error",
    "code": "extract_required",
    "message": "Shareholdings are only included in a person extract purchased with includeShareholdings. Purchase one with POST /v1/people/extracts.",
    "param": null,
    "asicCode": null,
    "requestId": "req_01J9AE2B7C3D8E4F",
    "docUrl": "https://asicapi.dev/docs/errors#extract_required",
    "details": {
      "purchase": {
        "method": "POST",
        "path": "/v1/people/extracts",
        "body": {
          "searchId": "psr_01J9AB3CD4EFG5HJ6KM7NP8QR",
          "personIds": ["prs_8f3k2m9q"],
          "history": false,
          "includeShareholdings": true
        },
        "product": "person_extract"
      }
    }
  }
}

Notes from the ASIC register

  • Shareholdings are opt-in at purchase. ASIC only includes shareholdings in a personal name extract when they are asked for. An extract bought without includeShareholdings has an empty shareholdings[] and this endpoint returns extract_required for it, so decide at purchase time. Including shareholdings does not change the price of the extract.
  • Top twenty members only. For each class of shares issued by a proprietary company, ASIC records the twenty members with the largest holdings, plus any other member holding the same number of shares as the twentieth. A person who holds fewer shares than the twentieth-ranked member does not appear here even though they are a member. Public companies do not report members to ASIC at all, so no public company shareholdings are ever returned.
  • Ceased does not mean sold. In a historical extract, a ceased holding shows that the person stopped being ranked among the twenty recorded members. That may, but does not necessarily, mean they ceased to be a member of the company.
  • Joint holdings. A joint holding is recorded once against each joint holder. The other holders are not listed on the person extract; use the company's members endpoint to see all holders of the same parcel.
  • Timeliness. Members are updated when the company lodges a Form 484 change to members register, or when a company's annual review confirms them. The sourceDocument tells you which lodgement last touched the record, and extract.asOf tells you when the snapshot was taken.

On this page