Match tenants to listings in 80 ms.
A rental marketplace 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 · rental marketplace
A unified API for Swedish business and civil-registry data.
Mantal is the single interface over the country’s primary public registries — persons, geography, real estate, and more. One bearer token, one bill, one URL — no legacy protocols, 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 what kind of data sits behind the API.
One auth, schema, and rate-limit layer across all of them. Persons and geography are live; the rest ships in demand order.
| № | Dataset | Status | Endpoints |
|---|---|---|---|
| 001 | PersonsName, address, household, residency. | live | /v1/persons/* |
| 002 | GeographyPostal codes, municipalities, counties, localities. | live | /v1/geo/* |
| 003 | Real estateProperty + building polygons, vector tiles. | live · private beta | /v1/tiles/* |
| 004 | CompaniesRegistry, beneficial owners, filings. | planned | — |
| 005 | ContactTelephone, household, contact lookup. | planned | — |
| 006 | Court recordsJudgments, registers, judicial filings. | 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 a test environment with the same schema, against anonymised data. No bill, no rate cap.
on what we charge, by the call.
The upstream registry has volume tiers that reset every day, per assignment. We pass them through. The invoice comes monthly with one row per billed call — dataset, 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 pass through the upstream price list 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 in the EU. 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
Organisation certificates terminate on our side of the wire and are rotated on the registry’s schedule. Health at /health.
on what teams actually build with it.
Mantal hides the legacy protocols, certificate rotation, and Swedish-enum quirks of each upstream. You write the part of the product that matters.
A rental marketplace 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 · 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
Localities, property polygons, postal codes, streets, counties, neighbourhoods — typo-tolerant search, one schema, one billing row per query.
municipal · public-sector vendors