StockData News API

Global financial news with sentiment analysis

OpenAPI Specification

stockdata-news-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: StockData Entities News API
  description: StockData.org provides free real-time, intraday, and historical stock, forex, and cryptocurrency market data along with global financial news and sentiment analysis. The API delivers market data for US-listed stocks including OHLCV data, splits, dividends, and entity-level news sentiment from 5,000+ sources in 30+ languages. All endpoints require an api_token parameter.
  version: '1.0'
  contact:
    url: https://www.stockdata.org/
  termsOfService: https://www.stockdata.org/terms
servers:
- url: https://api.stockdata.org/v1
  description: Production Server
security:
- ApiToken: []
tags:
- name: News
  description: Global financial news with sentiment analysis
paths:
  /news/all:
    get:
      operationId: getFinancialNews
      summary: Get Financial News
      description: Get all the latest global financial news filtered by entities identified within articles, with sentiment analysis for each entity.
      tags:
      - News
      parameters:
      - name: api_token
        in: query
        required: true
        schema:
          type: string
        description: Your API token from the StockData dashboard.
      - name: symbols
        in: query
        required: false
        schema:
          type: string
        description: Filter news by comma-separated ticker symbols.
      - name: entity_types
        in: query
        required: false
        schema:
          type: string
        description: Filter by entity types (e.g., index, equity, etf).
      - name: industries
        in: query
        required: false
        schema:
          type: string
        description: Filter by industry classification.
      - name: countries
        in: query
        required: false
        schema:
          type: string
        description: Filter by country code.
      - name: sentiment_gte
        in: query
        required: false
        schema:
          type: number
          format: float
        description: Minimum sentiment score filter.
      - name: sentiment_lte
        in: query
        required: false
        schema:
          type: number
          format: float
        description: Maximum sentiment score filter.
      - name: search
        in: query
        required: false
        schema:
          type: string
        description: Full-text search query across article titles and descriptions.
      - name: language
        in: query
        required: false
        schema:
          type: string
        description: Filter by language code (e.g., en, de, fr).
      - name: page
        in: query
        required: false
        schema:
          type: integer
        description: Page number for pagination.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
        description: Number of results per page (max 50).
      responses:
        '200':
          description: News articles returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewsResponse'
        '401':
          description: Invalid or missing API token.
        '429':
          description: Rate limit exceeded.
  /news/similar/{uuid}:
    get:
      operationId: getSimilarNews
      summary: Get Similar News Articles
      description: Find articles similar to a specific article identified by its UUID, with relevance scores and entity data.
      tags:
      - News
      parameters:
      - name: uuid
        in: path
        required: true
        schema:
          type: string
        description: UUID of the reference article.
      - name: api_token
        in: query
        required: true
        schema:
          type: string
        description: Your API token from the StockData dashboard.
      - name: symbols
        in: query
        required: false
        schema:
          type: string
        description: Filter similar articles by ticker symbols.
      - name: language
        in: query
        required: false
        schema:
          type: string
        description: Filter by language code.
      responses:
        '200':
          description: Similar articles returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewsResponse'
        '401':
          description: Invalid or missing API token.
        '404':
          description: Article not found.
  /news/uuid/{uuid}:
    get:
      operationId: getNewsByUuid
      summary: Get News Article By UUID
      description: Retrieve a specific news article by its unique identifier.
      tags:
      - News
      parameters:
      - name: uuid
        in: path
        required: true
        schema:
          type: string
        description: UUID of the article to retrieve.
      - name: api_token
        in: query
        required: true
        schema:
          type: string
        description: Your API token from the StockData dashboard.
      responses:
        '200':
          description: News article returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewsArticle'
        '401':
          description: Invalid or missing API token.
        '404':
          description: Article not found.
  /news/stats/intraday:
    get:
      operationId: getNewsStatsIntraday
      summary: Get Entity News Stats Intraday
      description: Get an intraday time-series view of entity performance based on news sentiment, grouped by intervals.
      tags:
      - News
      parameters:
      - name: api_token
        in: query
        required: true
        schema:
          type: string
        description: Your API token from the StockData dashboard.
      - name: interval
        in: query
        required: false
        schema:
          type: string
          enum:
          - minute
          - hour
          - day
          - week
          - month
          - quarter
          - year
        description: Aggregation interval for the time series.
      - name: group_by
        in: query
        required: false
        schema:
          type: string
        description: Field to group results by (e.g., symbol).
      - name: symbols
        in: query
        required: false
        schema:
          type: string
        description: Filter by comma-separated ticker symbols.
      - name: sentiment_gte
        in: query
        required: false
        schema:
          type: number
          format: float
        description: Minimum sentiment score filter.
      - name: min_doc_count
        in: query
        required: false
        schema:
          type: integer
        description: Minimum number of articles required to include an entity.
      responses:
        '200':
          description: Intraday entity news stats returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewsStatsResponse'
        '401':
          description: Invalid or missing API token.
  /news/stats/aggregation:
    get:
      operationId: getNewsStatsAggregation
      summary: Get Entity News Stats Aggregation
      description: Get a single-timeframe aggregation showing best and worst performing entities based on news sentiment.
      tags:
      - News
      parameters:
      - name: api_token
        in: query
        required: true
        schema:
          type: string
        description: Your API token from the StockData dashboard.
      - name: group_by
        in: query
        required: false
        schema:
          type: string
        description: Field to group results by.
      - name: symbols
        in: query
        required: false
        schema:
          type: string
        description: Filter by comma-separated ticker symbols.
      - name: sentiment_gte
        in: query
        required: false
        schema:
          type: number
          format: float
        description: Minimum sentiment score filter.
      - name: min_doc_count
        in: query
        required: false
        schema:
          type: integer
        description: Minimum number of articles required.
      responses:
        '200':
          description: Aggregated entity news stats returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewsAggregationResponse'
        '401':
          description: Invalid or missing API token.
  /news/stats/trending:
    get:
      operationId: getTrendingEntities
      summary: Get Trending Entities
      description: Identify trending entities based on news volume and sentiment within a specified timeframe.
      tags:
      - News
      parameters:
      - name: api_token
        in: query
        required: true
        schema:
          type: string
        description: Your API token from the StockData dashboard.
      - name: group_by
        in: query
        required: false
        schema:
          type: string
        description: Field to group results by.
      - name: sentiment_gte
        in: query
        required: false
        schema:
          type: number
          format: float
        description: Minimum sentiment score filter.
      - name: date_from
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Start date/time for the trending window.
      - name: date_to
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: End date/time for the trending window.
      - name: min_doc_count
        in: query
        required: false
        schema:
          type: integer
        description: Minimum number of articles required.
      responses:
        '200':
          description: Trending entities returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrendingResponse'
        '401':
          description: Invalid or missing API token.
  /news/sources:
    get:
      operationId: getNewsSources
      summary: Get News Sources
      description: View all available news sources that can be used to filter other API requests. Sources span 5,000+ outlets in 30+ languages.
      tags:
      - News
      parameters:
      - name: api_token
        in: query
        required: true
        schema:
          type: string
        description: Your API token from the StockData dashboard.
      - name: distinct_domain
        in: query
        required: false
        schema:
          type: boolean
        description: Return only distinct domains.
      - name: language
        in: query
        required: false
        schema:
          type: string
        description: Filter sources by language code.
      - name: page
        in: query
        required: false
        schema:
          type: integer
        description: Page number for pagination.
      responses:
        '200':
          description: News sources returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourcesResponse'
        '401':
          description: Invalid or missing API token.
components:
  schemas:
    NewsSource:
      type: object
      properties:
        source_id:
          type: string
          description: Unique source identifier.
        domain:
          type: string
          description: Source domain name.
        language:
          type: string
          description: Primary language of the source.
    NewsResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        data:
          type: array
          items:
            $ref: '#/components/schemas/NewsArticle'
    EntityStats:
      type: object
      properties:
        entity_key:
          type: string
          description: Entity identifier (symbol or key).
        total_documents:
          type: integer
          description: Total number of articles mentioning this entity.
        sentiment_avg:
          type: number
          format: float
          description: Average sentiment score across all articles.
    TrendingResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        data:
          type: array
          items:
            $ref: '#/components/schemas/TrendingEntity'
    SourcesResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        data:
          type: array
          items:
            $ref: '#/components/schemas/NewsSource'
    Meta:
      type: object
      properties:
        found:
          type: integer
          description: Total number of records matching the query.
        returned:
          type: integer
          description: Number of records returned in this response.
        limit:
          type: integer
          description: Maximum records per page.
        page:
          type: integer
          description: Current page number.
    NewsEntity:
      type: object
      properties:
        symbol:
          type: string
          description: Entity ticker symbol.
        name:
          type: string
          description: Entity name.
        exchange:
          type: string
          description: Exchange name.
        exchange_long:
          type: string
          description: Exchange full name.
        mic_code:
          type: string
          description: Market identifier code.
        country:
          type: string
          description: Country code.
        type:
          type: string
          description: Entity type.
        industry:
          type: string
          description: Industry classification.
        match_score:
          type: number
          format: float
          description: Entity match confidence score.
        sentiment_score:
          type: number
          format: float
          description: Entity sentiment score for this article (-1 to 1).
        highlights:
          type: array
          items:
            $ref: '#/components/schemas/Highlight'
    Highlight:
      type: object
      properties:
        highlight:
          type: string
          description: Highlighted text excerpt.
        sentiment:
          type: number
          format: float
          description: Sentiment score for this highlight.
        highlighted_in:
          type: string
          description: Article section where highlight appears.
    NewsAggregationResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        data:
          type: array
          items:
            $ref: '#/components/schemas/EntityStats'
    NewsStatsResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        data:
          type: object
          description: Date-keyed time series of entity stats.
    TrendingEntity:
      type: object
      properties:
        entity_key:
          type: string
          description: Entity identifier.
        document_count:
          type: integer
          description: Number of articles mentioning this entity.
        sentiment_avg:
          type: number
          format: float
          description: Average sentiment score.
        relevance_score:
          type: number
          format: float
          description: Trending relevance score.
    NewsArticle:
      type: object
      properties:
        uuid:
          type: string
          description: Unique identifier for the article.
        title:
          type: string
          description: Article headline.
        description:
          type: string
          description: Article summary or excerpt.
        keywords:
          type: string
          description: Keywords associated with the article.
        snippet:
          type: string
          description: Short snippet from the article body.
        url:
          type: string
          format: uri
          description: URL of the original article.
        image_url:
          type: string
          format: uri
          description: URL of the article's featured image.
        language:
          type: string
          description: Language code of the article.
        published_at:
          type: string
          format: date-time
          description: Publication timestamp.
        source:
          type: string
          description: News source domain.
        relevance_score:
          type: number
          format: float
          description: Relevance score for the query.
        entities:
          type: array
          items:
            $ref: '#/components/schemas/NewsEntity'
        similar:
          type: array
          items:
            $ref: '#/components/schemas/NewsArticle'
  securitySchemes:
    ApiToken:
      type: apiKey
      in: query
      name: api_token
      description: API token obtained from the StockData dashboard.