Gå til innhold

Finn verk

Tre måter å finne verk på med en pub-nøkkel: slå opp ett verk, bla i hele samlingen, og søke på ord.

Når bør du bruke hva?

Du vil … Bruk
hente ett bestemt verk GET /api/v1/objects/{nmId}
gå gjennom verk side for side GET /api/v1/objects (bla)
finne verk der et ord står i tittel, kunstnernavn, betegnelse, teknikk eller emneord GET /api/v1/objects/text-search
finne verk som ligner en beskrivelse («hest på beite») Semantisk søk (ext)

Tenk på tekstsøket som et søk i katalogen: det finner ordene som står der. Det semantiske søket finner bilder som ligner beskrivelsen, også når ordene ikke står i katalogen.

Slå opp ett verk

GET https://api.nasjonalmuseet.no/api/v1/objects/NG.M.00939

nmId er ikke følsom for store og små bokstaver: ng.m.00939 gir samme verk. Bruk nmId fra svaret videre. 404 betyr at verket ikke finnes eller ikke er publisert.

Bla i samlingen

GET /api/v1/objects gir verkene side for side, med page og resultsPerPage (opptil 200, standard 50).

import os import requests

API = "https://api.nasjonalmuseet.no/api/v1" headers = {"X-API-Key": os.environ["NM_API_KEY"]}

side = 1 while side <= 3: # i praksis: til data er tom r = requests.get(f"{API}/objects", params={"page": side, "resultsPerPage": 50, "lang": "no"}, headers=headers, timeout=60) r.raise_for_status() svar = r.json() if not svar["data"]: break print(f"side {side}: {len(svar['data'])} verk av {svar['totalResults']}") side += 1

Svaret har totalResults (antall publiserte verk) og data. Fortsett til data er tom.

Hele datasettet

API-et er laget for oppslag og søk, ikke for å laste ned hele samlingen. Trenger du hele datasettet, ta kontakt på api@nasjonalmuseet.no, så finner vi en bedre løsning.

Søk på ord

GET /api/v1/objects/text-search?q=… søker i titler, kunstnernavn, inventarnummer, betegnelse, objekttype, emneord, materialer, teknikker og datering. Søket tåler skrivefeil og finner ordstarter («vinterland» finner «vinterlandskap»). Treffene er sortert etter relevans, 20 per side som standard (resultsPerPage opptil 100).

curl -s -G -H "X-API-Key: $NM_API_KEY" \ "https://api.nasjonalmuseet.no/api/v1/objects/text-search" \ --data-urlencode "q=vinterlandskap" -d resultsPerPage=5 -d lang=no

import os import requests

API = "https://api.nasjonalmuseet.no/api/v1" headers = {"X-API-Key": os.environ["NM_API_KEY"]}

r = requests.get(f"{API}/objects/text-search", params={"q": "vinterlandskap", "resultsPerPage": 5, "lang": "no"}, headers=headers, timeout=30) r.raise_for_status() for verk in r.json()["data"]: print(verk["nmId"], verk["mainTitle"])

const API = "https://api.nasjonalmuseet.no/api/v1"; const headers = { "X-API-Key": process.env.NM_API_KEY };

const url = new URL(${API}/objects/text-search); url.search = new URLSearchParams({ q: "vinterlandskap", resultsPerPage: 5, lang: "no" }); const r = await fetch(url, { headers }); if (!r.ok) throw new Error(HTTP ${r.status}); for (const verk of (await r.json()).data) console.log(verk.nmId, verk.mainTitle);

Vanlige feil

  • Sammensatte ord deles ikke. «fløter» finner ikke «Tømmerfløtere». Søk på hele ordet, eller på starten («tømmerfløt»).
  • Tekstsøket finner ikke motiver som ikke står i katalogen. Et maleri av en hest uten «hest» i tittel eller emneord, finnes med semantisk søk, ikke med tekstsøk.

Se også