Investment Details Feed API

Get detailed profile data for up to 250 investments in a single request, drawing on Morningstar's fundamental, reference, and historical data..

Core Concepts

The Investment Details Feed API retrieves detailed investment data in bulk. You choose the investments and the views of data that you want, submit one request, and collect the results when they are ready. This page explains the terms used throughout the guide, so that requests and responses are easier to build and read.

How the Feed Works

The API is asynchronous. A request isn't answered with data. It is accepted for processing, and you collect the results afterwards.

  1. Submit a request. Send a POST request with the investments and views you want, and the Prefer: respond-async header. The API accepts the request and returns a 202 response with a jobId and a link to check the status of the job.
  2. Check the job. Use the link in the response to check the status of the job until it is complete.
  3. Retrieve the results. When the job is complete, retrieve the results with their result ID.
{
  "jobId": "16bf1a7a-c883-4424-8810-2f4e9d244d40",
  "_links": {
    "href": "https://www.us-api.morningstar.com/dynamic-services-apis/jobs/16bf1a7a-c883-4424-8810-2f4e9d244d40",
    "rel": "status",
    "method": "GET"
  },
  "metadata": {
    "requestId": "c63e7f6c-b52d-42c3-9d1b-4a4b4ac05f3c",
    "time": "2025-10-02T10:54:36.9161062Z"
  }
}

The Prefer header is required. If you leave it out, or set it to anything but respond-async, the request fails.

For how to build and send requests, see the Investment Details section. To collect the results, see Retrieve Investment Details.

Views and View Types

Data is requested by view. A view is a predefined set of data points with a unique identifier, the viewId, that you use to specify the data the API returns.

Each view in a request has a viewId, and optionally a viewType and parameters.

PropertyDescription
viewIdThe view to retrieve. Required. Standard view IDs are the names of packages. A view that was defined for your organization uses the ID that was issued to you.
viewTypeThe type of view. The default is package.
parametersExtra settings that narrow the data returned by the view. See View Parameters.

The view types are:

View TypeDescription
packageA standard Morningstar data package.
datasetA subset of the data points in a standard package.
ddaDatasetA set of data points defined by a client in Direct Data Access. It can contain data points from different standard packages.

Access to data is entitled at package level, so you can request the views in the packages you are licensed for. Use the views endpoint to list them, and the view definition endpoint to see the data points that a view contains. See Views.

View Parameters

Some views take parameters that refine the data they return. Parameters are passed in the parameters object of the view, as arrays of values.

ParameterWhat It Filters
reportTypeFinancial statements by report type, such as originally reported or restated.
periodFinancial statements by the period they cover, such as annual or a quarter.
numberOfMonthsFinancial statements by the length of the period, in months.
segmentTypeSegment data by segment type, such as business or geographic.
addressTypeCompany addresses by type, such as headquarters or registered office.
ownerTypeGroupOwnership data by the type of owner.
shareTypeShare data by share type, such as common or preferred.
holdingsViewPortfolio holdings data by the size of the holdings view: Full, Top25 or Top10.
quantitativeSmartTextTypeQuantitative smart text by type: Moat or Valuation.

Each parameter applies only to certain views. A parameter that is sent for a view that it doesn't apply to is ignored. The package-specific guides list the parameters for each view. See API Inputs for the accepted values.

Investments and Lookup

The investments array lists the investments to retrieve, from 1 to 250. Each entry has an id and, optionally, an idType and lookup details.

PropertyDescription
idThe investment identifier. Required.
idTypeThe type of identifier. The default is performanceId.
exchangeCountry, domicile, baseCurrency, exchangeIdLookup details that narrow the match when an identifier can match more than one investment.

The Morningstar Performance ID is the primary identifier. Other identifier types are looked up for you. See the Identifiers article for more about lookup.

Request-Level Settings

Some settings apply to the request as a whole, not to a single view.

PropertyDescription
startDate, endDateThe date range for views that return time series data, as yyyy-MM-dd.
languageIdThe language for language-dependent data. The default is ENG.
countryIdThe country for country-dependent data, as a 3-character ISO 3166-1 code. The default is USA.
regionIdThe region used for style box breakpoints, from 1 to 7.
portfolioDateThe date of the portfolio for the portfolio holdings views. If you leave it out, the most recent data is returned.

The view definition shows whether each data point is language, country or currency dependent.

Delta Loads

A full load retrieves all the data for the investments and views you request. A delta load retrieves only the data that has changed since a time that you give. Delta loads let you keep a copy of the data current, without retrieving everything each time.

  • Add deltaStartTime to a request to ask for the changes since that time.
  • Set includeUnchangedData to say how much of each changed row to return. When it is true, each changed row is returned in full. When it is false, each changed row contains only the fields that changed.
  • The delta dates endpoint tells you when data points changed, so that you know whether a delta load is needed.

Delta loads currently apply to the equity-financials view only. See Delta Loads.

Results

The results contain one object for each investment, and metadata about the request.

{
  "investments": [
    {
      "identifiers": {
        "performanceId": "0P0000004Y"
      },
      "companyInformation": {
        "companyId": "0C00000981",
        "companyStatus": { "value": "Public", "code": "U" },
        "legalName": "Aluf Holdings Inc"
      },
      "trailingReturn": [
        {
          "trailingReturnAsOfDate": "2025-10-21",
          "trailing1MonthReturn": -32.515337,
          "trailing1YearReturn": -44.723618
        }
      ]
    }
  ],
  "metadata": {
    "requestId": "dde185a9-2c21-4ed7-b749-09e4431e1a05",
    "time": "2025-11-07T16:06:46.3516162Z"
  }
}
  • Identifiers. Each investment has an identifiers object with its performance ID.
  • Data groups. The data is organized into groups, named for the data they hold, such as companyInformation and trailingReturn. A group is an object when there is one record, and an array when there can be several, such as time series values or several reporting periods.
  • Coded values. Some values are returned as an object with a value and a code, for example { "value": "Public", "code": "U" }.
  • Metadata. The metadata object has the requestId, the time, and messages about investments or data points that couldn't be returned. Portfolio holdings views also return the portfolio date and currency. Check messages in every response.

See Retrieve Investment Details.

Request Limits

LimitValueError
Investments per request1 to 250413.investmentDetailsAsync.007
Views per request1 to 3413.investmentDetailsAsync.008
Time series date rangeUp to 60 months between startDate and endDate413.investmentDetailsAsync.009
Portfolio holdings viewsfull-look-through-portfolio-holdings and full-portfolio-holdings-month-end-or-quarter-end-most-recent must each be submitted alone400.investmentDetailsAsync.019
Equity financialsThe equity-financials view must be the only view in the request

For the full list of inputs, see API Inputs. For errors, see Error Messages.