Skip to main content
GET
List Articles

Authorizations

Authorization
string
header
required

API Key authentication using Bearer token

Headers

If-None-Match
string

ETag value from a previous response. Returns 304 Not Modified if data has not changed.

If-Modified-Since
string

HTTP date from a previous Last-Modified header. Returns 304 Not Modified if nothing has changed since.

Query Parameters

limit
integer

Number of articles to return per page (default 25, max 100).

cursor
string

Opaque pagination cursor returned as pagination.next_cursor from a previous response. Mutually exclusive with q unless sort=latest is also given.

fields
string

Comma-separated list of fields to include in the response. Reduces payload size. Available fields: id, title, article_url, published_at, updated_at, content_type, source, company_ids, country, category.

updated_after
string

ISO 8601 datetime. Returns only articles updated after this timestamp. Use this for incremental sync: store the timestamp of your last completed sync, then request only newer results on each poll. Results are ordered by updated_at ascending and are cursor-paginated. Follow pagination.next_cursor, resending the same updated_after value, until it is null. Only advance your stored timestamp once you have drained every page (see the Real-Time Updates guide at https://docs.nordicfinancialnews.com). Mutually exclusive with sort=latest (with or without q). An updated_after walk is always ordered by updated_at.

q
string

Full-text search query (2-200 characters). By default, results are ranked by relevance instead of publication date, as a single page with no cursor. Mutually exclusive with cursor unless sort=latest is also given. Disables caching.

sort
enum<string>

Result order for q. relevance (default) is a single relevance-ranked page with no cursor; it requires q, and returns 400 without one. latest turns q into a match filter under the endpoint's normal newest-first order (published_at descending) and the response is cursor-paginated like any other request; without q it is an accepted no-op (that's already the default order). Mutually exclusive with updated_after.

Available options:
relevance,
latest
mode
enum<string>

Set to semantic to match q by meaning rather than by keyword. The match runs over each article's translated title and summary, so it answers thematic questions a keyword match cannot ("defense contract wins", "battery cell capacity expansion").

Requires q, is mutually exclusive with sort, cursor, updated_after and ids, and returns a single ranked page capped by limit; every other filter (country, category, sources, source_type, ticker, company, market, domicile, exchange, index, sector, watchlist, content_type, published_after/published_before) remains a hard filter applied before the match, not after.

Each article gains a distance (raw cosine, lower is closer, rounded to 4dp). Compare it only within one response, never across responses: the scale is model-dependent. Ranking also blends in a small recency bonus that distance does not reflect. A server-side relevance floor drops weak matches, so a page is frequently shorter than limit and can be empty. Raising limit does not recover floored rows.

On plans with restricted article access the response carries plan_limited: true; the plan article count cap does not apply in this mode, only the source and age restrictions.

The response pagination object carries count only. There is no next_cursor, since a distance ranking cannot be cursor-paginated, and the response is uncacheable (Cache-Control: no-cache, no-store, no ETag). If the query cannot be embedded the request returns 503 rather than silently falling back to keyword matching.

Available options:
semantic
country
string

Filter by country using ISO 3166-1 alpha-2 code (e.g. SE, NO, DK). Comma-separated for multiple (e.g. SE,NO). Case-insensitive.

category
string

Filter by category id (from GET /api/v1/categories). Comma-separated for multiple (e.g. cat_earnings1,cat_mna000001); unknown ids are ignored.

sources
string

Comma-separated list of source IDs (max 25). Use GET /api/v1/sources to discover source IDs. Also accepts array form (sources[]=id1&sources[]=id2). Disabled sources resolve to empty results.

source_type
string

Filter by source type, comma-separated. Valid values: news_publication, wire_service, press_release, government, trade_publication, blog, stock_exchange, research. Articles from disabled sources are excluded. An unrecognized value returns 400 naming the bad value(s).

ticker
string

Filter by company stock ticker symbol, comma-separated for several (e.g. VOLV-B or VOLV-B,ERIC-B; matches any of them). Accepts full tickers with exchange suffix (e.g. VOLV-B.ST). Returns articles where the company is a principal association (subject, partner, investor, or competitor) — a company named only as the article's source, an advisor, or a passing mention does not match. Former tickers resolve too: a company that renamed or moved venues is still reachable by an old ticker; the returned company former_tickers lists any such historical tickers. Matching is case-insensitive. Every value must resolve to a company, or the request is rejected with 400 naming the unknown values. Combined with company, the two filters intersect.

company
string

Filter by company id (as returned by the companies endpoints), comma-separated for several (matches any of them). Complements ticker; use this to reach companies without a stock listing. Matches only the company's principal associations (subject, partner, investor, or competitor); a passing mention does not match. Every value must resolve, or the request is rejected with 400 naming the unknown ids. Combined with ticker, the two filters intersect.

exchange
string

Filter by exchange using ISO 10383 Market Identifier Code, comma-separated for multiple (e.g. XSTO for Nasdaq Stockholm, XCSE for Nasdaq Copenhagen, XHEL for Nasdaq Helsinki, XOSL for Oslo Børs). Returns articles about companies actively listed there. A company counts only through a principal association (subject, partner, investor, or competitor); a passing mention does not qualify. Case-insensitive.

market
string

Filter to articles about companies with an active equity listing in these countries' exchanges (ISO 3166-1 alpha-2, comma-separated, e.g. SE,NO). SE covers Nasdaq Stockholm, First North, Spotlight and NGM. Distinct from country (the source that reported it) and domicile (legal domicile). Includes foreign-domiciled but locally-listed issuers. A company counts only through a principal association (subject, partner, investor, or competitor); a passing mention does not qualify.

domicile
string

Filter to articles about companies legally domiciled in these countries (ISO 3166-1 alpha-2, comma-separated). Reaches unlisted companies; excludes foreign-domiciled but locally-listed issuers. Use market for market-coverage questions. A company counts only through a principal association (subject, partner, investor, or competitor); a passing mention does not qualify.

index
string

Filter by stock index id or symbol (e.g. OMXS30, OMXC25, OMXH25, OBX). Returns articles about companies in that index. A company counts only through a principal association (subject, partner, investor, or competitor); a passing mention does not qualify. Case-insensitive for symbols.

sector
string

Filter by company sector. A company counts only through a principal association (subject, partner, investor, or competitor); a passing mention does not qualify. Case-sensitive; must exactly match one of: Communication Services, Consumer Discretionary, Consumer Staples, Energy, Financials, Health Care, Industrials, Information Technology, Materials, Real Estate, Utilities.

content_type
string

Filter by article content type, comma-separated. Valid values: news, analysis, press_release, market_commentary, market_news, trading_halt, trading_event, other. GET /api/v1/meta lists them as content_types. An unrecognized value returns 400 naming the bad value(s).

published_after
string

ISO 8601 datetime. Returns articles published on or after this timestamp.

published_before
string

ISO 8601 datetime. Returns articles published before this timestamp.

listed
string

When true, only return articles about at least one company with an active listing on any exchange, through a principal association (subject, partner, investor, or competitor). A passing mention does not qualify, and include_peripheral does not change this. A company whose listings are all delisted does not count. Hidden and unverified companies do not count.

watchlist
string

Restricts to articles about companies in a single watchlist, identified by its id (from the List Watchlists endpoint), through a principal association (subject, partner, investor, or competitor) — a passing mention does not qualify. An unknown id returns no articles. Requires read:watchlist scope.

primary_only
boolean

When true, narrows further within the already-principal match, to only articles where the matched company (ticker, company, or watchlist) is the primary subject. Requires ticker, company, or watchlist, and returns 400 without one.

include_peripheral
boolean

When true, widen the ticker, company and watchlist filters — and each article's company_ids — back to peripheral associations (a company named only as the article's source, an advisor, or a passing mention), which are otherwise excluded. Default false (principal-only: subject, partner, investor, competitor). primary_only still wins where it applies: the primary-subject restriction is kept even when peripheral is requested. Not honored on GET /api/v1/search.

ids
string

Comma-separated list of article IDs for batch lookup (max 100). Cannot be combined with cursor, updated_after, or sort. Returns a single page: pagination carries count only, with no next_cursor. IDs that don't resolve, or that your plan can't access, are omitted rather than rejected, so count can be less than the number of IDs sent. Key off each row's id.

Response

Articles retrieved successfully

articles
object[]
required
pagination
object
Last modified on October 7, 2026