Canonical
Mattilsynet
Norwegian food-safety inspection ratings for restaurants, bars, and other food establishments.
Source: Mattilsynet (Smilefjes) Data: Food-safety inspection ratings — happy/neutral/sad face grade + date License: NLOD 2.0 Attribution required: Yes — "Mattilsynet" Link: https://www.mattilsynet.no/mat/ekstra/smilefjes/ Update cadence: Weekly full refresh (Monday 05:00) from the public CSV dump
What it is
Mattilsynet inspects food establishments — restaurants, bars, cafés, canteens, takeaways, food shops — and publishes the result as a Smilefjes rating: a happy, neutral, or sad face based on compliance with food-safety regulation. Each inspection is one visit on one date to one venue.
Orakel ingests the full CSV dump once a week and upserts inspection records. Each record links to a company by orgNumber, so an establishment's inspection history sits alongside its firmographics.
Fields provided
| Field | Type | Notes |
|---|---|---|
tilsynId |
string | Mattilsynet's inspection ID — unique per visit |
orgNumber |
string (9 digits) | Norwegian organisation number of the inspected entity |
name |
string | Venue name as filed by Mattilsynet |
address / postnr / poststed |
string | Venue address |
date |
date | Inspection date |
totalRating |
int | Overall Smilefjes score |
rating1 / rating2 / rating3 / rating4 |
int | Per-theme sub-scores (hygiene, handling, labelling, traceability — theme labels live in the source CSV) |
inspectionType |
int | Visit type code from Mattilsynet |
syncedAt |
datetime | Last time Orakel refreshed this record |
Endpoints that surface this data
GET /api/inspections— search inspections; filter byorgNumber,postnr, rating range, or date range. Cursor-paginated.
Limitations
- Only covers establishments that have been inspected. Companies in non-food sectors are absent by design; food companies inspected long ago may carry stale ratings until Mattilsynet re-visits.
- Rating is per-visit, not per-company. A venue can have multiple inspections over time — aggregate across records if you want the latest.
- Historical depth is whatever Mattilsynet publishes in the current CSV — older records may roll off upstream.
Gotchas
orgNumberpoints to the entity that was inspected, which is sometimes a sub-unit (anunderenhetwith its own org number) rather than the parent company. If a search-by-orgNumber returns nothing, check sub-units under the parent.- Theme labels (
tema1_no…tema4_noin the upstream CSV) are not stored in theInspectionrow — only the numeric ratings are. The per-theme meaning follows Mattilsynet's published scheme. totalRatingis stored as an integer code, not a percentage. Refer to Mattilsynet's Smilefjes documentation for the rating-code key.