News Articles

Overview

News Articles returns a paginated, cursor-pageable list of news articles tagged with tickers, topics, and per-ticker sentiment. The article body is opt-in via includeBody: true so default responses stay light.

POST/v1/news/tool/news-articles
curl -X POST https://api.quantdata.us/v1/news/tool/news-articles \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": { "tickers": ["AAPL"] }
  }'

Selecting the time window

The endpoint accepts timeRange only. sessionDate, snapshotTime, and aggregationPeriod are not accepted on this endpoint.

When timeRange is supplied, both startTime and endTime are required and startTime must be strictly less than endTime.

Custom intraday window

Request · timeRange
{
  "timeRange": {
    "startTime": "2026-05-13T13:30:00Z",
    "endTime": "2026-05-13T20:00:00Z"
  },
  "filter": { "tickers": ["AAPL", "NVDA"] }
}

Pagination

News Articles uses cursor pagination. size sets the page size (default 50, range 1-100). Pass the previous response's nextSearchAfter back as searchAfter to get the next page. See Pagination for the full walk-through.

There is no sort field on the request. Results are always returned in publishedTime DESCENDING order. When the result set is empty or the final page has been served, nextSearchAfter is omitted from the response.

Subsequent page · cursor

Request · size + searchAfter
{
  "filter": { "tickers": ["AAPL"] },
  "size": 50,
  "searchAfter": ["1747137612000", "412057"]
}

Projection

includes is a whitelist of fields to keep on each row; excludes is a blacklist. The two are mutually exclusive. Omitted fields are dropped from the JSON entirely. See Projection for the full contract.

Projectable fields: ID, PUBLISHED_TIME, TICKER, TITLE, TOPICS.

BODY and SENTIMENT are filterable but not projectable. BODY is governed solely by the includeBody toggle below; SENTIMENT always rides along inside each tickers entry of the response row and has no separate projection slot. Listing either in includes / excludes will be rejected.

Includes · keep just the columns you need

Request · includes
{
  "filter": { "tickers": ["AAPL"] },
  "includes": ["ID", "PUBLISHED_TIME", "TICKER", "TITLE"]
}

includeBody (boolean, default false) is the only control for the article body. When true, the body field is populated on every returned row.

Opt in to article bodies

Request · includeBody
{
  "filter": {
    "tickers": ["NVDA"],
    "topics": ["EARNINGS_BEATS"]
  },
  "includeBody": true
}

Response shape

data is an ordered array of article rows. nextSearchAfter is the cursor for the next page (or omitted when none).

200 OK · application/json
{
  "data": [
    {
      "id": 412057,
      "publishedTime": 1747137612000,
      "title": "Apple unveils new chip roadmap at developer conference",
      "topics": ["EARNINGS_BEATS", "PRODUCT_LAUNCHES"],
      "tickers": [
        { "ticker": "AAPL", "sentiment": "MODERATELY_BULLISH" }
      ],
      "body": null
    },
    {
      "id": 412044,
      "publishedTime": 1747136004000,
      "title": "NVIDIA reports record data-center revenue",
      "topics": ["EARNINGS_BEATS"],
      "tickers": [
        { "ticker": "NVDA", "sentiment": "EXTREMELY_BULLISH" }
      ],
      "body": null
    }
  ],
  "nextSearchAfter": ["1747136004000", "412044"]
}

Per-row fields (every field is nullable when trimmed by projection):

  • id (integer): the unique article id.
  • publishedTime (epoch-millisecond Long): when the article was published.
  • title (string): the article headline.
  • topics (list of string): topic tags drawn from the NewsArticleTopic taxonomy.
  • tickers (list of objects): each entry is { ticker, sentiment } where sentiment is a NewsArticleSentimentTypeModel value scoped to that ticker.
  • body (string, null unless includeBody=true): the full article body.

The endpoint throws ValidationFailure when the request is malformed.

Filters

Convenience filter fields cover the row inventory. All are optional and inside filter.

  • tickers: list of ticker symbols, OR-combined.
  • topics: one or more topic values, OR-combined. 127 topics in total, listed below. Both the canonical UPPER_SNAKE_CASE name and the search-index display string are accepted on input.
  • sentiments: one or more sentiment values, OR-combined. 7-point scale from EXTREMELY_BEARISH (-3) to EXTREMELY_BULLISH (+3); full list below.

The filterExpression DSL is also accepted and can be combined with filter; both are evaluated as AND.

News Sentiment List

News Sentiment List7 values

The values sentiments accepts. The Score column is the underlying integer in the source enum.

  • EXTREMELY_BEARISH

    Score -3.

  • MODERATELY_BEARISH

    Score -2.

  • SLIGHTLY_BEARISH

    Score -1.

  • NEUTRAL

    Score 0.

  • SLIGHTLY_BULLISH

    Score 1.

  • MODERATELY_BULLISH

    Score 2.

  • EXTREMELY_BULLISH

    Score 3.

News Topic List

News Topic List121 values

The values topics accepts. Each topic has two interchangeable input forms: the canonical UPPER_SNAKE_CASE name (e.g. EARNINGS_BEATS) or the search-index display string ("Earnings Beats"). Filter input is matched case- and separator-insensitively, so both forms resolve to the same constant.

  • AFTER_HOURS_CENTERaliasesAfter-Hours Center
  • ANALYST_COLORaliasesAnalyst Color
  • ANALYST_RATINGSaliasesAnalyst Ratings
  • ASIAaliasesAsia
  • ASSET_SALESaliasesAsset Sales
  • BINARY_OPTIONSaliasesBinary Options
  • BIOTECHaliasesBiotech
  • BONDSaliasesBonds
  • BROAD_US_EQUITY_ETFSaliasesBroad U.S. Equity ETFs
  • BUYBACKSaliasesBuybacks
  • CANNABISaliasesCannabis
  • COMMODITIESaliasesCommodities
  • CONTRACTSaliasesContracts
  • CROWDSOURCINGaliasesCrowdsourcing
  • CRYPTOCURRENCYaliasesCryptocurrency
  • CURRENCY_ETFSaliasesCurrency ETFs
  • DIVIDENDSaliasesDividends
  • DOWNGRADESaliasesDowngrades
  • EARNINGSaliasesEarnings
  • EARNINGS_BEATSaliasesEarnings Beats
  • EARNINGS_MISSESaliasesEarnings Misses
  • ECON_NUMBERSaliasesEcon #s
  • ECONOMICSaliasesEconomics
  • EDUCATIONaliasesEducation
  • EMERGING_MARKET_ETFSaliasesEmerging Market ETFs
  • EMERGING_MARKETSaliasesEmerging Markets
  • ENTERTAINMENTaliasesEntertainment
  • ENTREPRENEURSHIPaliasesEntrepreneurship
  • EQUITIESaliasesEquities
  • ESGaliasesESG
  • ETFSaliasesETFs
  • EUROZONEaliasesEurozone
  • EVENTSaliasesEvents
  • EXCLUSIVESaliasesExclusives
  • FDAaliasesFDA
  • FEDERAL_RESERVEaliasesFederal Reserve
  • FINANCIAL_ADVISORSaliasesFinancial Advisors
  • FINANCINGaliasesFinancing
  • FINTECHaliasesFintech
  • FOREXaliasesForex
  • FUTURESaliasesFutures
  • GAMINGaliasesGaming
  • GENERALaliasesGeneral
  • GLOBALaliasesGlobal
  • GOVERNMENTaliasesGovernment
  • GUIDANCEaliasesGuidance
  • HEALTH_CAREaliasesHealth Care
  • HEDGE_FUNDSaliasesHedge Funds
  • HOTaliasesHot
  • INITIATIONaliasesInitiation
  • INSIDER_TRADESaliasesInsider Trades
  • INSURANCEaliasesInsurance
  • INTERVIEWaliasesInterview
  • INTRADAY_UPDATEaliasesIntraday Update
  • IPOSaliasesIPOs
  • LARGE_CAPaliasesLarge Cap
  • LATIN_AMERICAaliasesLatin America
  • LEGALaliasesLegal
  • LONG_IDEASaliasesLong Ideas
  • M_AND_AaliasesM&A
  • MACRO_ECONOMIC_EVENTSaliasesMacro Economic Events
  • MACRO_NOTIFICATIONaliasesMacro Notification
  • MANAGEMENTaliasesManagement
  • MARKET_MOVING_EXCLUSIVESaliasesMarket-Moving Exclusives
  • MARKET_SUMMARYaliasesMarket Summary
  • MARKETSaliasesMarkets
  • MEDIAaliasesMedia
  • MID_CAPaliasesMid Cap
  • MOVERSaliasesMovers
  • MOVERS_AND_SHAKERSaliasesMovers & Shakers
  • MUTUAL_FUNDSaliasesMutual Funds
  • NEW_ETFSaliasesNew ETFs
  • NEWSaliasesNews
  • OFFERINGSaliasesOfferings
  • OPINIONaliasesOpinion
  • OPTIONSaliasesOptions
  • PENNY_STOCKSaliasesPenny Stocks
  • PERSONAL_FINANCEaliasesPersonal Finance
  • POLITICSaliasesPolitics
  • PRE_MARKET_OUTLOOKaliasesPre-Market Outlook
  • PREDICTION_MARKETSaliasesPrediction Markets
  • PRESS_RELEASESaliasesPress Releases
  • PREVIEWSaliasesPreviews
  • PRICE_TARGETaliasesPrice Target
  • PRIVATE_MARKETSaliasesPrivate Markets
  • PSYCHEDELICSaliasesPsychedelics
  • PSYCHOLOGYaliasesPsychology
  • REAL_ESTATEaliasesReal Estate
  • REGULATIONSaliasesRegulations
  • REITaliasesREIT
  • REITERATIONaliasesReiteration
  • RESTAURANTSaliasesRestaurants
  • RETAIL_SALESaliasesRetail Sales
  • REVIEWSaliasesReviews
  • RUMORSaliasesRumors
  • SECaliasesSEC
  • SECTOR_ETFSaliasesSector ETFs
  • SHORT_IDEASaliasesShort Ideas
  • SHORT_SELLERSaliasesShort Sellers
  • SIGNALSaliasesSignals
  • SMALL_BUSINESSaliasesSmall Business
  • SMALL_CAPaliasesSmall Cap
  • SMALL_CAP_ANALYSISaliasesSmall Cap Analysis
  • SOCIAL_MEDIAaliasesSocial Media
  • SPACEaliasesSPACE
  • SPECIALTY_ETFSaliasesSpecialty ETFs
  • SPORTSaliasesSports
  • SPORTS_BETTINGaliasesSports Betting
  • STARTUPSaliasesStartups
  • STOCK_SPLITaliasesStock Split
  • SUCCESS_STORIESaliasesSuccess Stories
  • TECHaliasesTech
  • TECHNICALSaliasesTechnicals
  • TERMINATIONaliasesTermination
  • TOP_STORIESaliasesTop Stories
  • TOPICSaliasesTopics
  • TRADING_IDEASaliasesTrading Ideas
  • TRAVELaliasesTravel
  • TREASURIESaliasesTreasuries
  • UPGRADESaliasesUpgrades
  • WIIMaliasesWIIM

See Field Reference for the type and allowed values of every filterable field, and Filter Expression for the full DSL grammar.

Where to go next