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å
- Felt på verket: hva hvert felt betyr
- Dokumentasjon: alle parametre