NOEN
/FULL STACK CONSULTBack
[ Project ]

Fiskeridata

Every fish landing in Norway since 2000 — collected, cleaned and refreshed every night. Built by Full Stack Consult so anyone can ask questions of the fisheries numbers: on the website, in their own systems or through an AI assistant.

30M+
landing-slip lines, from 2000 up to yesterday
Nightly
a new database, tested before it is used
14
tools for AI assistants (MCP)
Free
no key and no login
[ Background ]

Open numbers, hard to use

Every time fish is sold in Norway, a landing slip (sluttseddel) is written: who caught it, what and how much, who bought it, and at what price. The Directorate of Fisheries publishes them as open data.

The problem is the format. The data arrives as one giant file per year, with 133 columns, old municipality numbers and codes nobody can read without a lookup table. Fiskeridata turns that into something you can actually ask questions of, see on a map, and use in your own systems.

[ Overview ]

The whole journey in four steps

From raw government files to an answer on your screen.

  1. 01

    Sources

    Open government registers: the Directorate of Fisheries, the Brønnøysund Register Centre, Statistics Norway and the Mapping Authority.

  2. 02

    Night shift

    Every night a machine fetches new files, cleans them, links them together and builds a brand-new database.

  3. 03

    Finished database

    One read-only database with the totals worked out in advance. It is checked before it is used.

  4. 04

    Use

    A website with maps and reports, an open API and an MCP server for AI assistants.

[ Sources ]

Where the numbers come from

Everything comes from open public sources under the Norwegian Licence for Open Government Data (NLOD). The Directorate of Fisheries is the main source — the rest fill in the picture.

Directorate of FisheriesMain source

The landing slips (the actual sale of fish), the buyer register, the vessel register, fishing permits and quotas, and maps of fishing grounds.

Brønnøysund Register Centre

Company details: names, organisation numbers and accounts for shipowners and buyers.

Statistics Norway (SSB)

Official municipality codes, so old municipality names can be matched to today's.

Norwegian Mapping Authority

Municipality information and addresses, so landing sites land in the right place on the map.

Fiskeridata
One combined, consistent database
[ The night shift ]

What happens every night

The data is written once a day and read the rest of the time. So the whole database is rebuilt every night instead of being patched along the way. That keeps reading fast and safe, and a mistake can never break what already works.

Every night · 05:30 UTC
  1. 01

    Fetch

    The Directorate of Fisheries publishes fresh files early each morning. The machine downloads the years that have changed.

  2. 02

    Clean and check

    Every single line is read and checked. Old files write dates and characters in different ways — everything is converted to one strict format.

  3. 03

    Link together

    Vessels, owners, companies, receiving stations and buyers are linked. Old municipality numbers become today's, and quotas are calculated. The rule is strict: two things are never merged unless it is completely certain.

  4. 04

    Build

    Everything is packed into one finished, read-only database, with totals and overviews worked out in advance. That is why answers come back fast.

  5. 05

    Check

    A series of automatic checks: do the totals add up, is a year missing, has anything gone empty?

    The gate: only good databases get through

    The checks are a gate between building and using. The new database goes live only if everything is green.

    Approved: the new database takes over
    Rejected: yesterday's database stays in place, and nobody notices
  6. 06

    Go live

    The service switches to the new database and runs the heaviest queries once to "warm up". Then the website is told to forget what it remembered from yesterday.

A full rebuild from scratch takes about 15 minutes. If something fails before anything is published, the machine retries after 15 minutes — up to three times, otherwise the next night. The previous approved database is always kept as a fallback.

[ The setup ]

Where it lives

Fiskeridata is split into two services that each do one job. One holds all the data and does the heavy work at night. The other meets the users and remembers answers, so common questions can be answered without asking the database every time.

  1. The data machine

    Railway · Amsterdam
    • The night job

      Fetches, cleans and builds at 05:30 UTC.

    • The database

      One finished, read-only file of about 5 GB.

    • The data API

      Private. Answers only the website, and only with a secret key.

  2. The website

    Vercel · Frankfurt
    • The website

      Maps, reports and profiles for vessels, companies, ports and species.

    • The cache

      Remembers answers until the next night, so common questions are fast.

    • Open API and MCP

      The same data for machines — no key.

  3. The users

    Open to everyone
    • The browser

      You, exploring maps and reports.

    • AI assistants

      Claude and others that support MCP.

    • Developers

      Pulling figures into their own systems via the REST API.

After each nightly build the data machine tells the website: "forget what you remember". That way everyone gets the new figures from the very first question.
The code lives on GitHub, where automatic tests check every change.
[ One question ]

What happens when someone asks?

This is how it goes when an AI assistant uses Fiskeridata. The website takes the same route when it fetches figures for a map or a report.

YouHow much cod was landed in Ålesund last year?
  1. The AI assistantMCP

    The assistant sees it has access to the Fangstdata tools. MCP is a standard "power socket" that lets AI assistants talk to outside services.

  2. The AI assistantThe website

    It picks the "aggreger" (aggregate) tool and fills in: species = cod, place = Ålesund, year = last year.

  3. The websiteThe cache

    The website checks whether it already has the answer. If so, it comes back at once.

  4. The data APIThe database

    If not, it asks the data API, which looks it up in the finished database. Nobody can send free-form SQL — only choices from a fixed menu of safe queries.

  5. The answerYou

    The answer travels back the same way. The assistant replies with the figures — and a link to the same data on the website.

[ Principles ]

Safe choices along the way

Never guess

Vessels and receiving stations are only merged when it is 100% certain. Names, markings and call signs get reused, so a wrong link is worse than a missing one.

Privacy on the server

Private individuals and sole proprietorships that own vessels are shown without name or organisation number. The hiding always happens on the server, never only in the browser.

Honest estimates

For roughly the last 12 months the actual value is hidden in the source. Fiskeridata then shows an estimate (weight × latest known price per kilo) and marks it clearly. The figures are not official statistics.

Every number is traceable

From a total or a point on the map you can drill down to the individual landing slip the numbers come from.

Open to everyone

No key and no login. The limit is 120 requests a minute per IP address, so the service stays fast for everyone.

[ Questions ]

Frequently asked questions about Fiskeridata

What is Fiskeridata?

Fiskeridata (also called Fangstdata) is an open service from Full Stack Consult that makes the Norwegian Directorate of Fisheries' landing slips (sluttsedler) from 2000 up to yesterday searchable. The data is available as a website with maps and reports, as a REST API and as an MCP server for AI assistants.

Where do the numbers come from?

From the Directorate of Fisheries (landing slips, buyer register, vessel register, fishing permits and quotas, map layers), the Brønnøysund Register Centre, Statistics Norway and the Norwegian Mapping Authority. All sources are open data under the Norwegian Licence for Open Government Data (NLOD).

How often is the data updated?

Once a day. Every night the database is rebuilt from the Directorate's latest files, validated, and only put into use when every check is green. Figures for the most recent months may be adjusted slightly afterwards.

Can I use Fiskeridata in Claude or other AI assistants?

Yes. Add https://fiskeridata.fullstackconsult.com/mcp as a custom connector in Claude, or run "claude mcp add --transport http fangstdata https://fiskeridata.fullstackconsult.com/mcp" in Claude Code. The service has 14 tools and needs no key.

What does Fiskeridata cost to use?

Nothing. The website, the REST API and the MCP server are open with no key or login, with a limit of 120 requests per minute per IP address. The figures are not official statistics from the Directorate of Fisheries.

Can Full Stack Consult build something similar for my business?

Yes. The same setup — automatic data collection, cleaning, a trustworthy database, and a website or AI access on top — can be built for other open or internal data sources. Call +47 986 00 059 or email tobias@fullstackconsult.com.

[ Contact ]

Got data that should be just as easy to query?

The same setup — automatic collection, cleaning, a trustworthy database, and a website or AI access on top — can be built for other data sources. Get in touch for a no-obligation chat.

Call+47 986 00 059LinkedInTobias Remme JensenEmailtobias@fullstackconsult.com

Full Stack Consult AS · Org.nr. 931 825 917 · Ålesund