StockData News API

Global financial news with sentiment analysis

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/stockdata-news-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

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.