Managed Investments Screener API

Powerful, criteria-based screening using flexible filtering logic.

Explore Data Points

Data points are the building blocks of a screen. You filter on them, return them and sort by them. This page explains how to list the available data points and how to read their metadata, so that you can build requests that are valid the first time.

For background on data points, see Core Concepts.

List the Data Points

Use the data points endpoint to retrieve every data point that can be used in a screen. The request takes no query parameters or body, only your access token.

GET /direct-web-services/v1/screeners/managed-investments/data-points

The following request lists the data points.

curl --request GET \
  --url "https://www.us-api.morningstar.com/direct-web-services/v1/screeners/managed-investments/data-points" \
  --header "Authorization: Bearer {token}" \
  --header "accept: application/json"

Use the base URL for your region, as described in Getting Started.

The response contains a list of data points and a metadata object. Each entry in the list describes one data point.

{
  "dataPoints": [
    {
      "name": "dailyReturnsMostRecent.totalRet1WkDaily",
      "type": "decimal",
      "operators": ["eq", "gt", "gte", "in", "lt", "lte"],
      "isCurrencyDependent": true,
      "isLanguageDependent": false,
      "isSortable": true,
      "fuzzy": false
    },
    {
      "name": "investmentBasicDetails.prospectusObjective",
      "type": "string",
      "operators": ["eq", "in"],
      "isCurrencyDependent": false,
      "isLanguageDependent": false,
      "isSortable": false,
      "fuzzy": false
    }
  ],
  "metadata": {
    "requestId": "f2e6ec6a-3f90-4b3c-a951-7558607a8d20",
    "time": "2025-09-29T13:04:51.190876Z"
  }
}

Read the Metadata

Each data point has the following properties.

PropertyDescription
nameThe data point name, in the format <dataGroup>.<fieldName>. Use this value in query, dataPoints and sort.
typeThe data type of the value. It determines the filters you can use.
operatorsThe filter operators the data point supports.
isSortableWhen true, you can sort results by the data point.
isLanguageDependentWhen true, you must pass a languageId to retrieve the data point.
isCurrencyDependentWhen true, you must pass a currencyId to retrieve the data point.
fuzzyWhen true, the data point supports fuzzy text matching.

The metadata object contains the requestId and the time of the response. Include the requestId if you contact support.

Use the Metadata to Build a Request

The metadata tells you what a data point can do. Check it before you use a data point in a request.

Filters

The type and operators properties tell you which filters apply. A data point can only be filtered with the operators it lists.

Data TypeSupported Filters
booleanEquals.
dateRange comparisons (gt, gte, lt, lte), equals and in.
numberRange comparisons (gt, gte, lt, lte), equals and in.
stringEquals and in. Some data points also support fuzzy search.

For example, investmentBasicDetails.prospectusObjective lists only eq and in, so you can match it against a value or a list of values but can't use a range comparison on it. dailyReturnsMostRecent.totalRet1WkDaily lists the range operators, so you can filter it with gt, lt and the others.

See Filter Conditions for the syntax.

Sorting

Use isSortable to check that you can sort by a data point. In the example above you can sort by dailyReturnsMostRecent.totalRet1WkDaily, but not by investmentBasicDetails.prospectusObjective. A data point you sort by must also be in the dataPoints array of the request.

Language and Currency

If isLanguageDependent or isCurrencyDependent is true, add languageId or currencyId to the request when you use the data point. The default language is ENG and the default currency is USD.

dailyReturnsMostRecent.totalRet1WkDaily in the example above is currency-dependent, so a request that returns it should set currencyId.

{
  "scope": {
    "basicReference.countryAvailableForSale": "USA"
  },
  "query": {
    "basicReference.baseCurrency": ["USD", "GBP"]
  },
  "dataPoints": [
    "basicReference.legalName",
    "dailyReturnsMostRecent.totalRet1WkDaily"
  ],
  "currencyId": "EUR"
}

Find the Data Point You Need

The response lists every available data point and has no parameters for searching or paging. To find the one you need:

  • Search the names. Names describe the value, so you can search the list for a keyword such as return, yield or rating.
  • Browse by data group. The part of the name before the period is the data group, and related data points share one.
  • Save the list. Retrieve it once and search it in your own application, instead of calling the endpoint each time you build a request.

The following data groups appear in the examples in this guide.

Data GroupExample Data Points
basicReferencebasicReference.legalName, basicReference.name, basicReference.firmName, basicReference.baseCurrency, basicReference.inceptionDate, basicReference.countryAvailableForSale
instrumentIdentifiersinstrumentIdentifiers.performanceId
investmentBasicDetailsinvestmentBasicDetails.mptIndex, investmentBasicDetails.prospectusObjective
yieldsHistoricalyieldsHistorical.12MoYield
morningstarRatingHistoricalmorningstarRatingHistorical.morningstarRatingOverall
morningstarPortfolioRiskScoremorningstarPortfolioRiskScore.portfolioRiskScore
dailyReturnsMostRecentdailyReturnsMostRecent.totalRet1WkDaily
annualReturnsHistoricalannualReturnsHistorical.annualNetRet2021
riskStatisticsriskStatistics.trackingError10YrMoEnd

Entitlements

The list contains the data points that are supported for screening. Whether you can retrieve a data point for a particular investment depends on your entitlements. If you request a data point that you aren't entitled to, the investment is still returned and the response metadata lists the data points that couldn't be returned. See Work with Results.

Next Steps