---
title: "List Articles"
method: GET
path: "/api/v1/articles"
tags: ["Articles"]
---

# List Articles

`GET /api/v1/articles`

## Request

- Base URL: `https://nordicfinancialnews.com`
- URL: `https://nordicfinancialnews.com/api/v1/articles`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/nordicfinancialnews/apis/nordic-financial-news-api/docs/api/v1/articles/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns a paginated list of live articles ordered by publication date (newest first). Each article includes an English headline, a short summary, and key points, with `article_url` linking to the full original-language article at the source.

## Filtering
Supports filtering by country, category, source, company ticker, and content type. Use `GET /api/v1/sources` to discover source IDs for the `sources` filter. Use `ids` for batch lookup of specific articles.

## Search
Use `q` for full-text search: relevance-ranked by default, newest-first with `sort=latest`, or matched by meaning with `mode=semantic`.

## Polling for updates
Use `updated_after` for incremental syncing.

## Pagination
Responses include cursor-based pagination and support field projection to minimize payload size.

## Caching
Requests with `updated_after` are not cached: they return `Cache-Control: no-cache, no-store` and no `ETag`. The `ETag` reflects the response as served, not only record timestamps: it changes when plan limits alter the visible set, so a changed `ETag` does not necessarily mean a record was updated.

## Query parameters

- `limit` integer
- `cursor` string
- `fields` string
- `updated_after` string
- `q` string
- `sort` 'relevance' | 'latest'
- `mode` 'semantic'
- `country` string
- `category` string
- `sources` string
- `source_type` string
- `ticker` string
- `company` string
- `exchange` string
- `market` string
- `domicile` string
- `index` string
- `sector` string
- `market_segment` string
- `content_type` string
- `published_after` string
- `published_before` string
- `listed` string
- `watchlist` string
- `primary_only` boolean
- `include_peripheral` boolean
- `ids` string

## Headers

- `If-None-Match` string
- `If-Modified-Since` string

## Response `200`

Articles retrieved successfully

- object
  - `articles` ArticleSummary[], required
    - `id` string, required: Unique article identifier
    - `title` string, required: Article title in English. Machine-translated when the source article is not in English.
    - `article_url` string, required: Link to the original article
    - `content_type` 'news' | 'analysis' | 'press_release' | 'market_commentary' | 'market_news' | 'trading_halt' | 'trading_event' | 'other', required: Type of article content
    - `published_at` string, date-time, required: When the article was published by its source (ISO 8601). This is editorial time, not the time the article reached this API. Use it to filter by when news happened, never to track what is new to you.
    - `updated_at` string, date-time, required: When this record last changed (ISO 8601). This is the clock incremental sync runs on. It only ever moves forward, unlike published_at. To sync: pass your last completed sync time as `updated_after`, drain every page via `pagination.next_cursor`, and only then advance your stored timestamp.
    - `category` object, required: Article category
      - `id` string
      - `name` string
    - `source` object, required: The news source that published this article
      - `id` string: Unique source identifier
      - `name` string
      - `domain` string
      - `source_type` 'news_publication' | 'wire_service' | 'press_release' | 'government' | 'trade_publication' | 'blog' | 'stock_exchange' | 'research'
    - `company_ids` string[], required: IDs of companies mentioned in the article
    - `country` string, nullable, required: Country code (ISO 3166-1 alpha-2)
    - `event_id` string, nullable: ID of the event this article belongs to. Null when the article has not been assigned to an event yet. An event that has since been merged or removed still answers `GET /events/{id}` with a tombstone rather than a 404.
  - `pagination` object
    - `count` integer
    - `next_cursor` string, nullable

## Other responses

- `304`: Not Modified
- `401`: unauthorized

---

[API](https://skmtc.dev/nordicfinancialnews/apis/nordic-financial-news-api.md) - [All operations](https://skmtc.dev/nordicfinancialnews/apis/nordic-financial-news-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nordicfinancialnews/apis/nordic-financial-news-api/revisions/aa48db8c82fc?raw)
