Morningstar Universe API
Utility API for resolving the investment universes and identifiers available to an account across Direct Web Services.
Utility API for resolving the investment universes and identifiers available to an account across Direct Web Services.
openapi: 3.0.1
info:
version: 1.0.0
title: Authorization Tokens Accounts Investments Universe API
description: 'Use the `oauth` endpoint to generate the secure, time-limited JSON Web Tokens (JWTs) used to authorize access to APIs and components.</br></br>
To request a token, click Authorize and enter the following credentials:
* Username - Your Client ID.
* Password - Your Client Secret.'
servers:
- url: https://www.us-api.morningstar.com/token
description: PROD US
- url: https://www.emea-api.morningstar.com/token
description: PROD EMEA
- url: https://www.apac-api.morningstar.com/token
description: PROD APAC
security:
- BasicAuth: []
tags:
- name: Investments Universe
paths:
/direct-web-services/v1/investments:
get:
tags:
- Investments Universe
operationId: getInvestmentsUniverse
summary: Query entitled universe to retrieve investment metadata
description: '
**Get Universe Entitlements**
Retrieve the **primary filters** your account is entitled for.
| Scenario| Request Inputs |
|-----------|-------|
| Get equities entitlements.| `GET /investments`|
| Get managed investments entitlements.| `GET /investments?source=managedInvestments` |
**Get Custom Universe**
Retrieve a custom universe in full.
| Scenario| Request Inputs |
|-----------|-------|
| Get equities custom universe.| `GET /investments?universe=MY_EQUITIES_ABC`|
| Get managed investments custom universe.| `GET /investments?source=managedInvestments&universe=MY_MANAGED_INVESTMENTS_XYZ`|
**Filter Equities**
Further narrow a custom universe or filter full universe.
| Scenario| Request Inputs |
|-----------|-------|
| Filter custom universe by primary filter.| `GET /investments?exchangeCode=XPAR&universe=MY_EQUITIES_ABC` |
| Filter custom universe by primary and secondary filter.| `GET /investments?exchangeCode=XPAR&securityType=ST00000001&universe=MY_EQUITIES_ABC` |
| Filter full universe by primary filter only.| `GET /investments?exchangeCode=XPAR` |
| Filter full universe by primary and 1 secondary filter.| `GET /investments?exchangeCode=XPAR&securityType=ST00000001` |
| Filter full universe by primary and 2 secondary filters.| `GET /investments?exchangeCode=XPAR&shareClassInformationInvestmentType=ST00000001&securityType=ST00000001` |
**Filter Managed Investments**
Further narrow a custom universe or filter full universe.
| Scenario| Request Inputs |
|-----------|-------|
| Filter custom universe by a primary filter.| `GET /investments?source=managedInvestments&domicileCode=USA&universe=MY_MANAGED_INVESTMENTS_XYZ`|
| Filter managed investments by a primary filter (`countryAvailableForSaleCode`) | `GET /investments?source=managedInvestments&countryAvailableForSaleCode=USA`|
| Filter managed investments by a primary filter (`domicileCode`) | `GET /investments?source=managedInvestments&domicileCode=USA`|
**Retrieve Results Using Pagination Tokens**
Set pagination preferences in inital request and retrieve paginated results using tokens.
| Scenario| Request Inputs |
|-----------|-------|
| Pagination settings initial request (default `pageSize`).| `GET /investments?exchangeCode=XPAR` |
| Pagination settings subsequent requests (default `pageSize`).| `GET /investments?exchangeCode=XPAR&paginationTokenNext=CJjVEBoTOhE`|
| Pagination settings initial request (explicit `pageSize`).| `GET /investments?exchangeCode=XPAR&pageSize=25` |
| Pagination settings subsequent requests (explicit `pageSize`).| `GET /investments?exchangeCode=XPAR&pageSize=25&paginationTokenNext=CJjVEBoTOhE`|'
parameters:
- name: universe
in: query
description: Filters results to a custom universe defined during implementation for the account.
schema:
type: string
example: MY_UNIVERSE_321
- name: source
in: query
description: Specifies the investment data type to query.
schema:
type: string
default: equities
enum:
- equities
- managedInvestments
- name: exchangeCode
in: query
description: Primary filter for equities. Filters results by exchange code.
example: XPAR
schema:
type: string
- name: securityType
in: query
description: "Secondary filter for equities. Accepts:\n\n * `ST00000001` - Common Stock\n * `ST00000002` - Preferred Stock\n * `ST00000003` - Industry\n * `ST00000004` - Index\n * `ST00000005` - ETF\n * `ST00000006` - Closed-end Fund\n * `ST00000007` - Investment Trusts\n * `ST00000008` - Warrant\n * `ST00000009` - Note\n * `ST000000A1` - Units\n * `ST000000B1` - Rights\n * `ST000000C1` - Unlisted Common\n * `ST000000C2` - Unlisted Preferred"
example: ST00000001
schema:
type: string
enum:
- ST00000001
- ST00000002
- ST00000003
- ST00000004
- ST00000005
- ST00000006
- ST00000007
- ST00000009
- ST00000008
- ST000000A1
- ST000000B1
- ST000000C1
- ST000000C2
x-enumDescriptions:
ST00000001: Common Stock
ST00000002: Preferred Stock
ST00000003: Industry
ST00000004: Index
ST00000005: ETF
ST00000006: Closed-end Fund
ST00000007: Investment Trusts
ST00000008: Warrant
ST00000009: Note
ST000000A1: Units
ST000000B1: Rights
ST000000C1: Unlisted Common
ST000000C2: Unlisted Preferred
- name: countryAvailableForSaleCode
in: query
description: Primary filter for managed investments. Accepts 3-character ISO 3166-1 country codes.
example: AUS
schema:
type: string
- name: domicileCode
in: query
description: Primary filter for managed investments. Accepts 3-character ISO 3166-1 country codes.
example: AUS
schema:
type: string
- name: shareClassInformationInvestmentType
in: query
description: "Secondary filter for equities.\n\nAccepts:\n\n * `EQ` - Equity\n * `DR` - Depository Receipt\n * `PE` - Preferred Equity\n * `UE` - Unlisted Equity"
example: EQ
schema:
type: string
enum:
- EQ
- DR
- PE
- UE
x-enumDescriptions:
EQ: Equity
DR: Depository Receipt
PE: Preferred Equity
UE: Unlisted Equity
- name: paginationTokenNext
in: query
description: Specifies the token to fetch the next page of results.
example: CJ2aBBoROg81YmFuYyBzcGxpdCBpbmMaDDoKMHAwMDAwbTJkaiIMOgowUDAwMDBNMkRK
schema:
type: string
- name: paginationTokenPrevious
in: query
description: Specifies the token to fetch the previous page of results.
example: CJ2aBBoROg81YmFuYyBzcGxpdCBpbmMaDDoKMHAwMDAwbTJkaiIMOgowUDAwMDBNMkRK
schema:
type: string
- name: pageSize
in: query
description: Specifies the number of records per page.
example: 25
schema:
maximum: 50
minimum: 1
type: integer
format: int32
default: 50
responses:
'200':
$ref: '#/components/responses/ResponseInvestments'
'400':
$ref: '#/components/responses/ErrorResponse400'
components:
schemas:
DataPointString:
title: DataPointString
type: object
properties:
value:
type: string
nullable: true
code:
type: string
nullable: true
additionalProperties: false
DataModelBasicReference:
type: object
properties:
assetsUnderAdvisementDate:
type: string
description: ''
nullable: true
associatedShareClass:
type: string
description: ''
nullable: true
baseCurrency:
$ref: '#/components/schemas/DataPointString'
baseUnit:
type: number
description: ''
format: double
nullable: true
brandingCompanyAsOfDate:
type: string
description: ''
nullable: true
brandingName:
type: string
description: ''
nullable: true
brandingNameId:
type: string
description: ''
nullable: true
caFundCode:
type: string
description: ''
nullable: true
countryAfsPerformanceLevel:
type: array
items:
$ref: '#/components/schemas/DataPointString'
description: ''
nullable: true
countryAvailableForSale:
type: array
items:
$ref: '#/components/schemas/DataPointString'
description: ''
nullable: true
countryRegisteredForSale:
$ref: '#/components/schemas/DataPointString'
custodianFee:
type: number
description: ''
format: double
nullable: true
custodianFeeAmountCn:
type: integer
description: ''
format: int32
nullable: true
delistingDate:
type: string
description: ''
nullable: true
domicile:
$ref: '#/components/schemas/DataPointString'
domicileCountry:
$ref: '#/components/schemas/DataPointString'
externalManagementCompany:
type: string
description: ''
nullable: true
firmLegalStructure:
$ref: '#/components/schemas/DataPointString'
firmName:
type: string
description: ''
nullable: true
firmNameId:
type: string
description: ''
nullable: true
firmType:
$ref: '#/components/schemas/DataPointString'
fundCode:
type: string
description: ''
nullable: true
fundid:
type: string
description: ''
nullable: true
fundLegalName:
type: string
description: ''
nullable: true
fundLegalStructure:
$ref: '#/components/schemas/DataPointString'
fundStandardName:
type: string
description: ''
nullable: true
germanWkn:
type: string
description: ''
nullable: true
grossAssetsCurrency:
$ref: '#/components/schemas/DataPointString'
iaPrimaryShareClass:
$ref: '#/components/schemas/DataPointString'
inceptionDate:
type: string
description: ''
nullable: true
inceptionDateOfFundSOldestShareClass:
type: string
description: ''
nullable: true
indexFamilyId:
type: string
description: ''
nullable: true
indexFamilyName:
type: string
description: ''
nullable: true
investmentType:
$ref: '#/components/schemas/DataPointString'
ipoAssetRaised:
type: number
description: ''
format: double
nullable: true
ipoEndDate:
type: string
description: ''
nullable: true
ipoStartDate:
type: string
description: ''
nullable: true
isin:
type: string
description: ''
nullable: true
itaCode:
type: string
description: ''
nullable: true
latestAccountingDate:
type: string
description: ''
nullable: true
legalName:
type: string
description: ''
nullable: true
lifeTriggerEventDate:
type: string
description: ''
nullable: true
lifeTriggerEventType:
$ref: '#/components/schemas/DataPointString'
listingDate:
type: string
description: ''
nullable: true
localFirmNameJp:
type: string
description: ''
nullable: true
localFirmNameKr:
type: string
description: ''
nullable: true
localFirmShortNameJp:
type: string
description: ''
nullable: true
localFundLegalNameKr:
type: string
description: ''
nullable: true
localLegalNameJp:
type: string
description: ''
nullable: true
localLegalNameKr:
type: string
description: ''
nullable: true
localNameAfrikaans:
type: string
description: ''
nullable: true
localNameCn:
type: string
description: ''
nullable: true
localNameHebrew:
type: string
description: ''
nullable: true
localNameHk:
type: string
description: ''
nullable: true
localNameJp:
type: string
description: ''
nullable: true
localNameKr:
type: string
description: ''
nullable: true
localNameSg:
type: string
description: ''
nullable: true
localNameThai:
type: string
description: ''
nullable: true
localNameTw:
type: string
description: ''
nullable: true
masterFundid:
type: string
description: ''
nullable: true
masterPortfolioId:
type: integer
description: ''
format: int32
nullable: true
maximumSwingFactorDownwards:
type: number
description: ''
format: double
nullable: true
maximumSwingFactorUpwards:
type: number
description: ''
format: double
nullable: true
mexCode:
type: string
description: ''
nullable: true
name:
type: string
description: ''
nullable: true
nameOfFundSOldestShareClass:
type: string
description: ''
nullable: true
obsoleteDate:
type: string
description: ''
nullable: true
obsoleteType:
$ref: '#/components/schemas/DataPointString'
oldestShareClass:
$ref: '#/components/schemas/DataPointString'
operationsDataReady:
$ref: '#/components/schemas/DataPointString'
performanceDataReady:
$ref: '#/components/schemas/DataPointString'
performanceId:
type: string
description: ''
nullable: true
performanceStartDate:
type: string
description: ''
nullable: true
pieConversionDate:
type: string
description: ''
nullable: true
portfolioCurrency:
$ref: '#/components/schemas/DataPointString'
portfolioDataReady:
$ref: '#/components/schemas/DataPointString'
portfolioDate:
type: string
description: ''
nullable: true
previousNameOfFirm:
type: string
description: ''
nullable: true
priceDataReady:
$ref: '#/components/schemas/DataPointString'
primaryShare:
$ref: '#/components/schemas/DataPointString'
priorFirmName:
type: string
description: ''
nullable: true
productFocus:
$ref: '#/components/schemas/DataPointString'
regionOfSale:
$ref: '#/components/schemas/DataPointString'
registrationDateTw:
type: string
description: ''
nullable: true
restructureDate:
type: string
description: ''
nullable: true
secidForImport:
type: string
description: ''
nullable: true
seriesName:
type: string
description: ''
nullable: true
shareClassType:
$ref: '#/components/schemas/DataPointString'
sharesPercDateCn:
type: string
description: ''
nullable: true
status:
$ref: '#/components/schemas/DataPointString'
swissValor:
type: string
description: ''
nullable: true
ticker:
type: string
description: ''
nullable: true
tickerOfFundSOldestShareClass:
type: string
description: ''
nullable: true
underlyingFundInceptionDate:
type: string
description: ''
nullable: true
underlyingFundName:
type: string
description: ''
nullable: true
underlyingFundSecid:
type: string
description: ''
nullable: true
usHeadquarters:
type: string
description: ''
nullable: true
valuationCountry:
$ref: '#/components/schemas/DataPointString'
virtualClass:
$ref: '#/components/schemas/DataPointString'
additionalProperties: false
ResponseInvestmentsMetadataExchanges:
title: ResponseInvestmentsMetadataExchanges
type: object
properties:
exchangeCode:
description: Exchange code.
example: SWA
readOnly: true
micCode:
description: Market Identifier Code (MIC).
type: string
example: XSWA
ErrorResponse:
title: ErrorResponse
type: object
properties:
statusCode:
type: string
description: Indicates the HTTP status code.
example: 400
errorCode:
type: string
description: Indicates the unique error identifier.
example: 400.InvestmentDetails.020
message:
type: string
description: Description of the error.
example: Invalid source input for CountryAvailableForSaleCode
requestId:
type: string
description: Indicates the unique request identifier.
example: 6631c374-2331-4c7e-b6f2-d0c0079f6ee
description: Status 400 Code and Message
DataModelDelistInformation:
type: object
properties:
delistingDate:
type: string
description: The effective date on which a security was delisted from an exchange
nullable: true
additionalProperties: false
DataModelShareClassInformation:
type: object
properties:
commonShareSubType:
type: string
description: Refers to the type of securities that can be found within the equity database. For the vast majority; this value will populate as null for regular common shares. For a minority of share classes; this will populate as either Participating Preferred; Closed-End Fund; Foreign Share; or Foreign Participated Preferred which reflects our limited coverage of these types of securities within our equity database.
nullable: true
conversionRatio:
type: number
description: The relationship between the chosen share class and the primary share class
format: double
nullable: true
cusip:
type: string
description: ''
nullable: true
directInvest:
$ref: '#/components/schemas/DataPointBoolean'
dividendReinvest:
$ref: '#/components/schemas/DataPointBoolean'
drRatio:
type: number
description: The number of underlying common shares backing each depositary receipt (DR) traded.
format: double
nullable: true
exchangeCode:
type: string
description: A symbol for the stock exchange name; usually consisting of 3 to 5 characters; examples include NYSE; NAS; LSE; OTCBB ($$$ is used for private/unlisted securities)
nullable: true
exchangeSubMarketGlobalId:
type: string
description: Indicates a different marketplace or the different market tiers within a stock exchange.
nullable: true
investmentId:
type: string
description: Morningstar Issuer Id/ Investment Id
nullable: true
investmentName:
type: string
description: Morningstar standard investment name
nullable: true
investmentPrimaryIssuer:
$ref: '#/components/schemas/DataPointString'
investmentStatus:
type: integer
description: '0: obsolete1: active9: other'
format: int32
nullable: true
investmentType:
type: string
description: 'The abbreviation for investment type classifications: Equity (EQ); Depositary Receipt (DR); Preferred Equity (PE); Unlisted Equity (UE)'
nullable: true
ipoDate:
type: string
description: The initial day that the share begins trading on a public exchange
nullable: true
ipoOfferPrice:
type: number
description: Indicates the price at which an issuer sells its shares under an initial public offering (IPO). The offer price is set by the issuer and its underwriters.
format: double
nullable: true
ipoOfferPriceRange:
type: string
description: The estimated offer price range (low-high) for a new IPO. The field should be used until the final IPO price becomes available; as populated in the data field IPO Offer Price.
nullable: true
isDr:
type: boolean
description: 'Indicates if the share class is a depositary receipt: TRUE denotes it is an ADR or GDR; otherwise FALSE'
nullable: true
isin:
type: string
description: ''
nullable: true
isMainShare:
$ref: '#/components/schemas/DataPointBoolean'
isPrimaryPerformanceId:
$ref: '#/components/schemas/DataPointBoolean'
marketSymbol:
type: string
description: An arrangement of characters representing a particular security listed on an exchange or traded publicly generated and maintained by market data (also known as Realtime). For example; Morningstar's market symbol is 126.1.MORN where 126 refers to Realtime exchange code for NASDAQ; 1 refers to security type equity; and the last set of characters refers to company's actual symbol.
nullable: true
parValue:
type: number
description: Nominal value of a security determined by the issuing company
format: double
nullable: true
performanceStatus:
$ref: '#/components/schemas/DataPointString'
securityType:
type: string
description: 'Indicates security type classification at the share class level: Common Stock (ST00000001); Preferred Stock (ST00000002); Industry (ST00000003); Index (ST00000004); ETF (ST00000005); Closed-end Fund (ST00000006); Investment Trusts (ST00000007); Note (ST00000009); Warrant (ST00000008); Units (ST000000A1); Rights (ST000000B1); Unlisted Common (ST000000C1); Unlisted Preferred (ST000000C2)'
nullable: true
sedol:
type: string
description: The stock exchange daily official list (SEDOL) is a seven-character identification code assigned by the London Stock Exchange. For securities issued in the UK the Sedol may be converted to an ISIN.
nullable: true
segmentMicCode:
type: string
description: 'Indicates the Exchange ISO Market Segment Identifier Code (MIC). Reference: https://www.iso20022.org/market-identifier-codes ($$$ is used for private/unlisted securities)'
nullable: true
symbol:
type: string
description: 'An arrangement of characters (often letters) representing a particular security listed on an exchange or otherwise traded publicly: Note that Morningstar''s multi-share class symbols will often contain a period within the symbol; e.g. BRK.B for Berkshire Hathaway Class B'
nullable: true
tradingCurrency:
type: string
description: 3 Character ISO code of the currency that the exchange price is denominated in; i.e. the trading currency of the security
nullable: true
tradingStatus:
$ref: '#/components/schemas/DataPointString'
underlyingDrIssuerId:
type: string
description: ''
nullable: true
additionalProperties: false
ResponseInvestmentsIdentifiers:
type: object
description: Investment identifiers.
properties:
performanceId:
type: string
description: Morningstar Performance ID.
example: 0P0001MIXG
ResponseInvestmentsMetadata:
title: ResponseInvestmentsMetadata
type: object
properties:
time:
description: Time response was returned.
example: '2025-10-02T10:54:36.9161062Z'
type: string
format: date-time
requestId:
description: Unique identifier of a request.
type: string
example: 7ccd91c0-6146-4256-8aba-3a1f2e5d0203
paginationTokenNext:
type: string
description: Token to fetch next page of results.
example: CNOAQhoJKQBIuTktAQAAGhU6E3RlYW0gcGFydG5lcnMgZ3JvdXAaDDoKMHAwMDAwYTZ6dCIMOgowUDAwMDBBNlpU
paginationTokenPrevious:
type: string
description: Token to fetch previous page of results.
example: CKDjNhoJKQBIuTktAQAAGg06C2dkZiBzdWV6IHNhGgw6CjBwMDAwMDl3cW8iDDoKMFAwMDAwOVdRTw==
totalCount:
type: integer
description: Total number of results found.
example: 2162
format: int32
exchanges:
type: array
description: Exchange and MIC codes account is entitled for.
items:
$ref: '#/components/schemas/ResponseInvestmentsMetadataExchanges'
nullable: true
countryAvailableForSale:
description: Countries for which account is entitled for.
type: array
items:
type: string
nullable: true
domiciles:
description: Countries for which account is entitled.
type: array
items:
type: string
nullable: true
ResponseInvestments:
type: object
description: Response containing investment results and metadata.
properties:
investments:
type: array
description: List of investments returned by the query.
items:
$ref: '#/components/schemas/ResponseInvestment'
metadata:
$ref: '#/components/schemas/ResponseInvestmentsMetadata'
required:
- investments
- metadata
DataPointBoolean:
title: DataPointBoolean
type: object
properties:
value:
type: string
nullable: true
code:
type: boolean
nullable: true
additionalProperties: false
DataPointIntegerLong:
title: DataPointIntegerLong
type: object
properties:
value:
type: string
nullable: true
code:
type: integer
format: int64
nullable: true
additionalProperties: false
ResponseInvestment:
type: object
description: Investment entry returned as part of the universe lookup.
additionalProperties: true
properties:
identifiers:
$ref: '#/components/schemas/ResponseInvestmentsIdentifiers'
companyInformation:
$ref: '#/components/schemas/DataModelCompanyInformation'
delistInformation:
$ref: '#/components/schemas/DataModelDelistInformation'
shareClassInformation:
$ref: '#/components/schemas/DataModelShareClassInformation'
basicReference:
$ref: '#/components/schemas/DataModelBasicReference'
DataModelCompanyInformation:
type: object
properties:
businessCountryCode:
$ref: '#/components/schemas/DataPointString'
canNaics:
type: integer
description: An acronym for North American Industry Classification System (NAICS) specific to Canada; a 6-digit numerical classification assigned to individual companies. NAICS was developed jointly by the U.S.; Canada; and Mexico to provide new comparability in statistics about business activity across North America. It was intended to replace the U.S. Standard Industrial Classification (SIC) system. The initial SIC and NAICS listed is the Primary code based on revenue generation; followed by Secondary SIC and NAICS when applicable. Both SIC and NAICS are manually collected and assigned.
format: int64
nullable: true
cik:
type: string
description: ''
nullable: true
companyStatus:
$ref: '#/components/schemas/DataPointString'
domicileCountryCode:
$ref: '#/components/schemas/DataPointString'
expectedFiscalYearEnd:
type: string
description: The upcoming expected year end for the company; it is calculated based on the current year end (from latest available annual report) + 1 year
nullable: true
fiscalYearEnd:
$ref: '#/components/schemas/DataPointIntegerLong'
globalTemplateIndustryTemplateCode:
$ref: '#/components/schemas/DataPointString'
industryClassificationEffectiveDate:
type: string
description: The effective date when the Morningstar Industry Classification is updated for the company
nullable: true
ipoType:
type: string
description: This data point identifies two different processes a company can take to raise capital by listing shares on a public exchange; Initial public offering (Traditional IPO) and Direct Listing. IPO is the most common and traditional route; in which new shares are created; underwritten; and sold to the public. In a Direct Listing; no new shares are created; and only existing outstanding shares are sold with no underwriters involved. Traditional IPO and Direct Listing are the 2 types available starting in September 2021. For historical data prior to September 2021; Traditional IPO is not available; the 2 possible values prior to September 2021 are Null and Direct Listing.
nullable: true
isBusinessDevelopmentCompany:
$ref: '#/components/schemas/DataPointBoolean'
isic:
type: string
description: An acronym for International Standard Industrial Classification (ISIC); which was developed by the United Nations; and is the international reference classification of productive activities. Its main purpose is to provide a set of activity categories that can be utilized for the collection and reporting of statistics according to such activities. The majority of countries around the world have used ISIC as their national activity classification or have developed national classifications derived from ISIC.
nullable: true
isLimitedLiabilityCompany:
$ref: '#/components/schemas/DataPointBoolean'
isLimitedPartnership:
$ref: '#/components/schemas/DataPointBoolean'
isMasterLimitedPartnership:
$ref: '#/components/schemas/DataPointBoolean'
isReit:
$ref: '#/components/schemas/DataPointBoolean'
isShellCompany:
$ref: '#/components/schemas/DataPointBoolean'
isSpecialPurposeAcquisitionCompany:
$ref: '#/components/schemas/DataPointBoolean'
legalName:
type: string
description: The full name of the registrant as specified in its charter; and most often found on the front cover of the 10K/10Q/20F filings or annual report
# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/morningstar/refs/heads/main/openapi/morningstar-investments-universe-api-openapi.yml