Skip to main content
Nordic business news is scattered across dozens of local-language sources, and speaking one Nordic language doesn’t cover the other four. This API collapses that into one request: pass a ticker and get that company’s news in English, translated within minutes of publication.

Before you start

Generate an API key in API key settings under Settings > API Keys, and keep it in an API_KEY environment variable. Every request below sends it as Authorization: Bearer $API_KEY against https://nordicfinancialnews.com/api/v1. See Authentication for scopes and rate limits.

Step 1: Find the company

Every company route takes a company ID or a ticker as its path identifier. Plain symbols, exchange-suffixed forms, and former tickers all resolve. Matching is case-insensitive.
cURL
If you only have a name, search with q. Results rank exact ticker matches first, then exact name matches, then listed companies ahead of unlisted ones.
cURL
A few symbols are shared by more than one company. The API returns the one holding a listing on a Nordic exchange, then the one with an active listing, then the most recently listed. Pass the company id when the lookup has to be unambiguous.
When you already hold identifiers, resolve them as a batch rather than one at a time. company takes up to 25 company id values and ticker up to 25 tickers, so a page of articles costs one request per 25 distinct companies rather than one per company.
cURL
Rows come back in name order rather than the order you asked for, so key each one by its own id. Every value has to resolve, or the request fails with a 400 naming the ones that did not. Here a shared symbol resolves to every issuer using it instead of tie-breaking to one, so a batch can return more rows than it sent: follow next_cursor rather than assuming a single page. Cross-listings and multiple share classes are common in the Nordics, so check also_listed_on on company detail to see a company’s other venues.

Step 2: Get the company’s articles

An article is a single news item from a single source. It carries an English title, a summary, key_points, the publishing source, a content_type, and article_url pointing at the full original-language article.
Response
Articles come back newest first and are cursor-paginated. See Pagination for the cursor walk, and Real-time updates to keep a local copy in sync with updated_after. Add primary_only=true to drop articles where the company is a passing mention in a sector round-up rather than the subject.
title, summary, and key_points are machine-translated and AI-paraphrased from the source article. They are not verbatim quotations and they are not human-verified. Link to article_url when a reader needs the original wording.
plan_limited: true in a response means your plan capped it. A company request returns that company’s newest articles rather than a slice of the platform feed, so the filters below narrow within the company’s own set. Your plan’s source list and recency window still apply first. See the pricing page for current limits.

Step 3: Get the company’s stories

A story is an AI-synthesized narrative that groups several articles covering one developing event into a single account. Where the articles route returns every report on an acquisition separately, this one returns the single story they all belong to.
Each story carries article_count and article_ids, ordered most relevant first, so you can walk from a story to its sources. Fetch GET /stories/{id} for the full narrative, which arrives as Markdown in the content field.

Articles or stories?

Build a company page with stories at the top for the narrative and the article feed beneath it for the detail.

Step 4: Filter the feed

Both routes take the same filters as the flat /articles and /stories feeds, applied to the company in the path: q, sort, updated_after, country, sources, published_after, and published_before. Add fields to trim the payload and category to filter by subject, using an ID from GET /categories. Articles also take content_type, source_type, and primary_only. content_type says what kind of item an article is: source_type says what kind of publisher it came from: news_publication, wire_service, press_release, government, trade_publication, blog, stock_exchange, or research. Coverage lists which publishers fall into each group. Only the company’s press releases:
cURL
Only its own exchange disclosures, filed this quarter. source_type=stock_exchange narrows to exchange newsfeeds, the lowest-latency tier, and leaves out the news coverage that follows:
cURL
A keyword search inside the company’s coverage. The default sort=relevance returns one ranked page with no cursor, which suits a search box. sort=latest makes q an ordinary filter under the newest-first order and restores cursor pagination, which suits a feed:
cURL
These routes reject nine parameters that would describe a different company or listing: ticker, company, watchlist, listed, exchange, market, domicile, index, and sector. Sending one returns 400. The path already fixes the company. To cover several companies, see below.

News for several companies

The company routes cover one company each. To follow several at once, switch to the flat GET /articles and GET /stories feeds. On those, ticker and company each take a comma-separated list of up to 25 values and match any of them. Send both and they intersect, like any other pair of filters.
cURL
To select companies by group rather than by name, the same feeds take watchlist, index (OMXS30), sector, exchange, market, and domicile, alongside every filter from step 4. Use market for companies listed on a country’s exchanges and domicile for those legally registered there.
cURL
Every value in a ticker or company list has to resolve to a company the API publishes. One typo fails the whole request with a 400 and Unknown ticker(s): VOLVB, rather than quietly dropping that company from the feed. index and exchange go the other way. An unrecognized code there never errors: it drops out of the filter, or returns an empty page when nothing in it matches.

Next steps

Real-time updates

Poll with updated_after to keep a local mirror in sync.

Caching

Send If-None-Match and skip the payload when nothing changed.

CLI

Run nfn companies articles VOLV-B without writing code.

MCP server

Give an AI assistant the same company filters.
Last modified on September 3, 2026