# Funds

ETF and managed fund profiles with fees, NAV and AUM, plus holdings with their weights.

## Fund profiles

GET `/v1/funds` 

 1 credit per instrument 2 credits with fresh=true Operation ID `funds.profiles`

Issuer, benchmark, fees, domicile and distribution frequency, with the latest net assets, NAV and units on issue. Fees are yearly percentages of net assets, 0.07 for 0.07%.

### Query parameters

- `symbols` array of strings Required  
Comma-separated identifiers, up to 100, like ASX:VAS, isin:AU000000VAS1 or ins\_...  
Up to 100 items
- `listedOn` date  
Resolves tickers as the listing that traded on this day, for tickers that have since been reused. A symbol can carry its own day instead, like ASX:CCL@2021-05-10, which overrides this
- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Response

- `data` array of objects  

  - `apir` string  
  The Australian fund code, only on Australian funds that have one
  - `asOf` timestamp  
  The point in time this data describes. For history and events it's the date of the newest record, or the end of your range when there are none. Live values give when they were observed, and reference data gives when we last confirmed it
  - `aum` number or null  
  Net assets
  - `aumDate` date or null  
  The day aum is from. Some issuers only publish it at month end
  - `benchmark` string or null
  - `currency` string or null  
  Currency of aum and nav
  - `distributionFrequency` string or null  
  One of `monthly` `quarterly` `semi_annual` `annual` `none`
  - `domicile` string or null
  - `inception` date or null
  - `instrument` object  
  What the symbol resolved to

    - `country` string
    - `currency` string
    - `id` string
    - `mic` string  
      Left out for instruments that don't trade on an exchange, like tokens
    - `name` string
    - `symbol` string
    - `ticker` string or null  
      The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
    - `type` string  
      One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
  - `issuer` string or null
  - `managementFee` number or null  
  Yearly percentage of net assets
  - `mer` number or null  
  Management expense ratio as a yearly percentage of net assets
  - `nav` number or null  
  Net asset value per unit
  - `navDate` date or null  
  The day nav is from
  - `symbol` string  
  The symbol as sent
  - `unitsOnIssue` number or null
  - `unitsOnIssueDate` date or null  
  The day unitsOnIssue is from. Some issuers only publish it at month end
- `errors` array of objects  

  - `code` string  
  One of `invalid_symbol` `instrument_not_found` `not_supported` `data_unavailable` `data_pending` `data_failed`
  - `message` string
  - `symbol` string
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/funds?symbols=ASX:VAS,APIR:VAN0002AU" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "symbol": "ASX:VAS",
      "instrument": {
        "id": "ins_34VIJ0fD9K0jwZzgsJL0u",
        "symbol": "ASX:VAS",
        "name": "Vanguard Australian Shares Index ETF",
        "type": "etf",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "asOf": "2026-09-26T06:28:06.407Z",
      "issuer": "Vanguard",
      "benchmark": "S&P/ASX 300 Index",
      "mer": 0.07,
      "managementFee": null,
      "inception": "2009-05-04",
      "domicile": "AU",
      "distributionFrequency": "quarterly",
      "currency": "AUD",
      "navDate": "2026-09-25",
      "nav": 108.6343,
      "aumDate": "2026-08-31",
      "aum": 26886011629.59,
      "unitsOnIssueDate": "2026-08-31",
      "unitsOnIssue": 238156568
    },
    {
      "symbol": "APIR:VAN0002AU",
      "instrument": {
        "id": "ins_34VnaSyvCzVzG3Hh6cfhk",
        "symbol": "ins_34VnaSyvCzVzG3Hh6cfhk",
        "name": "Vanguard Australian Shares Index Fund",
        "type": "fund",
        "currency": "AUD",
        "country": "AU"
      },
      "asOf": "2026-09-27T00:32:01.825Z",
      "issuer": "Vanguard",
      "apir": "VAN0002AU",
      "benchmark": "S&P/ASX 300 Index",
      "mer": 0.16,
      "managementFee": null,
      "inception": "1997-06-30",
      "domicile": "AU",
      "distributionFrequency": "quarterly",
      "currency": "AUD",
      "navDate": "2026-09-25",
      "nav": 3.015,
      "aumDate": "2026-08-31",
      "aum": 28506287586.03,
      "unitsOnIssueDate": "2026-08-31",
      "unitsOnIssue": 9097700319.91
    }
  ],
  "errors": [],
  "meta": {
    "credits": 2,
    "requestId": "req_34VoxwZx2ECSFrTpKzvfw"
  }
}
```

## Fund holdings

GET `/v1/holdings` 

 2 credits per instrument  Growth and up 4 credits with fresh=true Operation ID `funds.holdings`

Every position of a fund with its weight, from the latest snapshot or the one on or before date. An index like INDEX:AXJO returns the holdings of a fund tracking it, named in fund. Shares and value are for the whole portfolio the issuer publishes, which can pool several share classes, so they can add up to more than the fund's net assets in funds.profiles. Weights hold either way.

### Query parameters

- `symbols` array of strings Required  
Comma-separated identifiers, up to 100, like ASX:VAS, isin:AU000000VAS1 or ins\_...  
Up to 100 items
- `listedOn` date  
Resolves tickers as the listing that traded on this day, for tickers that have since been reused. A symbol can carry its own day instead, like ASX:CCL@2021-05-10, which overrides this
- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json
- `date` date  
Return the snapshot on or before this day

### Response

- `data` array of objects  

  - `asOf` timestamp  
  The point in time this data describes. For history and events it's the date of the newest record, or the end of your range when there are none. Live values give when they were observed, and reference data gives when we last confirmed it
  - `currency` string or null  
  Currency of every position's value
  - `date` date  
  The day of this snapshot
  - `fund` object  
  The fund these positions belong to

    - `country` string
    - `currency` string
    - `id` string
    - `mic` string  
      Left out for instruments that don't trade on an exchange, like tokens
    - `name` string
    - `symbol` string
    - `ticker` string or null  
      The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
    - `type` string  
      One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
  - `instrument` object  
  What the symbol resolved to

    - `country` string
    - `currency` string
    - `id` string
    - `mic` string  
      Left out for instruments that don't trade on an exchange, like tokens
    - `name` string
    - `symbol` string
    - `ticker` string or null  
      The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
    - `type` string  
      One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
  - `positions` array of objects  

    - `assetClass` string or null  
      One of `equity` `fixed_income` `cash` `derivative` `fund` `real_estate` `commodity` `other`
    - `country` string or null
    - `currency` string or null  
      The constituent's own trading currency
    - `industry` string or null  
      Industry id from /v1/sectors, null until the constituent resolves and is classified
    - `instrumentId` string or null  
      Our id for the constituent, null until it resolves to an instrument
    - `isin` string or null
    - `mic` string or null
    - `name` string
    - `position` integer  
      Order in the fund's holdings list, from 1
    - `sector` string or null  
      Sector id from /v1/sectors, null until the constituent resolves and is classified
    - `shares` number  
      Shares or units held, left out for positions held by face value
    - `symbol` string or null  
      The constituent's symbol, null until it resolves to an instrument
    - `ticker` string or null
    - `value` number or null
    - `weight` number or null  
      Percentage of net assets, 4.5 for 4.5%
  - `symbol` string  
  The symbol as sent
  - `totalValue` number or null  
  What the positions' value adds up to, null when any position has none
- `errors` array of objects  

  - `code` string  
  One of `invalid_symbol` `instrument_not_found` `not_supported` `data_unavailable` `data_pending` `data_failed`
  - `message` string
  - `symbol` string
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/holdings?symbols=ASX:ILC&date=2026-06-30" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "symbol": "ASX:ILC",
      "instrument": {
        "id": "ins_34VN94x92RVOX5Mdo1sX6",
        "symbol": "ASX:ILC",
        "name": "iShares S&P/ASX 20 ETF",
        "type": "etf",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "asOf": "2026-06-30T00:00:00Z",
      "fund": {
        "id": "ins_34VN94x92RVOX5Mdo1sX6",
        "symbol": "ASX:ILC",
        "name": "iShares S&P/ASX 20 ETF",
        "type": "etf",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "date": "2026-06-30",
      "currency": "AUD",
      "positions": [
        {
          "position": 1,
          "instrumentId": "ins_34VMvft6kZEXThtzFGcAL",
          "symbol": "ASX:BHP",
          "name": "BHP GROUP LTD",
          "ticker": "BHP",
          "mic": "XASX",
          "isin": "AU000000BHP4",
          "weight": 17.73424,
          "shares": 2304033,
          "value": 136859560.2,
          "currency": "AUD",
          "sector": "Materials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 2,
          "instrumentId": "ins_34VMzDyZVnJThtl1lLWBM",
          "symbol": "ASX:CBA",
          "name": "COMMONWEALTH BANK OF AUSTRALIA",
          "ticker": "CBA",
          "mic": "XASX",
          "isin": "AU000000CBA7",
          "weight": 16.1861,
          "shares": 758791,
          "value": 124912174.42,
          "currency": "AUD",
          "sector": "Financials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 3,
          "instrumentId": "ins_34VN9NKOYwThv3IdDvGnK",
          "symbol": "ASX:WBC",
          "name": "WESTPAC BANKING CORPORATION",
          "ticker": "WBC",
          "mic": "XASX",
          "isin": "AU000000WBC1",
          "weight": 7.07578,
          "shares": 1550853,
          "value": 54605534.13,
          "currency": "AUD",
          "sector": "Financials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 4,
          "instrumentId": "ins_34VN9NERj27Mra67JT2MJ",
          "symbol": "ASX:NAB",
          "name": "NATIONAL AUSTRALIA BANK LTD",
          "ticker": "NAB",
          "mic": "XASX",
          "isin": "AU000000NAB4",
          "weight": 6.82376,
          "shares": 1390932,
          "value": 52660685.52,
          "currency": "AUD",
          "sector": "Financials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 5,
          "instrumentId": "ins_34VN9N07JdVDDNBxGcahw",
          "symbol": "ASX:ANZ",
          "name": "ANZ GROUP HOLDINGS LTD",
          "ticker": "ANZ",
          "mic": "XASX",
          "isin": "AU000000ANZ3",
          "weight": 6.26044,
          "shares": 1366715,
          "value": 48313375.25,
          "currency": "AUD",
          "sector": "Financials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 6,
          "instrumentId": "ins_34VN9NKOZD8sX6lQ7McGa",
          "symbol": "ASX:WES",
          "name": "WESFARMERS LTD",
          "ticker": "WES",
          "mic": "XASX",
          "isin": "AU000000WES1",
          "weight": 6.02999,
          "shares": 514767,
          "value": 46534936.8,
          "currency": "AUD",
          "sector": "Consumer Discretionary",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 7,
          "instrumentId": "ins_34VN9NERiRH6PmzVTGj03",
          "symbol": "ASX:MQG",
          "name": "MACQUARIE GROUP LTD DEF",
          "ticker": "MQG",
          "mic": "XASX",
          "isin": "AU000000MQG1",
          "weight": 5.21259,
          "shares": 160721,
          "value": 40226859.09,
          "currency": "AUD",
          "sector": "Financials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 8,
          "instrumentId": "ins_34VN9NERoUI0ghjT4KF6E",
          "symbol": "ASX:RIO",
          "name": "RIO TINTO LTD",
          "ticker": "RIO",
          "mic": "XASX",
          "isin": "AU000000RIO1",
          "weight": 3.7687,
          "shares": 168593,
          "value": 29083978.43,
          "currency": "AUD",
          "sector": "Materials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 9,
          "instrumentId": "ins_34VN9N8J1UhuXyGvVSzes",
          "symbol": "ASX:GMG",
          "name": "GOODMAN GROUP UNITS",
          "ticker": "GMG",
          "mic": "XASX",
          "isin": "AU000000GMG2",
          "weight": 3.74,
          "shares": 927161,
          "value": 28862521.93,
          "currency": "AUD",
          "sector": "Real Estate",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 10,
          "instrumentId": "ins_34VN9NKOWxVgahYyqbavU",
          "symbol": "ASX:TLS",
          "name": "TELSTRA GROUP LTD",
          "ticker": "TLS",
          "mic": "XASX",
          "isin": "AU000000TLS2",
          "weight": 3.33979,
          "shares": 5073614,
          "value": 25773959.12,
          "currency": "AUD",
          "sector": "Communication",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 11,
          "instrumentId": "ins_34VN9N07Rt2LhTVkz8Xrd",
          "symbol": "ASX:CSL",
          "name": "CSL LTD",
          "ticker": "CSL",
          "mic": "XASX",
          "isin": "AU000000CSL8",
          "weight": 3.27179,
          "shares": 220056,
          "value": 25249225.44,
          "currency": "AUD",
          "sector": "Health Care",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 12,
          "instrumentId": "ins_34VN9NKOZ9F2zLGp26aJj",
          "symbol": "ASX:WDS",
          "name": "WOODSIDE ENERGY GROUP LTD",
          "ticker": "WDS",
          "mic": "XASX",
          "isin": "AU0000224040",
          "weight": 3.15103,
          "shares": 862008,
          "value": 24317245.68,
          "currency": "AUD",
          "sector": "Energy",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 13,
          "instrumentId": "ins_34VN9NKOZYP0iA8hMMfvO",
          "symbol": "ASX:WOW",
          "name": "WOOLWORTHS GROUP LTD",
          "ticker": "WOW",
          "mic": "XASX",
          "isin": "AU000000WOW2",
          "weight": 2.87315,
          "shares": 553904,
          "value": 22172777.12,
          "currency": "AUD",
          "sector": "Consumer Staples",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 14,
          "instrumentId": "ins_34VN9NKOWXaHsYOgZKSUO",
          "symbol": "ASX:TCL",
          "name": "TRANSURBAN GROUP STAPLED UNITS",
          "ticker": "TCL",
          "mic": "XASX",
          "isin": "AU000000TCL6",
          "weight": 2.63623,
          "shares": 1414772,
          "value": 20344421.36,
          "currency": "AUD",
          "sector": "Industrials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 15,
          "instrumentId": "ins_34VN9NERnR4PEc8vxHK6E",
          "symbol": "ASX:QBE",
          "name": "QBE INSURANCE GROUP LTD",
          "ticker": "QBE",
          "mic": "XASX",
          "isin": "AU000000QBE9",
          "weight": 2.21121,
          "shares": 677429,
          "value": 17064436.51,
          "currency": "AUD",
          "sector": "Financials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 16,
          "instrumentId": "ins_34VN9N07IqDViJuntzxKG",
          "symbol": "ASX:ALL",
          "name": "ARISTOCRAT LEISURE LTD",
          "ticker": "ALL",
          "mic": "XASX",
          "isin": "AU000000ALL7",
          "weight": 2.17099,
          "shares": 273446,
          "value": 16754036.42,
          "currency": "AUD",
          "sector": "Consumer Discretionary",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 17,
          "instrumentId": "ins_34VN9N07QmdUdGhgALEE2",
          "symbol": "ASX:COL",
          "name": "COLES GROUP LTD",
          "ticker": "COL",
          "mic": "XASX",
          "isin": "AU0000030678",
          "weight": 1.92318,
          "shares": 609014,
          "value": 14841671.18,
          "currency": "AUD",
          "sector": "Consumer Staples",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 18,
          "instrumentId": "ins_34VN9N8J01EdrsWWGdW2b",
          "symbol": "ASX:FMG",
          "name": "FORTESCUE LTD",
          "ticker": "FMG",
          "mic": "XASX",
          "isin": "AU000000FMG4",
          "weight": 1.87073,
          "shares": 753883,
          "value": 14436859.45,
          "currency": "AUD",
          "sector": "Materials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 19,
          "instrumentId": "ins_34VN9NERjmxUdxx3w12FC",
          "symbol": "ASX:NST",
          "name": "NORTHERN STAR RESOURCES LTD",
          "ticker": "NST",
          "mic": "XASX",
          "isin": "AU000000NST8",
          "weight": 1.59196,
          "shares": 648312,
          "value": 12285512.4,
          "currency": "AUD",
          "sector": "Materials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 20,
          "instrumentId": "ins_34VN9N07OdglG9fxsSbIt",
          "symbol": "ASX:BXB",
          "name": "BRAMBLES LTD",
          "ticker": "BXB",
          "mic": "XASX",
          "isin": "AU000000BXB1",
          "weight": 1.54129,
          "shares": 610602,
          "value": 11894526.96,
          "currency": "AUD",
          "sector": "Industrials",
          "country": "AU",
          "assetClass": "equity"
        },
        {
          "position": 21,
          "instrumentId": null,
          "symbol": null,
          "name": "AUD CASH",
          "ticker": "AUD",
          "mic": null,
          "isin": null,
          "weight": 0.53315,
          "shares": 4114418,
          "value": 4114417.69,
          "currency": "AUD",
          "sector": "Cash and/or Derivatives",
          "country": "AU",
          "assetClass": "cash"
        },
        {
          "position": 22,
          "instrumentId": null,
          "symbol": null,
          "name": "CASH COLLATERAL AUD JPSFT",
          "ticker": "JPSFT",
          "mic": null,
          "isin": null,
          "weight": 0.05144,
          "shares": 397000,
          "value": 397000,
          "currency": "AUD",
          "sector": "Cash and/or Derivatives",
          "country": "AU",
          "assetClass": "cash"
        },
        {
          "position": 23,
          "instrumentId": null,
          "symbol": null,
          "name": "EUR CASH",
          "ticker": "EUR",
          "mic": null,
          "isin": null,
          "weight": 0.00248,
          "shares": 11574,
          "value": 19100.87,
          "currency": "EUR",
          "sector": "Cash and/or Derivatives",
          "country": null,
          "assetClass": "cash"
        },
        {
          "position": 24,
          "instrumentId": null,
          "symbol": null,
          "name": "ETD AUD BALANCE WITH R73222",
          "ticker": "ETD_AUD",
          "mic": null,
          "isin": null,
          "weight": 0,
          "shares": 0,
          "value": 0,
          "currency": "AUD",
          "sector": "Cash and/or Derivatives",
          "country": "AU",
          "assetClass": "cash"
        },
        {
          "position": 25,
          "instrumentId": null,
          "symbol": null,
          "name": "SPI 200 SEP 26",
          "ticker": "XPU6",
          "mic": null,
          "isin": null,
          "weight": 0,
          "shares": 20,
          "value": 0,
          "currency": "AUD",
          "sector": "Cash and/or Derivatives",
          "country": null,
          "assetClass": "derivative"
        }
      ]
    }
  ],
  "errors": [],
  "meta": {
    "credits": 2,
    "requestId": "req_34VoxwaXYbwZ54c7geKZt"
  }
}
```
