# Hämta bolag

Bolagsprofil: namn, form, status, säte och bransch. Med detail=full även adresser, F-skatt, moms, verksamhet, tidigare namn och aktiekapital.

Källa: https://getapi.gradientvibe.se/docs/api/bolag

```http
GET /api/v1/companies/{org_number}
```

| Operation | Scope | Pris per uppslag |
| --- | --- | --- |
| `get_company` (bolag, kort profil) | `companies:read` | 0,05 kr |
| `get_company_full` (bolag, hela profilen (detail=full)) | `companies:read` | 0,10 kr |

## Parametrar

| Namn | Var | Typ | Standard | Beskrivning |
| --- | --- | --- | --- | --- |
| `org_number` (krävs) | path | string | – | Organisationsnummer, tio siffror med eller utan bindestreck (`569900-0013` eller `5699000013`). Tolv siffror med sekel går också. |
| `detail` | query | "concise" \| "full" | `concise` | `concise` ger en kort profil (cirka 300 tokens). `full` ger hela profilen och kostar mer. |

Headers: `Authorization: Bearer …` (krävs) och `Idempotency-Key` (valfri).

## Exempel

### Kort profil

curl:

```bash
curl -s "https://getapi.gradientvibe.se/api/v1/companies/569900-0013" \
  -H "Authorization: Bearer $GETBOLAG_KEY"
```

JavaScript:

```js
const res = await fetch('https://getapi.gradientvibe.se/api/v1/companies/569900-0013', {
  headers: { Authorization: `Bearer ${process.env.GETBOLAG_KEY}` },
})
const body = await res.json()
if (body.status !== 'ok') {
  throw new Error(`${body.error.code}: ${body.error.message}`)
}
console.log(body.data, body.meta.attribution)
```

Python:

```python
import os
import requests

res = requests.get(
    "https://getapi.gradientvibe.se/api/v1/companies/569900-0013",
    headers={"Authorization": f"Bearer {os.environ['GETBOLAG_KEY']}"},
    timeout=10,
)
body = res.json()
if body["status"] != "ok":
    raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
print(body["data"], body["meta"]["attribution"])
```

Svar från sandlådan (HTTP 200):

```json
{
  "status": "ok",
  "data": {
    "org_number": "569900-0013",
    "name": "Exempelbolaget i Norrland AB",
    "legal_form": {
      "code": "AB",
      "text": "Aktiebolag"
    },
    "is_sole_trader": false,
    "status": {
      "active": true,
      "code": 100,
      "text": "Aktiv",
      "detailed": "Aktiv",
      "date": null
    },
    "registered_date": "2015-03-10",
    "deregistered_date": null,
    "dissolved_date": null,
    "seat": {
      "municipality": "Umeå",
      "region": "Västerbottens län"
    },
    "industry": {
      "sni_code": "62010",
      "text": "Dataprogrammering"
    }
  },
  "meta": {
    "request_id": "ad0a5836-28dc-4600-b112-ddf4808223c9",
    "source": [
      "sandbox"
    ],
    "attribution": [
      {
        "source": "getbolag-sandbox",
        "supplier": "getBolag",
        "notice": "Påhittad testdata. Inga riktiga bolag eller personer. Live-data levereras av Creditsafe i Sverige AB."
      }
    ],
    "retrieved_at": "2026-10-27T09:47:53.724Z",
    "data_updated_at": "2026-10-26T06:00:00Z",
    "cost_sek": 0,
    "environment": "test",
    "database": "getBolag (getbolag.se)",
    "publisher": "getBolag, ett varumärke i Bolagskällan AB (559555-5946)",
    "coverage": {
      "company": "available"
    }
  }
}
```

### Hela profilen

```bash
curl -s "https://getapi.gradientvibe.se/api/v1/companies/569900-0013?detail=full" \
  -H "Authorization: Bearer $GETBOLAG_KEY"
```

Svar från sandlådan (HTTP 200):

```json
{
  "status": "ok",
  "data": {
    "org_number": "569900-0013",
    "name": "Exempelbolaget i Norrland AB",
    "legal_form": {
      "code": "AB",
      "text": "Aktiebolag"
    },
    "is_sole_trader": false,
    "status": {
      "active": true,
      "code": 100,
      "text": "Aktiv",
      "detailed": "Aktiv",
      "date": null
    },
    "registered_date": "2015-03-10",
    "deregistered_date": null,
    "dissolved_date": null,
    "seat": {
      "municipality": "Umeå",
      "region": "Västerbottens län"
    },
    "industry": {
      "sni_code": "62010",
      "text": "Dataprogrammering"
    },
    "formed_date": "2015-03-02",
    "f_tax": {
      "registered": true,
      "start_date": "2015-04-01",
      "end_date": null
    },
    "vat": {
      "registered": true,
      "start_date": "2015-04-01",
      "end_date": null
    },
    "phone": "08-000 00 00",
    "workplaces": 1,
    "employees_interval": "10 - 19 anställda",
    "turnover_interval": "10 000 - 19 999 tkr",
    "business_activity": "Bolaget ska utveckla och sälja programvara samt bedriva därmed förenlig verksamhet.",
    "addresses": [
      {
        "type": "postal",
        "co": null,
        "street": "Testvägen 1",
        "zipcode": "90000",
        "town": "UMEÅ",
        "country": "SE",
        "current": true
      },
      {
        "type": "visiting",
        "co": null,
        "street": "Exempelgatan 2",
        "zipcode": "90001",
        "town": "UMEÅ",
        "country": "SE",
        "current": true
      }
    ],
    "previous_names": [
      {
        "date": "2019-06-01",
        "old_name": "Exempelbolaget AB",
        "new_name": "Exempelbolaget i Norrland AB"
      }
    ],
    "share_capital": {
      "share_capital": 50000,
      "number_of_shares": 500
    }
  },
  "meta": {
    "request_id": "de568741-f2d0-4fd1-9b4e-63d4650f8409",
    "source": [
      "sandbox"
    ],
    "attribution": [
      {
        "source": "getbolag-sandbox",
        "supplier": "getBolag",
        "notice": "Påhittad testdata. Inga riktiga bolag eller personer. Live-data levereras av Creditsafe i Sverige AB."
      }
    ],
    "retrieved_at": "2026-10-27T09:47:53.724Z",
    "data_updated_at": "2026-10-26T06:00:00Z",
    "cost_sek": 0,
    "environment": "test",
    "database": "getBolag (getbolag.se)",
    "publisher": "getBolag, ett varumärke i Bolagskällan AB (559555-5946)",
    "coverage": {
      "company": "available",
      "addresses": "available",
      "share_capital": "available"
    }
  }
}
```

### Bolaget finns inte

```bash
curl -s "https://getapi.gradientvibe.se/api/v1/companies/569900-0096" \
  -H "Authorization: Bearer $GETBOLAG_KEY"
```

Svar från sandlådan (HTTP 404):

```json
{
  "status": "error",
  "error": {
    "code": "not_found",
    "message": "Det finns inget bolag eller ingen person med det numret i källan."
  },
  "meta": {
    "request_id": "b1a4dde4-06ea-4d0c-a717-e9a0f7b86565",
    "source": [
      "sandbox"
    ],
    "attribution": [
      {
        "source": "getbolag-sandbox",
        "supplier": "getBolag",
        "notice": "Påhittad testdata. Inga riktiga bolag eller personer. Live-data levereras av Creditsafe i Sverige AB."
      }
    ],
    "retrieved_at": "2026-10-27T09:47:53.724Z",
    "data_updated_at": "2026-10-26T06:00:00Z",
    "cost_sek": 0,
    "environment": "test",
    "database": "getBolag (getbolag.se)",
    "publisher": "getBolag, ett varumärke i Bolagskällan AB (559555-5946)",
    "coverage": {
      "company": "not_found"
    }
  }
}
```

### Felaktigt organisationsnummer

```bash
curl -s "https://getapi.gradientvibe.se/api/v1/companies/569900-0014" \
  -H "Authorization: Bearer $GETBOLAG_KEY"
```

Svar från sandlådan (HTTP 400):

```json
{
  "status": "error",
  "error": {
    "code": "invalid_org_number",
    "message": "Ange ett organisationsnummer med tio siffror, till exempel 569900-0013."
  }
}
```

## Om svaret

- `status.active` är `true` för bolag som inte är avregistrerade eller upplösta.
- `is_sole_trader` är `true` för enskilda firmor.
- `industry.sni_code` är SNI 2007 med fem siffror.
- Med `detail=full` tillkommer bland annat `addresses`, `f_tax`, `vat`, `business_activity`, `previous_names` och `share_capital`. `coverage` säger för varje sektion om något fanns.
- Fält som saknas i registret är `null`. `null` betyder okänt, inte noll eller nej.

## Felkoder

| Kod | HTTP | Vad du gör |
| --- | --- | --- |
| `invalid_org_number` | 400 | Skicka tio siffror, med eller utan bindestreck, till exempel `569900-0013`. |
| `invalid_parameter` | 400 | Kontrollera parametrarna mot endpointens tabell. Okända parametrar avvisas i stället för att ignoreras. |
| `not_found` | 404 | Kontrollera numret. Inte hittat debiteras inte. |
| `entity_cap_exceeded` | 429 | Bolag och personer du redan hämtat i dag går att hämta igen. Behöver du ett högre tak, kontakta support. |
| `unauthorized` | 401 | Skicka `Authorization: Bearer gb_test_…` eller `gb_live_…`. Kontrollera att hela nyckeln kom med. En OAuth-token gäller en timme; förnya den med refresh-token. |
| `insufficient_scope` | 403 | Skapa en nyckel med rätt scope under Konto → Nycklar. Se [scopes](https://getapi.gradientvibe.se/docs/autentisering#scopes). |
| `email_not_verified` | 403 | Klicka på länken i bekräftelsemejlet, eller skicka ett nytt från Konto. |
| `user_disabled` | 403 | Be kontots ägare att aktivera användaren, eller använd en egen nyckel. |
| `account_not_active` | 403 | Använd en testnyckel tills kontot är godkänt. Status syns under Konto. |
| `blocked_by_phase` | 503 | Använd en testnyckel mot sandlådan. Vi meddelar när live-data öppnar. Se [sandlådan](https://getapi.gradientvibe.se/docs/sandlada). |
| `suspended` | 503 | Kontakta support@getbolag.se. |
| `rate_limited` | 429 | Vänta så många sekunder som `Retry-After` anger och försök igen. Se [takt och tak](https://getapi.gradientvibe.se/docs/takt-och-tak). |
| `insufficient_credits` | 402 | Fyll på under Konto → Krediter. |
| `monthly_cap_reached` | 402 | Höj taket under Konto, eller vänta till nästa månad. |
| `key_daily_cap_reached` | 402 | Höj nyckelns tak under Konto → Nycklar, eller vänta till nästa dygn. |
| `invalid_idempotency_key` | 400 | Skicka ett kort, unikt värde per uppslag, till exempel ett UUID. |
| `idempotency_key_reused` | 422 | Använd en ny nyckel för varje nytt uppslag. Samma nyckel gäller bara när exakt samma anrop görs om. Se [Idempotency-Key](https://getapi.gradientvibe.se/docs/takt-och-tak#idempotency-key). |
| `internal_error` | 500 | Försök igen med samma `Idempotency-Key`. Ange `request_id` om du kontaktar support. |

Samma uppslag i MCP: verktyget `gb_get_company`. Se [MCP](https://getapi.gradientvibe.se/docs/mcp#verktyg).
