---
title: "Get the top 20 best ETFs based on the provided filters with a lot of additional ETF information. Mention available filters in response"
method: GET
path: "/top_etfs"
---

# Get the top 20 best ETFs based on the provided filters with a lot of additional ETF information. Mention available filters in response

`GET /top_etfs`

## Request

- Base URL: `https://portfoliopilot.com/api/gpt`
- URL: `https://portfoliopilot.com/api/gpt/top_etfs`
- Auth: none declared
- TypeScript: <https://skmtc.dev/portfoliopilot/apis/portfoliopilot-plugin/docs/top_etfs/get.ts> (a function with typed inputs; its response is checked against the schema)

## Query parameters

- `philosophy` 'Actively Managed' | 'Passively Managed' | 'Strategic Beta'
- `is_diversified` boolean
- `max_expense_ratio` number
- `asset_class` 'US Large Cap Equities' | 'US Mid Cap Equities' | 'US Small Cap Equities' | 'Developed Total Market Equities (Ex-US)' | 'Emerging Total Market Equities' | 'Private Equity' | 'US Government Bonds' | 'US Municipal Bonds' | 'US Corporate Bonds' | 'Developed Total Market Bonds' | 'Emerging Total Market Bonds' | 'Global Inflation-linked Bonds' | 'Gold' | 'Other Commodities' | 'Real Estate' | 'Cryptocurrencies' | 'Cash & Equivalents' | 'Other Currencies' | 'Unknown'
- `listed_country` 'US' | 'CA'

## Response `200`

OK

- TopETFsResponse: Response object containing the top 10 ETFs based on the provided filters. A lot of ETF-specific information is also provided
  - `top_etfs` ETFDetails[]
    - `Ticker` string
    - `beta` number: The beta value of the ETF, indicating its sensitivity to market movements.
    - `security_type` string
    - `sub_asset_class` string
    - `philosophy` string: The investment philosophy of the ETF (e.g. "Actively Managed").
    - `expense_ratio` number
    - `concentration_score` number: A score representing the concentration of the ETF's holdings.
    - `is_diversified` boolean: Indicates whether the ETF is sufficiently diversified.
    - `Company_Growth` number: The company growth factor of the ETF.
    - `Company_Quality` number: The company quality factor of the ETF.
    - `Company_Size` number: The company size factor of the ETF.
    - `Company_Value` number: The company value factor of the ETF.
    - `Credit_Conditions` number: The credit conditions factor of the ETF.
    - `Economic_Growth` number: The economic growth factor of the ETF.
    - `High_Dividend` number: The high dividend factor of the ETF.
    - `Inflation_Surprises` number: The inflation surprises factor of the ETF.
    - `Low_Volatility` number: The low volatility factor of the ETF.
    - `Oil_Price` number: The oil price factor of the ETF.
    - `Price_Momentum` number: The price momentum factor of the ETF.
    - `Real_Yield` number: The real yield factor of the ETF.
    - `VIX_Index` number: The VIX index factor of the ETF.
    - `fundName` string
    - `more_info` string: url to the PortfolioPilot Security Explorer page providing more information (create link)

## Other responses

- `400`: Bad Request
- `405`: Method not allowed (e.g. GET request type is not supported, use POST method instead)

## Changes

- **2025-01-28** `e2d1ba050ae9`: 16 breaking, 3 warning
  - the `top_etfs/items/Company_Growth` response's property format changed from `double` to no format for status `200`
  - the `top_etfs/items/Company_Quality` response's property format changed from `double` to no format for status `200`
  - the `top_etfs/items/Company_Size` response's property format changed from `double` to no format for status `200`
  - the `top_etfs/items/Company_Value` response's property format changed from `double` to no format for status `200`
  - …15 more

[Operation history](https://skmtc.dev/portfoliopilot/apis/portfoliopilot-plugin/changes/top_etfs/get.md)

---

[API](https://skmtc.dev/portfoliopilot/apis/portfoliopilot-plugin.md) - [All operations](https://skmtc.dev/portfoliopilot/apis/portfoliopilot-plugin/llms.txt) - [OpenAPI document](https://skmtc.dev/portfoliopilot/apis/portfoliopilot-plugin/revisions/7ed0083c9099?raw)
