Docs  /  Market

Market

Article-level market desk endpoints. These mirror the data on the /markets page and feed the MCP get_market_articles and get_market_tags tools.

Tier required: Max. Free and Pro receive 401 dev_tier_required. See Authentication.

Articles are tagged at ingest time with ~720 ticker symbols and 47 topic labels. Pre-clustering, so duplicates from different outlets covering the same story are expected. For clustered events with divergence scores and sentiment, use Events with min_market_score.


List market articles

GET /api/v2/market/articles
curl "https://divergence.news/api/v2/market/articles?tag=ticker:NVDA&tag=topic:earnings&hours=168&limit=25" \
  -H "X-API-Key: dv_api_..."

Parameters

NameTypeDefaultNotes
tagstring-Exact tag. Repeatable - multiple tag params are AND'd. Examples: ticker:NVDA, topic:fed, topic:fda
outletstring-Exact outlet name (e.g. Reuters, Wall Street Journal)
hoursint168Lookback window. Uncapped on Max tier
limitint501 to 200
offsetint0Pagination offset

Tag taxonomy

ticker:<SYMBOL> - ~720 names. Use /market/tags to see what's currently active.

topic:<NAME> - 47 topics:

GroupTopics
Central banksfed, ecb, boe, boj
Macro / datarates, inflation, cpi, ppi, gdp, jobs, recession, confidence, retail
Markets / instrumentsindices, treasuries, bonds, credit, pe_vc, fx
Corporateearnings, guidance, ipo, m&a, layoffs, dividend, bankruptcy
Trade / policytrade, sanctions, antitrust, regulation, litigation
Healthcarefda
Managementmanagement, labor
Tech / cyberai, cyber
Multilateralimf, rating
Corporate eventscontract, split, offering
Crypto / commoditiescrypto, oil, gold, commodities
Catch-allmarkets, analyst

Response

{
  "data": [
    {
      "id": 408291,
      "headline": "Nvidia smashes Q3 estimates, raises full-year guidance",
      "outlet": "Reuters",
      "outlet_slug": "reuters",
      "domain": "reuters.com",
      "bias_slug": "center",
      "bias_position": 50,
      "bias_label": "Center",
      "url": "https://www.reuters.com/...",
      "image_url": null,
      "published_at": "2026-05-08T20:14:00Z",
      "fetched_at": "2026-05-08T20:32:11Z",
      "sentiment": null,
      "sentiment_score": null,
      "tickers": ["NVDA"],
      "topics": ["earnings", "guidance"],
      "tags": ["ticker:NVDA", "topic:earnings", "topic:guidance"]
    }
  ],
  "count": 1,
  "meta": {
    "count": 1,
    "offset": 0,
    "limit": 50,
    "filtered_tags": ["ticker:NVDA", "topic:earnings"],
    "hours": 168
  }
}

Field notes

  • sentiment / sentiment_score are populated for ~23% of articles (where outlet sentiment was extractable).
  • image_url is populated for ~28% of articles.
  • bias_label and bias_slug are populated for every article (driven by outlet metadata, not per-article).
  • tickers and topics are convenience splits of tags - the same data with the prefix stripped.

List tag counts

Aggregate tag counts across recent market-relevant articles. Useful for building filter UIs or discovering what's currently active.

GET /api/v2/market/tags
curl "https://divergence.news/api/v2/market/tags?hours=168" \
  -H "X-API-Key: dv_api_..."

Parameters

NameTypeDefaultNotes
hoursint168Lookback window. Uncapped on Max tier

Response

{
  "data": [
    { "tag": "topic:ai", "count": 196 },
    { "tag": "topic:oil", "count": 180 },
    { "tag": "topic:trade", "count": 141 },
    { "tag": "ticker:SAVE", "count": 22 },
    { "tag": "ticker:GME", "count": 16 }
  ],
  "count": 184,
  "hours": 168
}

Sorted by count descending. To isolate tickers or topics, filter results by the ticker: or topic: prefix on the tag field.