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.
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.
From raw government files to an answer on your screen.
Open government registers: the Directorate of Fisheries, the Brønnøysund Register Centre, Statistics Norway and the Mapping Authority.
Every night a machine fetches new files, cleans them, links them together and builds a brand-new database.
One read-only database with the totals worked out in advance. It is checked before it is used.
A website with maps and reports, an open API and an MCP server for AI assistants.
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.
The landing slips (the actual sale of fish), the buyer register, the vessel register, fishing permits and quotas, and maps of fishing grounds.
Company details: names, organisation numbers and accounts for shipowners and buyers.
Official municipality codes, so old municipality names can be matched to today's.
Municipality information and addresses, so landing sites land in the right place on the map.
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.
The Directorate of Fisheries publishes fresh files early each morning. The machine downloads the years that have changed.
Every single line is read and checked. Old files write dates and characters in different ways — everything is converted to one strict format.
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.
Everything is packed into one finished, read-only database, with totals and overviews worked out in advance. That is why answers come back fast.
A series of automatic checks: do the totals add up, is a year missing, has anything gone empty?
The checks are a gate between building and using. The new database goes live only if everything is green.
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.
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.
Fetches, cleans and builds at 05:30 UTC.
One finished, read-only file of about 5 GB.
Private. Answers only the website, and only with a secret key.
Maps, reports and profiles for vessels, companies, ports and species.
Remembers answers until the next night, so common questions are fast.
The same data for machines — no key.
You, exploring maps and reports.
Claude and others that support MCP.
Pulling figures into their own systems via the REST API.
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.
The assistant sees it has access to the Fangstdata tools. MCP is a standard "power socket" that lets AI assistants talk to outside services.
It picks the "aggreger" (aggregate) tool and fills in: species = cod, place = Ålesund, year = last year.
The website checks whether it already has the answer. If so, it comes back at once.
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.
The answer travels back the same way. The assistant replies with the figures — and a link to the same data on the website.
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.
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.
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.
From a total or a point on the map you can drill down to the individual landing slip the numbers come from.
No key and no login. The limit is 120 requests a minute per IP address, so the service stays fast for everyone.
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.
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).
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.
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.
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.
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.
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.
Full Stack Consult AS · Org.nr. 931 825 917 · Ålesund