Match tenants to listings in 80 ms.
Bofrid uses /v1/persons/lookup to fill the household pane on every application, then /v1/geo/postal-codes/:code to compute commute polygons against the listing.
customer 001 · bofrid · rental marketplace
A unified API for Swedish business and civil-registry data.
Mantal is the single interface over SPAR, SCB, Lantmäteriet, and the rest of the country’s primary registries. One bearer token, one bill, one URL — no SOAP, no five-figure minimums, no sales call.
001 — Persons
8.0M
civil registry
002 — Companies
1.4M
indexed
003 — Localities
77,657
municipalities + districts
004 — Postal codes
93,603
with admin context
on which registers we wrap.
Each source sits behind the same auth, schema, and rate-limiting layer. Today, persons and geography are live. The rest is on the roadmap, in the order our customers ask for it.
| № | Source | Status | Endpoints |
|---|---|---|---|
| 001 | SPARStatens personadressregister · Skatteverket. | live · 8.0M persons | /v1/persons/* |
| 002 | SCB + GeoNamesAdministrative geography, postal codes, localities. | live · 93,603 codes | /v1/geo/* |
| 003 | LantmäterietProperty + building polygons, vector tiles. | live · private beta | /v1/tiles/* |
| 004 | BolagsverketCompany registry, beneficial owners. | planned · Q3 2026 | — |
| 005 | Eniro · HittaTelephone, contact, household lookup. | planned | — |
| 006 | DomstolsverketCourt records, judgments, registers. | planned | — |
on the shape of the request and the shape of the answer.
The shape is consistent across every source. Errors are typed. Idempotency is implicit. The OpenAPI spec at mantal.eu/openapi.json is the source of truth — generate your client, or copy the curl into your terminal and ship.
// Look up a person by personnummer curl -X POST https://mantal.eu/v1/persons/lookup \ -H "Authorization: Bearer pk_live_…" \ -H "Content-Type: application/json" \ -d '{"pnr":"195704133106","shape":"flat"}' // → 200 OK { "pnr": "195704133106", "name": "Christina Birgitta Ulrika Thomeaus", "address": "Gatan142 8, 11146 Stockholm", "municipality": "Stockholm", "county": "Stockholms län" }
shape=rich returns the full Pelias-style context block — country, region, locality, borough. shape=flat returns a single line ready for UI rendering.
A name+address search costs one billed call and returns a searchId. Re-fetching that id for 24 hours doesn’t bill again.
pk_test_… hits SPAR’s kundtestmiljö with the same schema, against anonymised data. No bill, no rate cap.
on what we charge, by the call.
SPAR has volume tiers that reset every day, per assignment. We pass them through. The invoice comes monthly with one row per billed call — source, assignment, tier, price. The same number you would compute yourself.
First call of the day · per persnr lookup
40.00SEK
Then it drops, fast. By the 200th call the marginal price is 0.10 SEK — a 400× difference. We bill the SPAR prislista verbatim. Hit /v1/admin/billing any time to reconcile.
§ 03·B — All tiers, persnr lookup (per day)
| Calls per day | Price each |
|---|---|
| 001 — 005 | 40.00 SEK |
| 006 — 009 | 5.00 SEK |
| 010 — 019 | 1.00 SEK |
| 020 — 049 | 0.30 SEK |
| 050 — 099 | 0.20 SEK |
| 100 — 199 | 0.15 SEK |
| 200+ | 0.10 SEK |
on the obligations we’ve written down.
No US clouds. No third-party caches. The mTLS handshake stays on our side of the wire. Personnummer payloads expire from disk after 24 hours.
§ 04·A — Residency
All traffic terminates on OVH in Strasbourg. Postgres on Hetzner. No cross-border processors, no US-side cache layer.
§ 04·B — Retention
Every personnummer payload is garbage-collected hourly. No long-term store of civil-registry rows. No analytics replication.
§ 04·C — Authentication
DEVDASH AB’s organisation certificate, rotated every 24 months. Audited per SPAR’s anslutningsvillkor. Health at /health.
on what teams actually build with it.
Mantal hides the SOAP, the certificate rotation, the Swedish-enum quirks, and the per-source rate ceilings. You write the part of the product that matters.
Bofrid uses /v1/persons/lookup to fill the household pane on every application, then /v1/geo/postal-codes/:code to compute commute polygons against the listing.
customer 001 · bofrid · rental marketplace
One PNR turns into a verified residential address, county, municipality, and household composition. Stop asking users to type what the registry already knows.
KYC · onboarding · identity
SCB’s tätorter, Lantmäteriet’s property polygons, postnummer streets, regions, RegSO — typo-tolerant search, one schema, one billing row per query.
municipal · public-sector vendors