Before you start
Generate an API key in API key settings under Settings > API Keys, and keep it in anAPI_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
q. Results rank exact ticker matches first, then exact name matches, then listed companies ahead of unlisted ones.
cURL
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
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 Englishtitle, a summary, key_points, the publishing source, a content_type, and article_url pointing at the full original-language article.
Response
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.
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.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
source_type=stock_exchange narrows to exchange newsfeeds, the lowest-latency tier, and leaves out the news coverage that follows:
cURL
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
News for several companies
The company routes cover one company each. To follow several at once, switch to the flatGET /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
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
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.