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
| Name | Type | Default | Notes |
|---|---|---|---|
tag | string | - | Exact tag. Repeatable - multiple tag params are AND'd. Examples: ticker:NVDA, topic:fed, topic:fda |
outlet | string | - | Exact outlet name (e.g. Reuters, Wall Street Journal) |
hours | int | 168 | Lookback window. Uncapped on Max tier |
limit | int | 50 | 1 to 200 |
offset | int | 0 | Pagination offset |
Tag taxonomy
ticker:<SYMBOL> - ~720 names. Use /market/tags to see what's currently active.
topic:<NAME> - 47 topics:
| Group | Topics |
|---|---|
| Central banks | fed, ecb, boe, boj |
| Macro / data | rates, inflation, cpi, ppi, gdp, jobs, recession, confidence, retail |
| Markets / instruments | indices, treasuries, bonds, credit, pe_vc, fx |
| Corporate | earnings, guidance, ipo, m&a, layoffs, dividend, bankruptcy |
| Trade / policy | trade, sanctions, antitrust, regulation, litigation |
| Healthcare | fda |
| Management | management, labor |
| Tech / cyber | ai, cyber |
| Multilateral | imf, rating |
| Corporate events | contract, split, offering |
| Crypto / commodities | crypto, oil, gold, commodities |
| Catch-all | markets, 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_scoreare populated for ~23% of articles (where outlet sentiment was extractable).image_urlis populated for ~28% of articles.bias_labelandbias_slugare populated for every article (driven by outlet metadata, not per-article).tickersandtopicsare convenience splits oftags- 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
| Name | Type | Default | Notes |
|---|---|---|---|
hours | int | 168 | Lookback 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.