Persondata — Sök på ID samt namn+adress
Slå upp en person i SPAR via personnummer eller via namn och adress.
Persondata är ett gränssnitt mot SPAR (Statens personadressregister). Tjänsten exponerar två söklägen, båda i XML- och JSON-variant.
I produktion används ert eget SPAR-certifikat
Persondata fungerar i både sandbox och produktion. I sandbox går uppslagen mot Skatteverkets testmiljö för SPAR med ett testcertifikat som du lägger till genom att klicka på Aktivera SPAR i sandbox i dashboarden (Tjänster → Personadress). I produktion använder varje organisation sitt eget SPAR-avtal med Skatteverket: ladda upp certifikatet tillsammans med Skatteverkets tre nummer (kundnummer leveransmottagare, kundnummer slutkund och uppdragsnummer) i dashboarden under Certifikat → SPAR. Inget avtal än? Ni kan köpa Cerrtifys hjälp med ansökan när ni väljer plan. Tills certifikatet är uppladdat svarar produktionsanrop 403 spar_not_configured. Ett produktionsanrop måste också innehålla slutAnvandarId, er identifierare för slutanvändaren som uppslaget görs åt.
Sök på personnummer
curl -X POST https://sandbox-api.cerrtify.com/service/persondata/search/id.json \
-H "X-API-Key: cert_..." \
-H "Content-Type: application/json" \
-d '{
"idNummer": "195704133106",
"slutAnvandarId": "agent-42"
}'idNummer är ett 12-siffrigt personnummer eller samordningsnummer (ÅÅÅÅMMDDNNNN; ett bindestreck före de fyra sista siffrorna går bra). Formatet kontrolleras innan sökningen skickas till SPAR: allt annat än 12 siffror ger 400 med felkoden invalid_idnummer. Numret i exemplet är en testperson i SPAR:s testmiljö. slutAnvandarId är din interna identifierare för slutanvändaren — SPAR kräver den för sina revisionsloggar.
Sök på namn + adress
När du inte har ett personnummer:
curl -X POST https://sandbox-api.cerrtify.com/service/persondata/search/name-address.json \
-H "X-API-Key: cert_..." \
-H "Content-Type: application/json" \
-d '{
"fornamn": "Anna",
"mellanEfternamn": "Andersson",
"utdelningsadress": "Storgatan 1",
"postort": "Stockholm",
"postnr": "11122",
"slutAnvandarId": "agent-42"
}'Välj delar av svaret
JSON-varianterna tar fältet delar: en lista med nummer som anger vilka delar av varje personpost du vill ha tillbaka. Be bara om det du behöver.
curl -X POST https://sandbox-api.cerrtify.com/service/persondata/search/id.json \
-H "X-API-Key: cert_..." \
-H "Content-Type: application/json" \
-d '{
"idNummer": "195704133106",
"slutAnvandarId": "agent-42",
"delar": [1, 4]
}'| Nr | Del | Innehåll |
|---|---|---|
0 | Alla | Allt som SPAR lämnar |
1 | Namn | Förnamn, tilltalsnamn, mellannamn, efternamn, aviseringsnamn |
2 | Persondetaljer, Utvandrad | Födelsedatum, kön, födelselän och församling, medborgarskap, avregistrering och dödsdatum, hänvisningar, uppgifter om samordningsnummer, utvandring |
3 | Folkbokforing | Län, kommun, distrikt, hemvist, folkbokföringsdatum |
4 | Folkbokforingsadress | c/o, utdelningsadress 1 och 2, postnummer, postort |
5 | SarskildPostadress | Särskild postadress, svensk eller internationell |
6 | Utlandsadress | Adress i utlandet |
7 | Kontaktadress | Kontaktadress, svensk eller internationell |
8 | Relation | Vårdnadshavare och make, maka eller registrerad partner |
9 | Fastighet | Fastighetsbeteckning, andel och taxeringsvärde |
10 | SummeradInkomst, InkomstAr | Summerad inkomst och inkomstår |
- Utan
delarinnehåller svaret del 1–4. PersonId,Sekretessmarkering,SkyddadFolkbokforingochSenasteAndringSPARföljer alltid med.- Vilka uppgifter SPAR lämnar ut över huvud taget beror på vad Skatteverket har godkänt för er organisation. En del som ni inte har rätt till saknas i svaret, även om ni ber om den.
- Ett okänt nummer ger
400med felkodeninvalid_delar. XML-varianterna skickar alltid SPAR:s hela svar och tar inte emotdelar.
Svaret för exemplet ovan:
{
"Posts": [
{
"PersonId": { "IdNummer": "195704133106", "Typ": "PERSONNUMMER" },
"Sekretessmarkering": "NEJ",
"SkyddadFolkbokforing": "NEJ",
"SenasteAndringSPAR": "2021-09-25",
"Namn": [
{
"DatumFrom": "2021-09-25",
"DatumTill": "9999-12-31",
"Aviseringsnamn": "Efternamn3542, Christina Birgitta",
"Fornamn": "Christina Birgitta Ulrika",
"Tilltalsnamn": "20",
"Mellannamn": "Thomeaus",
"Efternamn": "Efternamn3542"
}
],
"Folkbokforingsadress": [
{
"SvenskAdress": {
"DatumFrom": "2021-09-25",
"DatumTill": "9999-12-31",
"Utdelningsadress2": "Gatan142 8",
"PostNr": "11146",
"Postort": "STOCKHOLM"
}
}
]
}
],
"UUID": "27462246-5b1a-4379-8faf-09aba4cba964"
}En del som SPAR upprepar är en lista. Den uppgift som gäller nu kommer först och har DatumTill 9999-12-31; äldre uppgifter följer efter. Tomma fält utelämnas. Avvisar SPAR frågan innehåller svaret Undantag med Kod och Beskrivning i stället för poster, och ger en namnsökning för många träffar innehåller det OverstigerMaxAntalSvarsposter.
Testpersoner i sandbox
I sandbox går sökningarna mot Skatteverkets testmiljö för SPAR. Den innehåller påhittade testpersoner, och Skatteverket publicerar listan i dokumentet Testfall för personsökning i kundtestmiljön (version 9.1, 2025-09-09) på SPAR:s sida om Personsök. Tabellen visar vad varje testperson är till för och vilken del (delar) uppgiften hamnar i. Ett streck betyder att uppgiften alltid följer med.
idNummer | Visar | Del |
|---|---|---|
195704133106 | Förnamn, mellannamn, efternamn, aviseringsnamn, tilltalsnamn | 1 |
198007199295 | Folkbokföringsadress med historik | 4 |
198001139297 | Lägenhetsnummer i adressen | 4 |
197901249297 | Särskild postadress i Sverige | 5 |
194812161596 | Särskild postadress i utlandet | 5 |
198307259294 | Utvandrad person med utlandsadress i Sverige | 6 |
195309112489 | Utvandrad person med utlandsadress i utlandet | 6 |
199903672385 | Samordningsnummer med styrkt identitet, kontaktadress i Sverige, hänvisningar | 2, 7 |
199201782399 | Samordningsnummer med sannolik identitet, kontaktadress i utlandet | 2, 7 |
199012652385 | Samordningsnummer där identitetsnivå inte är tillämplig | 2 |
197605832380 | Samordningsnummer som vilandeförklarats för att giltighetstiden löpt ut | 2 |
200301702395 | Samordningsnummer som vilandeförklarats av annan orsak, med hänvisning | 2 |
198112752384 | Samordningsnummer, avliden | 2 |
196305782390 | Samordningsnummer med sekretessmarkering | – |
197110021834 | Hänvisning från ett gammalt nummer | 2 |
197807202390 | Flera hänvisningar | 2 |
199101112390 | Avregistrerad på grund av identitetsbyte, med hänvisning till ny identitet | 2 |
198604069883 | Avregistrerad, avliden | 2 |
197712272389 | Avregistrerad, utvandrad; förlängd gallringstid | 2 |
197908032399 | Avregistrerad, utvandrad, gallrad och återinläst | 2 |
198203249274 | Sekretessmarkering | – |
198103269299 | Sekretessmarkering, avliden | 2 |
198106039228 | Skyddad folkbokföring | – |
198308299299 | Immunitetsnummer | – |
198404112388 | Immunitetsnummer, avliden | 2 |
198207052385 | Immunitetsnummer, avregistrerat som felaktigt registrerat | 2 |
198501182391 | Immunitetsnummer, ersatt, med hänvisning till ny identitet | 2 |
201607052394 | Två vårdnadshavare | 8 |
198003119255 | Registrerad partner | 8 |
199401272381 | Tidigare registrerad partner | 8 |
- Relationerna lämnas enligt Skatteverkets testfall bara ut när sökningen görs med behörighet för relationer.
- Testfallen innehåller ingen person med fastighet eller inkomst, så räkna med att del 9 och 10 är tomma i sandbox.
- Listan har också testfall för namnsökning (kapitel 4) och personer med ovanliga namn och adresser (kapitel 5).
Så ser du vilka delar som kommer tillbaka för en testperson. Exemplen använder verktyget jq för att skriva ut fältnamnen i svaret:
KEY="cert_..." # din sandbox-nyckel
for d in "[0]" "[1]" "[2]" "[3]" "[4]" "[5]" "[6]" "[7]" "[8]" "[9]" "[10]" "[1,4]" "[2,8]"; do
printf '%-8s -> ' "$d"
curl -s -X POST https://sandbox-api.cerrtify.com/service/persondata/search/id.json \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d "{\"idNummer\":\"195704133106\",\"delar\":$d}" \
| jq -r '.error // ((.Posts[0] // {}) | keys_unsorted | join(", "))'
doneOch så provar du flera testpersoner med alla delar:
for id in 198007199295 197901249297 195309112489 199903672385 198604069883 201607052394; do
printf '%s -> ' "$id"
curl -s -X POST https://sandbox-api.cerrtify.com/service/persondata/search/id.json \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d "{\"idNummer\":\"$id\",\"delar\":[0]}" \
| jq -r '.error // ((.Posts[0] // {}) | keys_unsorted | join(", "))'
doneXML kontra JSON
.json-varianterna parsar SPAR:s XML-svar till en stabil JSON-struktur. Varianterna utan .json skickar SPAR:s råa XML vidare oförändrad — användbart om du behöver exakt fälttrohet av regelefterlevnadsskäl.
När SPAR inte är konfigurerat
- Produktion utan uppladdat certifikat:
403 spar_not_configured. Ladda upp ert SPAR-certifikat och Skatteverkets nummer i dashboarden (se ovan). - Sandbox: anrop med en sandbox-nyckel går mot Skatteverkets testmiljö med plattformens testcertifikat; du behöver inget eget. Klickar du på Aktivera SPAR i sandbox i dashboarden läggs testcertifikatet även till på er organisation, och testformuläret där låses upp.
503 service_unavailablebetyder att SPAR-klienten inte kunde startas hos oss (till exempel ett certifikat som inte går att läsa). Kontrollera det uppladdade certifikatet och lösenfrasen, och kontakta supporten om felet kvarstår.