ETF Endpoints
Access ETF (Exchange-Traded Fund) data including profiles, holdings, sector weightings, and stock exposure information.
Overview
The ETF endpoints provide access to ETF market data, including fund profiles, holdings information, sector and country weightings, and stock exposure data.
Available Methods
Method | Endpoint | Description |
---|---|---|
GET | /etf-info | Get ETF profile information |
GET | /etf-holdings/portfolio-date | Get ETF holding dates |
GET | /etf-holdings | Get ETF holdings data |
GET | /etf-holder/{symbol} | Get ETF holder information |
GET | /etf-sector-weightings/{symbol} | Get ETF sector weightings |
GET | /etf-country-weightings/{symbol} | Get ETF country weightings |
GET | /etf-stock-exposure/{symbol} | Get ETF stock exposure |
Get ETF Profile
Retrieve ETF profile and basic information including expense ratio, AUM, and fund details.
1const profile = await fmp.etf.getProfile('SPY');
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
symbol | string | Yes | ETF symbol (e.g., "SPY", "QQQ") |
Example Response
1{
2 success: true,
3 data: {
4 symbol: 'SPY',
5 name: 'SPDR S&P 500 ETF Trust',
6 assetClass: 'Equity',
7 aum: 500000000000,
8 avgVolume: 75000000,
9 cusip: '78462F103',
10 description: 'The SPDR S&P 500 ETF Trust tracks the S&P 500 Index',
11 domicile: 'United States',
12 etfCompany: 'State Street Global Advisors',
13 expenseRatio: 0.0945,
14 inceptionDate: '1993-01-29',
15 isin: 'US78462F1030',
16 nav: 450.25,
17 navCurrency: 'USD',
18 sectorsList: [
19 {
20 exposure: 'Technology',
21 industry: 'Software'
22 }
23 ],
24 website: 'https://www.ssga.com',
25 holdingsCount: 500
26 }
27}
Get ETF Holding Dates
Retrieve available dates for ETF holdings data.
1const holdingDates = await fmp.etf.getHoldingDates('SPY');
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
symbol | string | Yes | ETF symbol |
Example Response
1{
2 success: true,
3 data: [
4 {
5 date: '2024-01-15'
6 },
7 {
8 date: '2024-01-08'
9 }
10 ]
11}
Get ETF Holdings
Retrieve detailed holdings data for a specific ETF and date.
1const holdings = await fmp.etf.getHoldings({
2 symbol: 'SPY',
3 date: '2024-01-15'
4});
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
symbol | string | Yes | ETF symbol |
date | string | Yes | Date for holdings data (YYYY-MM-DD format) |
Example Response
1{
2 success: true,
3 data: [
4 {
5 cik: '0000320193',
6 acceptanceTime: '2024-01-15T16:30:00.000Z',
7 date: '2024-01-15',
8 symbol: 'AAPL',
9 name: 'Apple Inc.',
10 lei: 'HWUPKR0MPOU8FGXBT394',
11 title: 'Common Stock',
12 cusip: '037833100',
13 isin: 'US0378331005',
14 balance: 1000000,
15 units: 'SHRS',
16 cur_cd: 'USD',
17 valUsd: 150000000,
18 pctVal: 7.5,
19 payoffProfile: 'Long',
20 assetCat: 'Equity',
21 issuerCat: 'Corporate',
22 invCountry: 'US',
23 isRestrictedSec: 'N',
24 fairValLevel: '1',
25 isCashCollateral: 'N',
26 isNonCashCollateral: 'N',
27 isLoanByFund: 'N'
28 }
29 ]
30}
Get ETF Holder
Retrieve all stocks held by a specific ETF with asset details.
1const holder = await fmp.etf.getHolder('SPY');
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
symbol | string | Yes | ETF symbol |
Example Response
1{
2 success: true,
3 data: [
4 {
5 asset: 'AAPL',
6 name: 'Apple Inc.',
7 isin: 'US0378331005',
8 cusip: '037833100',
9 sharesNumber: 1000000,
10 weightPercentage: 7.5,
11 marketValue: 150000000,
12 updated: '2024-01-15'
13 }
14 ]
15}
Get ETF Sector Weighting
Retrieve sector breakdown of ETF holdings.
1const sectorWeighting = await fmp.etf.getSectorWeighting('SPY');
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
symbol | string | Yes | ETF symbol |
Example Response
1{
2 success: true,
3 data: [
4 {
5 sector: 'Technology',
6 weightPercentage: '32.62%'
7 },
8 {
9 sector: 'Financial Services',
10 weightPercentage: '12.48%'
11 },
12 {
13 sector: 'Healthcare',
14 weightPercentage: '12.1%'
15 }
16 ]
17}
Get ETF Country Weighting
Retrieve country breakdown of ETF holdings.
1const countryWeighting = await fmp.etf.getCountryWeighting('SPY');
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
symbol | string | Yes | ETF symbol |
Example Response
1{
2 success: true,
3 data: [
4 {
5 country: 'United States',
6 weightPercentage: '99.37%'
7 },
8 {
9 country: 'Switzerland',
10 weightPercentage: '0.3%'
11 },
12 {
13 country: 'Netherlands',
14 weightPercentage: '0.14%'
15 }
16 ]
17}
Get ETF Stock Exposure
Retrieve which ETFs hold a specific stock.
1const stockExposure = await fmp.etf.getStockExposure('AAPL');
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
symbol | string | Yes | Stock symbol to find ETF exposure |
Example Response
1{
2 success: true,
3 data: [
4 {
5 etfSymbol: 'SPY',
6 assetExposure: 'AAPL',
7 sharesNumber: 1000000,
8 weightPercentage: 7.5,
9 marketValue: 150000000
10 },
11 {
12 etfSymbol: 'QQQ',
13 assetExposure: 'AAPL',
14 sharesNumber: 500000,
15 weightPercentage: 12.3,
16 marketValue: 75000000
17 }
18 ]
19}
Response Types
ETFProfile
1interface ETFProfile {
2 symbol: string;
3 assetClass: string;
4 aum: number;
5 avgVolume: number;
6 cusip: string;
7 description: string;
8 domicile: string;
9 etfCompany: string;
10 expenseRatio: number;
11 inceptionDate: string;
12 isin: string;
13 name: string;
14 nav: number;
15 navCurrency: string;
16 sectorsList: {
17 exposure: string;
18 industry: string;
19 }[];
20 website: string;
21 holdingsCount: number;
22}
ETFHolding
1interface ETFHolding {
2 cik: string;
3 acceptanceTime: string;
4 date: string;
5 symbol: string;
6 name: string;
7 lei: string;
8 title: string;
9 cusip: string;
10 isin: string;
11 balance: number;
12 units: string;
13 cur_cd: string;
14 valUsd: number;
15 pctVal: number;
16 payoffProfile: string;
17 assetCat: string;
18 issuerCat: string;
19 invCountry: string;
20 isRestrictedSec: string;
21 fairValLevel: string;
22 isCashCollateral: string;
23 isNonCashCollateral: string;
24 isLoanByFund: string;
25}
ETFHolder
1interface ETFHolder {
2 asset: string;
3 name: string;
4 isin: string;
5 cusip: string;
6 sharesNumber: number;
7 weightPercentage: number;
8 marketValue: number;
9 updated: string;
10}
ETFWeighting
1interface ETFWeighting {
2 sector: string;
3 weightPercentage: string;
4}
ETFCountryWeighting
1interface ETFCountryWeighting {
2 country: string;
3 weightPercentage: string;
4}
ETFStockExposure
1interface ETFStockExposure {
2 etfSymbol: string;
3 assetExposure: string;
4 sharesNumber: number;
5 weightPercentage: number;
6 marketValue: number;
7}
Popular ETFs
Here are some popular ETF symbols you can use:
- SPY - SPDR S&P 500 ETF Trust
- QQQ - Invesco QQQ Trust
- IWM - iShares Russell 2000 ETF
- VTI - Vanguard Total Stock Market ETF
- VEA - Vanguard FTSE Developed Markets ETF
- VWO - Vanguard FTSE Emerging Markets ETF
- BND - Vanguard Total Bond Market ETF
- GLD - SPDR Gold Shares
Error Handling
Always check the success property before accessing data:
1const profile = await fmp.etf.getProfile('INVALID');
2
3if (profile.success && profile.data) {
4console.log('ETF Name:', profile.data.name);
5console.log('Expense Ratio:', profile.data.expenseRatio);
6} else {
7console.error('Error:', profile.error);
8console.error('Status:', profile.status);
9}
Rate Limiting
ETF endpoints are subject to FMP's rate limits. For production applications, implement appropriate rate limiting and caching strategies.
Next Steps
Explore other endpoint categories:
- Stock Endpoints - Real-time quotes and historical data
- Company Endpoints - Company profiles and information
- Financial Endpoints - Financial statements and ratios
- Market Endpoints - Market indices and sector data
- Calendar Endpoints - Earnings, dividends, and economic calendars
- List Endpoints - Available symbols and instruments
- Examples - Practical code samples
Ready to explore financial data? Check out the Financial Endpoints for income statements, balance sheets, and more.