ETF Holdings & Returns API – Complete ETF Data Suite

ETF Suite API

ETF Info, Returns, Holdings, and Full ETF List — all in one fast REST API (JSON).

Request Your API Key →

Fin2Dev ETF Suite API bundles four endpoints for ETF workflows:

  • ETF Info — key identifiers (ticker, ISIN, series_id, series_lei) and fund basics.
  • ETF Returns — periodic returns (monthly) for a selected reporting window.
  • ETF Holdings — portfolio constituents: positions, values, and weights (percent_value).
  • ETF List — full list of supported ETFs (isin/ticker/reg_lei/cik) with pagination.

Coverage note: The API currently supports only US-domiciled ETFs that are subject to SEC reporting requirements. Funds domiciled outside the United States are not included.

ETF Info

Retrieve identifying information about an ETF/series (ticker, ISIN, series_id, LEI) and fund basics.

GET /v1/etfinfo
requires: key + cik

ETF Returns

Fetch periodic returns (monthly_total_returns) for a date window using ticker/ISIN/series identifiers.

GET /v1/etfreturns date_from/date_to

ETF Holdings

Get security-level holdings with USD values and weights (percent_value), plus identifiers and categories.

GET /v1/etfholdings date_from/date_to

ETF List

List all supported ETFs. Export tickers / ISINs / reg_lei / CIK with pagination metadata.

GET /v1/etflist list=isin|ticker|reg_lei|cik

ETF Info API

Retrieve key identifying information about an Exchange-Traded Fund (ETF), such as ticker symbol, ISIN, series ID, and LEI.

Endpoint

Parameters

NameTypeDescription
key *stringYour API key (received in email)
cik *stringSEC assigned CIK number of the main trust fund
tickerstringTicker of the ETF
isinstringISIN of the ETF
series_idstringThe ID of the ETF held by the fund
series_leistringThe LEI of the ETF held by the fund

Example Request

import requests

url = "https://apidata.fin2dev.com/v1/etfinfo"
params = {"key":"YOUR_API_KEY","cik":"0001579982","isin":"US00214Q5009"}

data = requests.get(url, params=params).json()

print(data["result"]["basics"]["fund_name"])
print(data["result"]["output"][0]["0"]["attributes"]["series_name"])
<?php
$url = "https://apidata.fin2dev.com/v1/etfinfo?key=YOUR_API_KEY&cik=0001579982&isin=US00214Q5009";
$data = json_decode(file_get_contents($url), true);

echo $data["result"]["basics"]["fund_name"] . PHP_EOL;
echo $data["result"]["output"][0]["0"]["attributes"]["series_name"] . PHP_EOL;
?>

Example Response (short)

{
    "status": {
        "code": 200,
        "message": "OK",
        "details": ""
    },
    "result": {
        "basics": {
            "fund_name": "ARK ETF Trust",
            "file_number": "811-22883",
            "cik": "0001579982",
            "reg_lei": "2549000Z0EWMH3U0CQ16"
        },
        "output": [
            {
                "general": {
                    "fund_name": "ARK ETF Trust",
                    "cik": "0001579982",
                    "reg_lei": "2549000Z0EWMH3U0CQ16",
                    "country": "US",
                    "state": "US-FL",
                    "city": "St. Petersburg",
                    "zip": "33701",
                    "street": "200 Central Avenue",
                    "phone": "727-810-8160"
                },
                "0": {
                    "attributes": {
                        "series_name": "The 3D Printing ETF",
                        "series_id": "S000052298",
                        "series_lei": "2549004LVF58DT442303",
                        "ticker": "ARKF,ARKG,ARKK,ARKW,CTRU,IZRL,PRNT",
                        "isin": "US00214Q5009",
                        "date_report_period": "2022-10-31",
                        "end_report_period": "2023-07-31",
                        "final_filing": 0
                    },
                    "fund_info": {
                        "total_assets": "181250377.41",
                        "total_liabilities": "157684.66",
                        "net_assets": "181092692.75",
                        "assets_attr_misc_sec": "0.00000000",
                        "invested_assets": "0.00000000",
                        "one_yr_banks_borr": "0.00000000",
                        "one_yr_ctrld_comp": "0.00000000",
                        "one_yr_oth_affil": "0.00000000",
                        "one_yr_other": "0.00000000",
                        "aft_one_yr_banks_borr": "0.00000000",
                        "aft_one_yr_ctrld_comp": "0.00000000",
                        "aft_one_yr_oth_affil": "0.00000000",
                        "aft_one_yr_other": "0.00000000",
                        "delivery_delay": "0.00000000",
                        "standby_commit": "0.00000000",
                        "liquid_pref": "0.00000000",
                        "cash_not_reported_in_cor_d": "None",
                        "non_cash_collateral": "N",
                        "currency": "None"
                    }
                }
            }
        ]
    }
}

ETF Returns API

Returns / periodical returns of the ETF. Use date_from and date_to to request a reporting window.

Endpoint

Parameters

NameTypeDescription
key *stringYour API key (received in email)
tickerstringTicker of the ETF
isinstringISIN of the ETF
series_idstringThe ID of the ETF held by the fund
series_leistringThe LEI of the ETF held by the fund
date_fromstringThe starting date of the reporting period (YYYY-MM-DD)
date_tostringEnd date of the reporting period (YYYY-MM-DD)

Example Request

import requests

url = "https://apidata.fin2dev.com/v1/etfreturns"
params = {
  "key":"YOUR_API_KEY",
  "ticker":"ULVM",
  "date_from":"2025-01-01",
  "date_to":"2025-07-30"
}
data = requests.get(url, params=params).json()

out = data["result"]["output"][0]
print(out["attributes"]["series_name"])
print(out["return_info"]["monthly_total_returns"][0]["0"])
<?php
$url = "https://apidata.fin2dev.com/v1/etfreturns?key=YOUR_API_KEY&ticker=ULVM&date_from=2025-01-01&date_to=2025-07-30";
$data = json_decode(file_get_contents($url), true);

$out = $data["result"]["output"][0];
echo $out["attributes"]["series_name"] . PHP_EOL;
print_r($out["return_info"]["monthly_total_returns"][0]["0"]);
?>

Example Response (short)

{
    "status": {
        "code": 200,
        "message": "OK",
        "details": ""
    },
    "result": {
        "basics": {
            "fund_name": "Victory Portfolios II",
            "file_number": "811-22696",
            "cik": "0001547580",
            "reg_lei": "5493002SUQLUY3T5P040"
        },
        "output": [
            {
                "attributes": {
                    "series_name": "VictoryShares US Value Momentum ETF",
                    "series_id": "S000065156",
                    "series_lei": "5493006WYTPO22TMZG75",
                    "ticker": "ULVM",
                    "isin": "US92647N5766",
                    "date_report_period": "2025-03-31",
                    "end_report_period": "2025-06-30",
                    "final_filing": 0
                },
                "signature": {
                    "date_signed": "2025-04-30",
                    "name_of_applicant": "Victory Portfolios II",
                    "signature": "Carol Trevino",
                    "signer_name": "Carol Trevino",
                    "title": "Treasurer"
                },
                "return_info": {
                    "monthly_total_returns": [
                        {
                            "class_id": "C000210925",
                            "0": {
                                "rtn1": "5.04000000",
                                "rtn2": "-0.44000000",
                                "rtn3": "-4.20000000"
                            }
                        }
                    ],
                    "other_monthly1": {
                        "net_realized_gain": "0.00000000",
                        "net_unrealized_appreciation": "7306612.44000000"
                    },
                    "other_monthly2": {
                        "net_realized_gain": "-5.53000000",
                        "net_unrealized_appreciation": "-965413.36000000"
                    },
                    "other_monthly3": {
                        "net_realized_gain": "871105.71000000",
                        "net_unrealized_appreciation": "-7765329.48000000"
                    },
                    "month_1_flow": {
                        "redemption": "0.00000000",
                        "reinvestment": "0.00000000",
                        "sales": "0.00000000"
                    },
                    "month_2_flow": {
                        "redemption": "0.00000000",
                        "reinvestment": "0.00000000",
                        "sales": "0.00000000"
                    },
                    "month_3_flow": {
                        "redemption": "0.00000000",
                        "reinvestment": "0.00000000",
                        "sales": "0.00000000"
                    },
                    "monthly_return_categories": {
                        "equity": {
                            "month1": {
                                "net_realized_gain": "-2566.00000000",
                                "net_unrealized_appreciation": "20845.00000000"
                            },
                            "month2": {
                                "net_realized_gain": "2379.00000000",
                                "net_unrealized_appreciation": "-15400.00000000"
                            },
                            "month3": {
                                "net_realized_gain": "-39454.50000000",
                                "net_unrealized_appreciation": "8535.00000000"
                            },
                            "future_category": {
                                "instrmon1": {
                                    "net_realized_gain": "-2566.00000000",
                                    "net_unrealized_appreciation": "20845.00000000"
                                },
                                "instrmon2": {
                                    "net_realized_gain": "2379.00000000",
                                    "net_unrealized_appreciation": "-15400.00000000"
                                },
                                "instrmon3": {
                                    "net_realized_gain": "-39454.50000000",
                                    "net_unrealized_appreciation": "8535.00000000"
                                }
                            }
                        }
                    }
                }
            }
        ]
    }
}

ETF Holdings API

Holding allocation and values of the ETF: security-level positions, USD value, and portfolio weights (percent_value).

Endpoint

Parameters

NameTypeDescription
key *stringYour API key (received in email)
tickerstringTicker of the ETF
isinstringISIN of the ETF
series_idstringThe ID of the ETF held by the fund
series_leistringThe LEI of the ETF held by the fund
date_fromstringThe starting date of the reporting period (YYYY-MM-DD)
date_tostringEnd date of the reporting period (YYYY-MM-DD)

Example Request

import requests

url = "https://apidata.fin2dev.com/v1/etfholdings"
params = {
  "key":"YOUR_API_KEY",
  "ticker":"ULVM",
  "date_from":"2025-01-01",
  "date_to":"2025-07-30"
}
data = requests.get(url, params=params).json()

out = data["result"]["output"][0]
holdings = out.get("holdings", [])

for row in holdings[:10]:
    sec = row.get("investment_security", {})
    print(sec.get("title"), sec.get("value_usd"), sec.get("percent_value"))
<?php
$url = "https://apidata.fin2dev.com/v1/etfholdings?key=YOUR_API_KEY&ticker=ULVM&date_from=2025-01-01&date_to=2025-07-30";
$data = json_decode(file_get_contents($url), true);

$out = $data["result"]["output"][0];
$holdings = $out["holdings"] ?? [];

foreach (array_slice($holdings, 0, 10) as $row) {
  $sec = $row["investment_security"];
  echo $sec["title"]." | ".$sec["value_usd"]." | ".$sec["percent_value"].PHP_EOL;
}
?>

Example Response (short)

{
    "status": {
        "code": 200,
        "message": "OK",
        "details": ""
    },
    "result": {
        "basics": {
            "fund_name": "Victory Portfolios II",
            "file_number": "811-22696",
            "cik": "0001547580",
            "reg_lei": "5493002SUQLUY3T5P040"
        },
        "output": [
            {
                "attributes": {
                    "series_name": "VictoryShares US Value Momentum ETF",
                    "series_id": "S000065156",
                    "series_lei": "5493006WYTPO22TMZG75",
                    "ticker": "ULVM",
                    "isin": "US92647N5766",
                    "date_report_period": "2025-03-31",
                    "end_report_period": "2025-06-30",
                    "final_filing": 0
                },
                "signature": {
                    "date_signed": "2025-04-30",
                    "name_of_applicant": "Victory Portfolios II",
                    "signature": "Carol Trevino",
                    "signer_name": "Carol Trevino",
                    "title": "Treasurer"
                },
                "holdings": [
                    {
                        "investment_security": {
                            "name": "Truist Financial Corporation",
                            "lei": "549300DRQQI75D2JP341",
                            "isin": "US89832Q1094",
                            "title": "TRUIST FINANCIAL CORP",
                            "cusip": "89832Q109",
                            "balance": "27240.00000000",
                            "units": "NS",
                            "currency": "USD",
                            "value_usd": "1120926.00000000",
                            "percent_value": "0.754819706865",
                            "payoff_profile": "Long",
                            "asset_category": "EC",
                            "issuer_category": "CORP",
                            "invested_country": "US",
                            "restricted_sec": "N",
                            "fair_value_level": "1",
                            "cash_collateral": "N",
                            "non_cash_collateral": "N",
                            "loan_by_fund": "N"
                        }
                    },
                    {
                        "investment_security": {
                            "name": "TAPESTRY, INC.",
                            "lei": "549300LJNVY5SW3VTN33",
                            "isin": "US8760301072",
                            "title": "TAPESTRY INC",
                            "cusip": "876030107",
                            "balance": "10268.00000000",
                            "units": "NS",
                            "currency": "USD",
                            "value_usd": "722969.88000000",
                            "percent_value": "0.486840266792",
                            "payoff_profile": "Long",
                            "asset_category": "EC",
                            "issuer_category": "CORP",
                            "invested_country": "US",
                            "restricted_sec": "N",
                            "fair_value_level": "1",
                            "cash_collateral": "N",
                            "non_cash_collateral": "N",
                            "loan_by_fund": "N"
                        }
                    },
                    {
                        "investment_security": {
                            "name": "INTEL CORPORATION",
                            "lei": "KNX4USFCNGPY45LOCE31",
                            "isin": "US4581401001",
                            "title": "INTEL CORP",
                            "cusip": "458140100",
                            "balance": "23805.00000000",
                            "units": "NS",
                            "currency": "USD",
                            "value_usd": "540611.55000000",
                            "percent_value": "0.364042097069",
                            "payoff_profile": "Long",
                            "asset_category": "EC",
                            "issuer_category": "CORP",
                            "invested_country": "US",
                            "restricted_sec": "N",
                            "fair_value_level": "1",
                            "cash_collateral": "N",
                            "non_cash_collateral": "N",
                            "loan_by_fund": "N"
                        }
                    },....
        }
    }
}

ETF List API

List endpoint to get all ETFs currently supported. Choose what to list via the list parameter.

Endpoint

Parameters

NameTypeDescription
key *stringYour API key (received in email)
list *stringChoose: isin, ticker, reg_lei, or cik

Example Request

Example Response (short)

{
    "status": {
        "code": 200,
        "message": "OK",
        "details": ""
    },
    "result": {
        "pagination": {
            "total_data": "48560",
            "total_pages": 49,
            "current_page": 1
        },
        "output": [
            {
                "isin": " US00123Q8722"
            },
            {
                "isin": " US257559AK07"
            },
            {
                "isin": " US31846V3362"
            },
            {
                "isin": " US67058H3003"
            },
            {
                "isin": "AEA000201011"
            },
            {
                "isin": "AEA001201010"
            },
            {
                "isin": "AEA002001013"
            },
            {
                "isin": "AEA002301017"
            },....
    }
  }

Frequently Asked Questions

Is this one API or multiple APIs?

It’s one suite with four endpoints: Info, Returns, Holdings, and List — same auth (key) and same base domain.

What’s the fastest way to find an ETF I need?

Typical flow: start with /v1/etflist (ticker/isin), then call /v1/etfreturns or /v1/etfholdings by ticker. For precise series matching, use series_id / series_lei.

Why do I need ETF Info if I already have a ticker?

/v1/etfinfo helps normalize identifiers (series_id/LEI) and provides fund/trust basics (CIK, reg_lei) useful for compliance and data mapping.

Pricing

Start with a small plan for testing, then scale as your application grows. This overview keeps pricing simple and easy to compare.

Basic

Entry plan for testing and small projects
Intro offer
$9
  • 500 calls included
  • 10 calls per minute

Premium

For scaling applications
Higher volume
$49
  • 10,000 calls included
  • 30 calls per minute
Note: This is a simplified pricing overview for quick comparison. Full plan details can be placed on the pricing page.