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.
Available Endpoints
ETF Info
Retrieve identifying information about an ETF/series (ticker, ISIN, series_id, LEI) and fund basics.
ETF Returns
Fetch periodic returns (monthly_total_returns) for a date window using ticker/ISIN/series identifiers.
ETF Holdings
Get security-level holdings with USD values and weights (percent_value), plus identifiers and categories.
ETF List
List all supported ETFs. Export tickers / ISINs / reg_lei / CIK with pagination metadata.
Popular Queries
Ready-to-use examples — just replace YOUR_API_KEY:
https://apidata.fin2dev.com/v1/etfholdings?key=YOUR_API_KEY&ticker=ULVM&date_from=2025-01-01&date_to=2025-07-30
https://apidata.fin2dev.com/v1/etfreturns?key=YOUR_API_KEY&ticker=ULVM&date_from=2025-01-01&date_to=2025-07-30
https://apidata.fin2dev.com/v1/etfinfo?key=YOUR_API_KEY&cik=0001579982&isin=US00214Q5009
https://apidata.fin2dev.com/v1/etflist?key=YOUR_API_KEY&list=isin
ETF Info API
Retrieve key identifying information about an Exchange-Traded Fund (ETF), such as ticker symbol, ISIN, series ID, and LEI.
Endpoint
GET https://apidata.fin2dev.com/v1/etfinfo?key=YOUR_API_KEY&cik=1137095
Parameters
| Name | Type | Description |
|---|---|---|
| key * | string | Your API key (received in email) |
| cik * | string | SEC assigned CIK number of the main trust fund |
| ticker | string | Ticker of the ETF |
| isin | string | ISIN of the ETF |
| series_id | string | The ID of the ETF held by the fund |
| series_lei | string | The LEI of the ETF held by the fund |
Example Request
https://apidata.fin2dev.com/v1/etfinfo?key=YOUR_API_KEY&cik=0001579982&isin=US00214Q5009
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
GET https://apidata.fin2dev.com/v1/etfreturns?key=YOUR_API_KEY&ticker=ULVM
Parameters
| Name | Type | Description |
|---|---|---|
| key * | string | Your API key (received in email) |
| ticker | string | Ticker of the ETF |
| isin | string | ISIN of the ETF |
| series_id | string | The ID of the ETF held by the fund |
| series_lei | string | The LEI of the ETF held by the fund |
| date_from | string | The starting date of the reporting period (YYYY-MM-DD) |
| date_to | string | End date of the reporting period (YYYY-MM-DD) |
Example Request
https://apidata.fin2dev.com/v1/etfreturns?key=YOUR_API_KEY&ticker=ULVM&date_from=2025-01-01&date_to=2025-07-30
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
GET https://apidata.fin2dev.com/v1/etfholdings?key=YOUR_API_KEY&ticker=ULVM
Parameters
| Name | Type | Description |
|---|---|---|
| key * | string | Your API key (received in email) |
| ticker | string | Ticker of the ETF |
| isin | string | ISIN of the ETF |
| series_id | string | The ID of the ETF held by the fund |
| series_lei | string | The LEI of the ETF held by the fund |
| date_from | string | The starting date of the reporting period (YYYY-MM-DD) |
| date_to | string | End date of the reporting period (YYYY-MM-DD) |
Example Request
https://apidata.fin2dev.com/v1/etfholdings?key=YOUR_API_KEY&ticker=ULVM&date_from=2025-01-01&date_to=2025-07-30
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
GET https://apidata.fin2dev.com/v1/etflist?key=YOUR_API_KEY&list=ticker
Parameters
| Name | Type | Description |
|---|---|---|
| key * | string | Your API key (received in email) |
| list * | string | Choose: isin, ticker, reg_lei, or cik |
Example Request
https://apidata.fin2dev.com/v1/etflist?key=YOUR_API_KEY&list=isin
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
It’s one suite with four endpoints: Info, Returns, Holdings, and List — same auth (key) and same base domain.
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.
/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
- 500 calls included
- 10 calls per minute
Popular
- 3,000 calls included
- 20 calls per minute
Premium
- 10,000 calls included
- 30 calls per minute
Keywords: etf suite api • etf holdings api • etf returns api • etf list api • etf info api • ETF constituents JSON • series_id series_lei