Nordic Financial News Countries API

The Countries API from Nordic Financial News — 2 operation(s) for countries.

Operations 2

GET /api/v1/countries List Countries #
GET /api/v1/countries/{identifier} Get Country Details #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/nordic-financial-news:nordic-financial-news-countries-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

nordic-financial-news-countries-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Nordic Financial News Countries API
  version: v1.0
  description: 'REST API for Nordic financial news. Each article is summarized in English (headline, short summary, and key points) with the original-language article linked via `article_url`. The full article body stays at the source. ## Authentication

    All endpoints require Bearer token authentication using an API key. Include the API key in the Authorization header:

    ```

    Authorization: Bearer YOUR_API_KEY

    ```


    ## Rate Limiting

    Rate limits apply per account, shared across every API key on that account — not per

    individual key:

    - **Free**: 100 requests/hour

    - **Plus**: 100 requests/hour

    - **Pro**: 5,000 requests/hour


    On Free and Plus, MCP tool calls have their own hourly and monthly allowance and do not

    count toward these REST limits. On Pro, REST requests and MCP tool calls share one allowance. Rate limit information is included in response headers:

    - `X-RateLimit-Limit`: Maximum requests per hour

    - `X-RateLimit-Remaining`: Requests remaining

    - `X-RateLimit-Reset`: Seconds until limit resets

    - `X-RateLimit-Policy`: Human-readable rate limit policy (e.g. `5000 per hour; fixed window`)


    A single client IP is additionally capped at 300 requests per 5-minute window, so

    reaching your account''s full hourly allowance requires spreading requests across more

    than one source IP. The `/health` endpoint is exempt from rate limiting and does not return rate limit headers. ## Monthly Usage Limits

    Free and Plus accounts have a fixed monthly allowance that resets at the start of each

    calendar month, shared across every API key on the account:

    - **Free**: 100 requests/month

    - **Plus**: 100 requests/month


    Responses on these plans include:

    - `X-Monthly-Limit`: Maximum requests for the current month

    - `X-Monthly-Remaining`: Requests remaining this month

    - `X-Monthly-Reset`: ISO 8601 timestamp when the allowance resets


    When the allowance is exceeded, the API returns `429 Too Many Requests` with a `Retry-After` header. Pro has no hard limit. It includes 25,000 requests per billing cycle, with usage-based

    pricing beyond that, so requests are never blocked. Responses on Pro include:

    - `X-Monthly-Usage`: Requests used in the current billing cycle

    - `X-Monthly-Reset`: ISO 8601 timestamp when the current billing cycle ends


    A Pro billing cycle follows your subscription''s billing period, which begins on the

    date you subscribed and is not necessarily a calendar month. Usage is counted by day,

    so the first day of a billing cycle is counted in full. ## Caching

    Every list and single-resource endpoint returns an `ETag`. Most also return

    `Last-Modified` (on lists, when the page is not empty); `GET /stories/{id}` and the

    Events endpoints do not. Send the ETag back as `If-None-Match`, or the date as

    `If-Modified-Since`, to receive `304 Not Modified` when nothing has changed. A 304

    has no body and does not count against the monthly request allowance. `GET /events`, `GET /events/{id}` and `GET /companies/{identifier}/events` return an

    `ETag` but no `Last-Modified`, so revalidate those routes with `If-None-Match`. An

    event''s visible company and story membership, and its live article count, all change

    without moving its `updated_at`, so a date-based validator would report "not

    modified" across a change the `ETag` catches. Some requests are never cached and return `Cache-Control: no-cache, no-store` with

    no `ETag`: full-text search (`q`), `updated_after` sync requests, and `GET /search`. The `ETag` reflects the response as served, not only record timestamps. On articles

    and stories, including the company-scoped routes, and on `GET /calendar_events`, it

    changes when a plan limit alters the visible set, and on stories when a story''s

    visible article set changes. A changed `ETag` does not necessarily mean a record was

    updated. On the Events endpoints the `ETag` additionally covers each event''s visible

    company and story ids and its live article count, none of which move the event''s

    `updated_at`. ## Pagination

    List endpoints support cursor-based pagination.'
  contact:
    name: API Support
    email: hello@nordicfinancialnews.com
servers:
- url: https://nordicfinancialnews.com
  description: Production server
tags:
- name: Countries
paths:
  /api/v1/countries:
    get:
      summary: List Countries
      tags:
      - Countries
      security:
      - bearer_auth: []
      description: Returns the Nordic countries covered by the API, ordered alphabetically. Use the country `id` or `iso2_code` to filter articles, stories, and companies by country.
      parameters:
      - name: limit
        in: query
        required: false
        description: Number of countries to return per page (default 25, max 100).
        example: 25
        schema:
          type: integer
      - name: cursor
        in: query
        required: false
        description: Opaque pagination cursor from a previous response.
        schema:
          type: string
      - name: fields
        in: query
        required: false
        description: 'Comma-separated list of fields to include. Available fields: `id`, `name`, `iso2_code`.'
        example: id,name,iso2_code
        schema:
          type: string
      - name: If-None-Match
        in: header
        required: false
        description: ETag value from a previous response. Returns `304 Not Modified` if data has not changed.
        schema:
          type: string
      - name: If-Modified-Since
        in: header
        required: false
        description: HTTP date from a previous `Last-Modified` header. Returns `304 Not Modified` if nothing has changed since.
        schema:
          type: string
      responses:
        '200':
          description: Countries retrieved successfully
          content:
            application/json:
              examples:
                countries_list:
                  value:
                    countries:
                    - id: ctry_sweden12
                      name: Sweden
                      iso2_code: SE
                    pagination:
                      count: 1
                      next_cursor: null
              schema:
                type: object
                properties:
                  countries:
                    type: array
                    items:
                      $ref: '#/components/schemas/CountrySummary'
                  pagination:
                    type: object
                    properties:
                      count:
                        type: integer
                      next_cursor:
                        type:
                        - string
                        - 'null'
                required:
                - countries
        '304':
          description: Not Modified
      operationId: getApiV1Countries
      x-operation-id-source: derived
  /api/v1/countries/{identifier}:
    parameters:
    - name: identifier
      in: path
      required: true
      description: Country ID, ISO 3166-1 alpha-2 code (e.g. `SE`), or slug (e.g. `sweden`)
      schema:
        type: string
    get:
      summary: Get Country Details
      tags:
      - Countries
      security:
      - bearer_auth: []
      description: Returns details for a single country, including its stock exchanges. Look up by country ID or ISO 3166-1 alpha-2 code (e.g. `SE`).
      parameters:
      - name: If-None-Match
        in: header
        required: false
        description: ETag value from a previous response. Returns `304 Not Modified` if data has not changed.
        schema:
          type: string
      - name: If-Modified-Since
        in: header
        required: false
        description: HTTP date from a previous `Last-Modified` header. Returns `304 Not Modified` if nothing has changed since.
        schema:
          type: string
      responses:
        '200':
          description: Country retrieved successfully
          content:
            application/json:
              examples:
                country_detail:
                  value:
                    country:
                      id: ctry_sweden12
                      name: Sweden
                      iso2_code: SE
                      exchanges:
                      - id: exch_xsto1234
                        name: Nasdaq Stockholm
                        mic_code: XSTO
                        acronym: STO
              schema:
                type: object
                properties:
                  country:
                    $ref: '#/components/schemas/CountrySummary'
                required:
                - country
        '304':
          description: Not Modified
        '404':
          description: Country not found
          content:
            application/json:
              examples:
                not_found:
                  value:
                    type: https://docs.nordicfinancialnews.com/problems/not-found
                    title: Not Found
                    status: 404
                    detail: The requested resource could not be found
                    instance: urn:request:abc123
              schema:
                $ref: '#/components/schemas/problem_details'
      operationId: getApiV1CountriesByIdentifier
      x-operation-id-source: derived
components:
  schemas:
    CountrySummary:
      type: object
      required:
      - id
      - name
      - iso2_code
      properties:
        id:
          type: string
          description: Unique country identifier
          example: ctry_sweden12
        name:
          type: string
          description: Country display name
          example: Sweden
        iso2_code:
          type: string
          description: ISO 3166-1 alpha-2 country code
          example: SE
    problem_details:
      type: object
      required:
      - type
      - title
      - status
      - detail
      - instance
      properties:
        type:
          type: string
          description: URI that identifies the problem type
        title:
          type: string
          description: Short human-readable summary
        status:
          type: integer
          description: HTTP status code
        detail:
          type: string
          description: Human-readable explanation
        instance:
          type: string
          description: URI that identifies the specific occurrence
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: API Key authentication using Bearer token