The article object
Every endpoint and the WebSocket stream return articles in the same shape.
article
{
"id": "art_9f2c1d7e4b8a6035",
"title": "Apple unveils new on-device AI features, shares rise in premarket trading",
"url": "https://www.example-publisher.com/markets/apple-ai-features",
"source": {
"name": "Example Publisher",
"domain": "example-publisher.com"
},
"publisher": "Example Publisher",
"published_at": "2026-10-06T12:31:04Z",
"ingested_at": "2026-10-06T12:31:09Z",
"category": "stocks",
"type": "news",
"tickers": [
"AAPL"
],
"listings": [
{
"symbol": "AAPL",
"exchange": "NASDAQ"
}
],
"snippet": "Apple on Tuesday introduced a set of on-device AI features for iPhone and Mac, sending the stock higher before the open.",
"summary": "Apple announced new on-device AI features for iPhone and Mac. Shares rose about 2% in premarket trading as analysts called the update a catalyst for the upgrade cycle.",
"body": null,
"entities": [
{
"type": "company",
"name": "Apple Inc.",
"symbol": "AAPL"
},
{
"type": "product",
"name": "iPhone"
}
],
"language": "en"
}Fields
| idstring Stable article identifier (prefix art_). The same story syndicated under several tickers has one id. |
| titlestring Headline as published. |
| urlstring Canonical link to the original article. |
sourceobjectname and domain of the wire or site the article was read from. |
| publisherstring | null Who issued the article. On a wire release this is the company named on the release, or the wire itself when the page does not name one. |
| published_atstring (ISO 8601, UTC) When the publisher released the article. |
| ingested_atstring (ISO 8601, UTC) When MarketNewsAPI first saw it. The gap to published_at is our latency. |
categorystringstocks. |
| typestring One of news, press_release or legal. For stocks the three filters are category=stocks&type=news, category=stocks&type=press_release and category=stocks&type=legal. type=press_release implies category=stocks. |
| tickersstring[] Symbols the article names, without an exchange (uppercase, e.g. AAPL, BRK.B). The same symbol on two exchanges appears once here. Use listings to tell them apart. |
| listingsobject[] Each listing named in the article: symbol and exchange (for example TSXV / MRVL and OTCQB / MBCOF). TSXV:MRVL is not the US stock MRVL. |
| snippetstring | null Publisher-provided excerpt or first paragraph. |
| summarystring | null AI-generated, neutral 1–3 sentence summary. null on the immediate WebSocket and for a few seconds on REST, until the summary is written. Some very old archive items are still empty. The summaries socket and GET /news/{id} return it once it exists. |
| bodystring | null Full text of a press release, including short releases. Third-party news returns null (follow url). |
| entitiesobject[] Named entities: type (company, country, person, product, organization, and others), name, optional symbol. |
| languagestring ISO 639-1 language code. Currently always en. |
One article, many symbols
A story about Apple and Microsoft is one article with "tickers": ["AAPL", "MSFT"], not two copies. If the same press release is distributed through several wires, we keep the first copy and merge the symbols.
Nullable fields
Fields marked | null can be missing for some articles. Arrays are always present (possibly empty). New optional fields may be added at any time, so make your parser ignore unknown fields.