Obtain the holdings of each ETF or fund: every asset it holds with the number of shares, the market value and the weight in the fund (as a decimal). This shows what the fund is actually exposed to and how concentrated it is.

Tickers that are not an ETF or fund have no holdings and return no data. They are not removed from the Toolkit instance.

Also known as: fund holdings, ETF constituents, fund portfolio.

ETF Holdings in Python

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_etf_holdings as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["QQQ", "VTI"],
    api_key="FINANCIAL_MODELING_PREP_KEY",
    start_date="2021-01-01",
    end_date="2025-12-31",
)

toolkit.get_etf_holdings().loc["QQQ"].head()

Which returns:

Asset Name ISIN CUSIP Shares Weight Market Value Updated At
NVDA NVIDIA Corp US67066G1040 67066G104 1.80964e+08 0.0850518 4.32937e+10 2026-10-07 14:14:58
AAPL Apple Inc US0378331005 037833100 1.09586e+08 0.0718253 3.65611e+10 2026-10-07 14:14:58
MSFT Microsoft Corp US5949181045 594918104 5.57574e+07 0.057978 2.95124e+10 2026-10-07 14:14:58
MU Micron Technology Inc US5951121038 595112103 2.34119e+07 0.0480888 2.44785e+10 2026-10-07 14:14:58
AMD Advanced Micro Devices Inc US0079031078 007903107 3.38406e+07 0.043174 2.19767e+10 2026-10-07 14:14:58

Parameters

The function accepts the following parameters:

  • overwrite (bool): Defines whether to overwrite the existing data.
  • show_columns (list[str] | None): A list of column names to keep in the result. Invalid names are reported and ignored. Defaults to None, which keeps every column.
  • limit (int | None): The number of largest holdings (by weight) to keep per fund, e.g. 10 for the top 10, or of the smallest for a negative number, e.g. -10. Defaults to None, which keeps every holding. The holdings carry no sector or country; get_etf_sector_weightings and get_etf_country_weightings break the fund down by those.
Share