FactSet Real-Time News API
Retrieve news by category, identifier, and keyword, for a specific date or range of dates. Endpoints can be subscribed for streamed updates.
Retrieve news by category, identifier, and keyword, for a specific date or range of dates. Endpoints can be subscribed for streamed updates.
openapi: 3.0.0
info:
version: 3.0.0
title: Factset News API For Digital Portals
description: >
Consume FactSet’s StreetAccount news and 3rd party content through an API
that seamlessly integrates with
[quotes](https://developer.factset.com/api-catalog/real-time-quotes-api),
[time
series](https://developer.factset.com/api-catalog/real-time-time-series-api),
[watchlists](https://developer.factset.com/api-catalog/watchlist-api-digital-portals),
and other Functional APIs.
Search for news articles from various news distributors and publishers.
Incorporate a multitude of search parameters such as region, category,
source, article type and provider-specific meta data, to easily filter out
the noise.
All search and list endpoints can be subscribed to receive streamed updates.
News providers include:
* APA
* AWP
* Businesswire
* Cercle Finance
* Direkt News SE
* Dow Jones News
* dpa
* dpa-AFX
* EUWAX
* GlobenewsWire
* Kauppalehti
* MT Newswires
* MoneyAM
* newsaktuell
* OMX
* PR Newswire
* Ritzau Finans
* StreetAccount News
* TDN News
See the [Real-Time Quotes
API](https://developer.factset.com/api-catalog/real-time-quotes-api) for
access to detailed
price and performance information, plus basic support for security
identifier cross-reference.
contact:
name: FactSet Research Systems
url: https://developer.factset.com/contact
email: [email protected]
license:
name: Apache License, Version 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://api.factset.com/wealth/v3
paths:
/news/article/get:
get:
tags:
- News
operationId: get/news/article/get
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Details for a news article.
description: Details for a news article.
parameters:
- name: code
in: query
schema:
description: Identifier of a news article.
type: string
pattern: ^[0-9A-Za-z+/=:]+$
minLength: 1
exclusiveMinimum: false
maxLength: 128
exclusiveMaximum: false
required: true
- name: includeMedia
in: query
schema:
type: boolean
default: false
description: If true, media references are included if available.
required: false
- name: _attributes
in: query
schema:
type: array
items:
type: string
maxLength: 100
exclusiveMaximum: false
uniqueItems: true
maxItems: 50
style: form
explode: false
description: Limit the attributes returned in the response to the specified set.
- name: _language
in: query
schema:
type: string
format: isoLanguage
description: ISO 639-1 code of the language.
maxLength: 2
minLength: 2
exclusiveMinimum: false
exclusiveMaximum: false
responses:
'200':
$ref: '#/components/responses/GetNewsArticleGet200Response'
/news/article/list:
post:
tags:
- News
operationId: post/news/article/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: true
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset List of news articles.
description: List of news articles.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostNewsArticleListRequest'
required: false
responses:
'200':
$ref: '#/components/responses/PostNewsArticleList200Response'
parameters: []
/news/article/listByChain:
post:
tags:
- News
operationId: post/news/article/listByChain
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: true
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset List news articles of an article chain.
description: List news articles of an article chain.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostNewsArticleListByChainRequest'
required: true
responses:
'200':
$ref: '#/components/responses/PostNewsArticleListByChain200Response'
parameters: []
/news/article/listByIndex:
post:
tags:
- News
operationId: post/news/article/listByIndex
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: true
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: >-
Factset News articles for instruments that are constituents of the given indices.
description: >-
News articles for instruments that are constituents of the given
indices.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostNewsArticleListByIndexRequest'
required: true
responses:
'200':
$ref: '#/components/responses/PostNewsArticleListByIndex200Response'
parameters: []
/news/article/listByInstrument:
post:
tags:
- News
operationId: post/news/article/listByInstrument
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: true
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset News articles for instruments.
description: News articles for instruments.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostNewsArticleListByInstrumentRequest'
required: true
responses:
'200':
$ref: '#/components/responses/PostNewsArticleListByInstrument200Response'
parameters: []
/news/article/listByMediaKind:
post:
tags:
- News
operationId: post/news/article/listByMediaKind
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: true
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset List news articles which contain media of specific media kinds.
description: List news articles which contain media of specific media kinds.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostNewsArticleListByMediaKindRequest'
required: true
responses:
'200':
$ref: '#/components/responses/PostNewsArticleListByMediaKind200Response'
parameters: []
/news/article/searchByText:
post:
tags:
- News
operationId: post/news/article/searchByText
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: true
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Search for news articles using a fulltext search.
description: >-
Search for news articles using a fulltext search. All specified criteria
need to be fulfilled for an article to match. Each criterion is handled
according to its selectionType; "include" requires the criterion to
evaluate to true, "exclude" requires the criterion to evaluate to false.
A criterion is fulfilled when at least one of its values is found.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostNewsArticleSearchByTextRequest'
required: false
responses:
'200':
$ref: '#/components/responses/PostNewsArticleSearchByText200Response'
parameters: []
/news/article/type/get:
get:
tags:
- News
operationId: get/news/article/type/get
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Details for a news article type.
description: Details for a news article type.
parameters:
- name: id
in: query
schema:
description: Identifier of a news article type.
type: number
format: id32
x-positive: true
required: true
- name: _attributes
in: query
schema:
type: array
items:
type: string
maxLength: 100
exclusiveMaximum: false
uniqueItems: true
maxItems: 50
style: form
explode: false
description: Limit the attributes returned in the response to the specified set.
- name: _language
in: query
schema:
type: string
format: isoLanguage
description: ISO 639-1 code of the language.
maxLength: 2
minLength: 2
exclusiveMinimum: false
exclusiveMaximum: false
responses:
'200':
$ref: '#/components/responses/GetNewsArticleTypeGet200Response'
/news/article/type/list:
get:
tags:
- News
operationId: get/news/article/type/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset List of news article types.
description: List of news article types.
responses:
'200':
$ref: '#/components/responses/GetNewsArticleTypeList200Response'
parameters:
- name: _attributes
in: query
schema:
type: array
items:
type: string
maxLength: 100
exclusiveMaximum: false
uniqueItems: true
maxItems: 50
style: form
explode: false
description: Limit the attributes returned in the response to the specified set.
- name: _language
in: query
schema:
type: string
format: isoLanguage
description: ISO 639-1 code of the language.
maxLength: 2
minLength: 2
exclusiveMinimum: false
exclusiveMaximum: false
/news/distributor/get:
get:
tags:
- News
operationId: get/news/distributor/get
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Details of a distributor.
description: Details of a distributor.
parameters:
- name: id
in: query
schema:
type: number
format: id32
x-positive: true
description: Identifier of a distributor.
required: true
- name: _attributes
in: query
schema:
type: array
items:
type: string
maxLength: 100
exclusiveMaximum: false
uniqueItems: true
maxItems: 50
style: form
explode: false
description: Limit the attributes returned in the response to the specified set.
responses:
'200':
$ref: '#/components/responses/GetNewsDistributorGet200Response'
/news/distributor/list:
get:
tags:
- News
operationId: get/news/distributor/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 1
x-supportsPermissionDeniedResponse: false
summary: Factset List of distributors.
description: List of distributors.
parameters:
- name: ids
in: query
schema:
type: array
nullable: false
items:
type: number
format: id32
x-positive: true
maxItems: 100
uniqueItems: true
description: Identifiers of distributors.
style: form
explode: false
- name: _attributes
in: query
schema:
type: array
items:
type: string
maxLength: 100
exclusiveMaximum: false
uniqueItems: true
maxItems: 50
style: form
explode: false
description: Limit the attributes returned in the response to the specified set.
- description: >-
Sortable attributes. The sort order is ascending unless it is
prefixed with a minus sign, in which case it is descending. A list
of at most 1 (possibly prefixed) attribute name(s) is allowed.
schema:
type: array
items:
type: string
enum:
- id
- '-id'
- name
- '-name'
maxItems: 1
uniqueItems: true
default:
- name
style: form
explode: false
name: _sort
in: query
responses:
'200':
$ref: '#/components/responses/GetNewsDistributorList200Response'
/news/publisher/get:
get:
tags:
- News
operationId: get/news/publisher/get
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Details of a publisher.
description: Details of a publisher.
parameters:
- name: id
in: query
schema:
type: number
format: id32
x-positive: true
description: Identifier of a publisher.
required: true
- name: _attributes
in: query
schema:
type: array
items:
type: string
maxLength: 100
exclusiveMaximum: false
uniqueItems: true
maxItems: 50
style: form
explode: false
description: Limit the attributes returned in the response to the specified set.
responses:
'200':
$ref: '#/components/responses/GetNewsPublisherGet200Response'
/news/publisher/list:
get:
tags:
- News
operationId: get/news/publisher/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: true
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 1
x-supportsPermissionDeniedResponse: false
summary: Factset List of publishers.
description: List of publishers.
parameters:
- name: ids
in: query
schema:
type: array
nullable: false
items:
type: number
format: id32
x-positive: true
maxItems: 100
uniqueItems: true
description: Identifiers of publishers.
style: form
explode: false
- name: _attributes
in: query
schema:
type: array
items:
type: string
maxLength: 100
exclusiveMaximum: false
uniqueItems: true
maxItems: 50
style: form
explode: false
description: Limit the attributes returned in the response to the specified set.
- description: >-
Sortable attributes. The sort order is ascending unless it is
prefixed with a minus sign, in which case it is descending. A list
of at most 1 (possibly prefixed) attribute name(s) is allowed.
schema:
type: array
items:
type: string
enum:
- id
- '-id'
- name
- '-name'
maxItems: 1
uniqueItems: true
default:
- name
style: form
explode: false
name: _sort
in: query
- description: Non-negative number of entries to skip, or 0 (default).
name: _paginationOffset
in: query
schema:
type: number
format: int32
minimum: 0
exclusiveMinimum: false
default: 0
- description: Non-negative maximum number of entries to return.
name: _paginationLimit
in: query
schema:
type: number
format: int32
minimum: 0
exclusiveMinimum: false
maximum: 500
exclusiveMaximum: false
default: 20
responses:
'200':
$ref: '#/components/responses/GetNewsPublisherList200Response'
/news/publisher/listByDistributor:
get:
tags:
- News
operationId: get/news/publisher/listByDistributor
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 1
x-supportsPermissionDeniedResponse: false
summary: Factset List of publishers provided by the given distributor.
description: List of publishers provided by the given distributor.
parameters:
- name: id
in: query
schema:
type: number
format: id32
x-positive: true
description: Identifier of a distributor.
required: true
- name: _attributes
in: query
schema:
type: array
items:
type: string
maxLength: 100
exclusiveMaximum: false
uniqueItems: true
maxItems: 50
style: form
explode: false
description: Limit the attributes returned in the response to the specified set.
- description: >-
Sortable attributes. The sort order is ascending unless it is
prefixed with a minus sign, in which case it is descending. A list
of at most 1 (possibly prefixed) attribute name(s) is allowed.
schema:
type: array
items:
type: string
enum:
- id
- '-id'
- name
- '-name'
maxItems: 1
uniqueItems: true
default:
- name
style: form
explode: false
name: _sort
in: query
responses:
'200':
$ref: '#/components/responses/GetNewsPublisherListByDistributor200Response'
/news/publisher/searchByName:
post:
tags:
- News
operationId: post/news/publisher/searchByName
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 1
x-supportsPermissionDeniedResponse: false
summary: Factset Search for publishers.
description: Search for publishers by the name of the publisher.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostNewsPublisherSearchByNameRequest'
required: true
responses:
'200':
$ref: '#/components/responses/PostNewsPublisherSearchByName200Response'
parameters: []
components:
schemas:
ErrorMetaObject:
type: object
description: The meta member contains the meta information of the response.
properties:
status:
$ref: '#/components/schemas/StatusObject'
ErrorObject:
type: array
description: >-
The errors member contains additional information about a failed
request.
items:
type: object
properties:
details:
type: string
description: >-
A human-readable, unstructured explanation specific to this
occurrence of the failure.
encryptedDetails:
type: string
description: >-
Base64-encoded, internal details about the error, in addition to
"details".
type:
type: number
format: int32
description: Internal error type of the Foundation API protocol.
attribute:
type: array
description: >-
For a validation error, a reference to the request parameter that
failed validation; otherwise, an empty array.
items:
type: object
properties:
name:
type: string
description: Element of the path denoting the request parameter.
index:
type: number
format: int32
description: >-
If the attribute "name" designates an array, index of the
array element; otherwise the special value -1.
x-property-sort:
- name
- index
x-property-sort:
- details
- encryptedDetails
- type
- attribute
AttributesMember:
type: array
description: Limit the attributes returned in the response to the specified set.
items:
type: string
maxLength: 100
exclusiveMaximum: false
maxItems: 50
uniqueItems: true
LanguageMember:
type: string
format: isoLanguage
description: ISO 639-1 code of the language.
maxLength: 2
minLength: 2
exclusiveMinimum: false
exclusiveMaximum: false
StatusObject:
type: object
properties:
code:
type: number
format: int32
description: >-
The HTTP status code of the response, mirroring the code from the
Status-Line of the HTTP response message (see [RFC2616] section
6.1).
description: The status member contains the status code of the response.
required:
- code
CursorBasedPaginationOutputObject:
type: object
description: Pagination attributes for the cursor-based pagination strategy.
properties:
total:
type: number
format: int32
description: Total number of entries in the result set.
isEstimatedTotal:
type: boolean
description: Flag indicating that the value of `total` is estimated.
next:
type: string
description: >-
The next cursor position to use in the parameter `pagination.cursor`
for an endpoint that supports cursor-based pagination, otherwise
`null`.
previous:
type: string
description: >-
The previous cursor position to use in the parameter
`pagination.cursor` for an endpoint that supports cursor-based
pagination. If a previous cursor position is not supported or
available, `previous` is `null`.
required:
- total
- isEstimatedTotal
- next
- previous
x-property-sort:
- total
- isEstimatedTotal
- next
- previous
CursorBasedPaginationOutputObjectWithoutTotal:
type: object
description: >-
Pagination attributes for the cursor-based pagination strategy; a total
element count is not supported.
properties:
next:
type: string
description: >-
The next cursor position to use in the parameter `pagination.cursor`
for an endpoint that supports cursor-based pagination, otherwise
`null`.
previous:
type: string
description: >-
The previous cursor position to use in the parameter
`pagination.cursor` for an endpoint that supports cursor-based
pagination. If a previous cursor position is not supported or
available, `previous` is `null`.
required:
- next
- previous
x-property-sort:
- next
- previous
OffsetBasedPaginationOutputObject:
type: object
description: Pagination attributes for the offset-based pagination strategy.
properties:
total:
type: number
format: int32
description: Total number of entries in the result set.
isEstimatedTotal:
type: boolean
description: Flag indicating that the value of "total" is estimated.
required:
- total
- isEstimatedTotal
x-property-sort:
- total
- isEstimatedTotal
OffsetBasedPaginationOutputObjectWithoutTotal:
type: object
description: >-
Pagination attributes for the offset-based pagination strategy; a total
element count is not supported.
properties:
hasNext:
type: boolean
description: >-
Flag indicating that a subsequent request with the same parameters,
except that the parameter `pagination.offset` is incremented by
`pagination.limit`, would yield additional results.
required:
- hasNext
x-property-sort:
- hasNext
PartialOutputObject:
type: object
properties:
isPartial:
type: boolean
description: >-
Flag indicating that the response is a possibly incomplete array or
an object containing a possibly incomplete array, due to hitting a
processing time limit. If `true`, some matching results might be
missing from the array, or elements for matching results might be
incorrectly included (for example, when priority sorting would have
removed the element). Depending on the use case, such a response may
be unsuitable.
description: Object denoting that the endpoint response is possibly incomplete.
required:
- isPartial
x-property-sort:
- isPartial
PostNewsArticleListRequest:
x-property-sort:
- data
- meta
description: Request Body
type: object
properties:
data:
type: object
x-property-sort:
- filter
description: The data member contains the request's primary data.
properties:
filter:
description: >-
Criteria that filter the items in the response list; only items
that match all of the criteria are returned.
type: object
x-property-sort:
- range
- categories
- regions
- distributor
- publisher
- language
- types
properties:
range:
type: object
format: timeRange
properties:
start:
type: string
format: datetime
description: >-
The starting point of the time range (inclusive), or
`null` to indicate that the time range extends
indefinitely into the past.
x-allowNullValue: true
end:
type: string
format: datetime
description: >-
The ending point of the time range (exclusive), or
`null` to indicate that the time range extends
indefinitely into the future.
x-allowNullValue: true
x-property-sort:
- start
- end
required:
- start
- end
description: >-
Time range for matching the news article's date. At most one
of the attributes `start` or `end` may be `null`.
# --- truncated at 32 KB (175 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/factset/refs/heads/main/openapi/real-time-news-openapi-original.yml