Graveinfo.Kobler gravere og infrastruktureiere

Slå opp ledningseiere i din kommune

Graveinfo har et register over infrastruktureiere og hvilke kommuner de er aktive i. Denne guiden viser hvordan du bruker coverage-API og organisasjonssøk for å finne de rette eierne og forstå hvordan de håndterer gravemeldinger.

Hva du trenger

  • En API-nøkkel med scope organizations:read.
  • Kommunenummeret (4 siffer) for kommunen du vil undersøke.

Finner du ikke kommunenummeret ditt? Se Kartverkets liste eller søk på kommunenavnet.

1

Hent alle eiere i en kommune med GET /coverage

Endepunktet returnerer alle infrastruktureiere registrert for den oppgitte kommunen, med kontaktinfo og infrastrukturtyper:

bash
# Alle infrastruktureiere i Oslo (0301)
curl "https://graveinfo.no/api/v1/coverage?municipality=0301" \
  -H "Authorization: Bearer $GRAVEINFO_API_KEY"

# Filtrer på infrastrukturtype
curl "https://graveinfo.no/api/v1/coverage?municipality=0301&type=vann_avlop" \
  -H "Authorization: Bearer $GRAVEINFO_API_KEY"
json
{
  "municipality": { "number": "0301", "name": "Oslo" },
  "owners": [
    {
      "id": "org_...",
      "name": "Oslo VAV",
      "orgnr": "970205420",
      "infrastructureTypes": ["vann_avlop"],
      "gravemottak": "api",
      "email": "gravemottak@oslo.kommune.no"
    },
    {
      "id": "org_...",
      "name": "Hafslund Nett AS",
      "orgnr": "980489698",
      "infrastructureTypes": ["lavspenning", "hoyspenning"],
      "gravemottak": "api",
      "email": "gravemottak@hafslundnett.no"
    }
  ],
  "total": 2
}
2

Søk etter spesifikke eiere med GET /organizations/search

Bruk organisasjonssøket når du kjenner navn eller organisasjonsnummer, eller vil kombinere fritekst med kommunefilter:

bash
# Søk etter infrastruktureiere med navn i Oslo
curl "https://graveinfo.no/api/v1/organizations/search?q=vann&type=owner&municipality=0301" \
  -H "Authorization: Bearer $GRAVEINFO_API_KEY"

# Oppslag på organisasjonsnummer
curl "https://graveinfo.no/api/v1/organizations/search?orgnr=970205420" \
  -H "Authorization: Bearer $GRAVEINFO_API_KEY"
3

Forstå gravemottak-feltet

Feltet gravemottak forteller deg om eieren er Graveinfo-kunde og hvordan de håndterer innkommende gravemeldinger. Det er viktig for å forstå om automatisering er mulig:

typescript
// gravemottak-feltet forteller deg hvordan eieren håndterer gravemeldinger:
//
//   "api"   → Eieren er Graveinfo-kunde og håndteres automatisk via plattformen.
//             Gravemeldinger sendes digitalt og eieren svarer via Graveinfo.
//
//   "email" → Eieren mottar varsel på e-post og svarer manuelt.
//
//   "none"  → Eieren er registrert men har ikke konfigurert gravemottak.
//             Graveinfo håndterer kontakten på vegne av eieren.

const coverage = await getCoverage('0301');

for (const owner of coverage.owners) {
  if (owner.gravemottak === 'api') {
    console.log(`${owner.name}: digitalt mottak via Graveinfo`);
  } else if (owner.gravemottak === 'email') {
    console.log(`${owner.name}: e-postvarsel til ${owner.email}`);
  }
}
4

Bygg en kommunematrise

Vil du ha oversikt over eiere på tvers av kommuner? Loop over kommunenumrene:

typescript
// Bygg en fullstendig kommunematrise
const municipalities = [
  { number: '0301', name: 'Oslo' },
  { number: '4601', name: 'Bergen' },
  { number: '1201', name: 'Stavanger' },
  { number: '5001', name: 'Trondheim' },
];

const matrix: Record<string, string[]> = {};

for (const mun of municipalities) {
  const coverage = await getCoverage(mun.number);
  matrix[mun.name] = coverage.owners.map((o) => o.name);
  console.log(`${mun.name}: ${coverage.total} eiere`);
}

// Finn eiere som er i alle kommuner
const allOwnerNames = Object.values(matrix).flat();
const ownerCounts = allOwnerNames.reduce((acc, name) => {
  acc[name] = (acc[name] ?? 0) + 1;
  return acc;
}, {} as Record<string, number>);

const nationalOwners = Object.entries(ownerCounts)
  .filter(([, count]) => count === municipalities.length)
  .map(([name]) => name);

console.log('Eiere i alle kommuner:', nationalOwners);
5

Komplett Python-eksempel

python
import os
import requests

GRAVEINFO_API_KEY = os.environ["GRAVEINFO_API_KEY"]
BASE_URL = "https://graveinfo.no/api/v1"


def get_coverage(municipality_number: str, infra_type: str | None = None) -> dict:
    """Hent infrastruktureiere for en gitt kommune."""
    params: dict = {"municipality": municipality_number}
    if infra_type:
        params["type"] = infra_type
    response = requests.get(
        f"{BASE_URL}/coverage",
        params=params,
        headers={"Authorization": f"Bearer {GRAVEINFO_API_KEY}"},
        timeout=10,
    )
    response.raise_for_status()
    return response.json()


def search_organizations(query: str = "", orgnr: str = "", **kwargs) -> dict:
    """Søk etter organisasjoner."""
    params: dict = {**kwargs}
    if query:
        params["q"] = query
    if orgnr:
        params["orgnr"] = orgnr
    response = requests.get(
        f"{BASE_URL}/organizations/search",
        params=params,
        headers={"Authorization": f"Bearer {GRAVEINFO_API_KEY}"},
        timeout=10,
    )
    response.raise_for_status()
    return response.json()


# Eksempel: hent alle vann/avløp-eiere i Bergen
coverage = get_coverage("4601", infra_type="vann_avlop")
print(f"Vann/avløp-eiere i {coverage['municipality']['name']}:")
for owner in coverage["owners"]:
    print(f"  {owner['name']} ({owner['orgnr']}) - {owner['gravemottak']}")


# Eksempel: finn Lyse Energi via organisasjonsnummer
result = search_organizations(orgnr="982257660")
if result["data"]:
    org = result["data"][0]
    print(f"Fant: {org['name']} - gravemottak: {org['gravemottak']}")

Infrastrukturtyper

Bruk disse verdiene i type-parameteren på /coverage:

telekommunikasjonvann_avlophoyspenninglavspenningveiarbeidgrunnarbeidfjernvarmeannet

Klar til å sende gravemeldinger basert på denne informasjonen?

Guide: Send gravemelding →