Free spaces and EV chargers in Bergen, as JSON
Live parking counts, charge-point availability and current prices for Bergen Parkering's garages. Every endpoint is a single GET request with your API key.
- ByGarasjen 1644
- KlosterGarasjen 581
- NordnesGarasjen No live count
- SolheimsGarasjen No live count
- EdvardGarasjen 317
Example data from GET /freespaces/parking. Base URL: https://api.ledig-parkering.no/api/v3
Authentication
Every request uses HTTP Basic authentication. Your token is the username and your tokenkey is the password. You get both by email when you request access.
Always call the API over HTTPS: Basic authentication only encodes the key, it does not encrypt it.
TOKEN:TOKENKEYVE9LRU46VE9LRU5LRVk=Authorization: Basic VE9LRU46VE9LRU5LRVk=Test your key
/testCheck that your token and tokenkey work before you build anything else.
Errors
| HTTP | Body | When |
|---|---|---|
| 200 | 401 Denied | No Authorization header was sent. |
| 200 | Invalid credentials | The token or tokenkey is wrong. |
curl https://api.ledig-parkering.no/api/v3/test \
-u TOKEN:TOKENKEYconst auth = 'Basic ' + btoa('TOKEN:TOKENKEY');
const res = await fetch('https://api.ledig-parkering.no/api/v3/test', {
headers: { Authorization: auth }
});
const data = await res.text();success
Spaces, chargers and prices
/freespacesFree spaces, charger availability and the current price for ByGarasjen, KlosterGarasjen and EdvardGarasjen, fetched in one call.
Missing or wrong credentials answer with HTTP 400 on this endpoint.
Errors
| HTTP | Body | When |
|---|---|---|
| 400 | 401 Denied | No Authorization header was sent. |
| 400 | Invalid credentials | The token or tokenkey is wrong. |
| 500 | {"success":false, …} | The parking counter did not answer. |
curl https://api.ledig-parkering.no/api/v3/freespaces \
-u TOKEN:TOKENKEYconst auth = 'Basic ' + btoa('TOKEN:TOKENKEY');
const res = await fetch('https://api.ledig-parkering.no/api/v3/freespaces', {
headers: { Authorization: auth }
});
const data = await res.json();{
"updated": "2026-10-27T11:00:00.000Z",
"status": "",
"data": {
"bygarasjen": {
"Name": "ByGarasjen, Bergen",
"NumFreeSpaces": 1644,
"NumAvailableChargepoints": 82,
"NumOccupiedChargepoints": 30,
"CurrentPrice": 24,
"CurrentPriceElectric": 12,
"MaxPricePer24Hours": 150,
"StatusMessage": ""
},
"klostergarasjen": {
"Name": "KlosterGarasjen, Bergen",
"NumFreeSpaces": 581,
"NumAvailableChargepoints": 18,
"NumOccupiedChargepoints": 7,
"CurrentPrice": 28,
"CurrentPriceElectric": 14,
"MaxPricePer24Hours": 200,
"StatusMessage": ""
},
"edvard": {
"Name": "EdvardGarasjen, Bergen",
"NumFreeSpaces": 317,
"NumAvailableChargepoints": 27,
"NumOccupiedChargepoints": 5,
"CurrentPrice": 28,
"CurrentPriceElectric": 14,
"MaxPricePer24Hours": 150
}
}
}
Free spaces in every garage
/freespaces/parkingFree spaces only, for all five garages.
Garages without live counting show "Midlertidig utilgjengelig" (temporarily unavailable) instead of a number.
Errors
| HTTP | Body | When |
|---|---|---|
| 200 | 401 Denied | No Authorization header was sent. |
| 200 | Invalid credentials | The token or tokenkey is wrong. |
curl https://api.ledig-parkering.no/api/v3/freespaces/parking \
-u TOKEN:TOKENKEYconst auth = 'Basic ' + btoa('TOKEN:TOKENKEY');
const res = await fetch('https://api.ledig-parkering.no/api/v3/freespaces/parking', {
headers: { Authorization: auth }
});
const data = await res.json();{
"updated": 1793350800000,
"status": "OK",
"data": {
"bygarasjen": {
"Name": "ByGarasjen, Bergen",
"NumFreeSpaces": 1644,
"StatusMessage": ""
},
"klostergarasjen": {
"Name": "KlosterGarasjen, Bergen",
"NumFreeSpaces": 581,
"StatusMessage": ""
},
"nordnes": {
"Name": "NordnesGarasjen, Bergen",
"NumFreeSpaces": "Midlertidig utilgjengelig",
"StatusMessage": ""
},
"solheimsviken": {
"Name": "SolheimsGarasjen, Bergen",
"NumFreeSpaces": "Midlertidig utilgjengelig",
"StatusMessage": ""
},
"edvard": {
"Name": "EdvardGarasjen, Bergen",
"NumFreeSpaces": 317,
"StatusMessage": ""
}
}
}
Free spaces in one garage
/freespaces/parking/{id}Free spaces for a single garage.
Garage ids
klostergarasjenbygarasjengrieggarasjen
Errors
| HTTP | Body | When |
|---|---|---|
| 200 | 401 Denied | No Authorization header was sent. |
| 200 | Invalid credentials | The token or tokenkey is wrong. |
| 502 | {"status":"error", …} | A data provider did not answer. Try again shortly. |
curl https://api.ledig-parkering.no/api/v3/freespaces/parking/klostergarasjen \
-u TOKEN:TOKENKEYconst auth = 'Basic ' + btoa('TOKEN:TOKENKEY');
const res = await fetch('https://api.ledig-parkering.no/api/v3/freespaces/parking/klostergarasjen', {
headers: { Authorization: auth }
});
const data = await res.json();{
"updated": 1793350800000,
"status": "OK",
"data": {
"facility": {
"Name": "KlosterGarasjen, Bergen",
"NumFreeSpaces": 581,
"StatusMessage": "OK"
}
}
}
EV chargers in every garage
/freespaces/chargersAvailable and occupied charge points, with the current price, for all garages.
EdvardGarasjen has no hourly price on this endpoint (CurrentPriceElectric is null). Use /freespaces for its price.
Errors
| HTTP | Body | When |
|---|---|---|
| 200 | 401 Denied | No Authorization header was sent. |
| 200 | Invalid credentials | The token or tokenkey is wrong. |
| 502 | {"status":"error", …} | A data provider did not answer. Try again shortly. |
curl https://api.ledig-parkering.no/api/v3/freespaces/chargers \
-u TOKEN:TOKENKEYconst auth = 'Basic ' + btoa('TOKEN:TOKENKEY');
const res = await fetch('https://api.ledig-parkering.no/api/v3/freespaces/chargers', {
headers: { Authorization: auth }
});
const data = await res.json();{
"updated": 1793350800000,
"status": "OK",
"data": {
"bygarasjen": {
"Name": "ByGarasjen, Bergen",
"NumAvailableChargepoints": 82,
"NumOccupiedChargepoints": 30,
"CurrentPrice": 24,
"CurrentPriceElectric": 12,
"MaxPricePer24Hours": 150
},
"klostergarasjen": {
"Name": "KlosterGarasjen, Bergen",
"NumAvailableChargepoints": 18,
"NumOccupiedChargepoints": 7,
"CurrentPrice": 28,
"CurrentPriceElectric": 14,
"MaxPricePer24Hours": 200
},
"nordnes": {
"Name": "NordnesGarasjen, Bergen",
"NumAvailableChargepoints": 0,
"NumOccupiedChargepoints": 0,
"CurrentPrice": 19,
"CurrentPriceElectric": 9.5,
"MaxPricePer24Hours": 0
},
"solheimsviken": {
"Name": "SolheimsGarasjen, Bergen",
"NumAvailableChargepoints": 0,
"NumOccupiedChargepoints": 0,
"CurrentPrice": 42,
"CurrentPriceElectric": 21,
"MaxPricePer24Hours": 0
},
"edvard": {
"Name": "EdvardGarasjen, Bergen",
"NumAvailableChargepoints": 27,
"NumOccupiedChargepoints": 5,
"CurrentPriceElectric": null,
"MaxPricePer24Hours": 150
}
}
}
EV chargers in one garage
/freespaces/chargers/{id}Charge points and price for a single garage. Any other id returns SolheimsGarasjen.
Garage ids
bygarasjenklostergarasjennordnes
On this endpoint NumAvailableChargepoints holds the total number of charge points and NumOccupiedChargepoints holds the number that are free.
Errors
| HTTP | Body | When |
|---|---|---|
| 200 | 401 Denied | No Authorization header was sent. |
| 200 | Invalid credentials | The token or tokenkey is wrong. |
| 502 | {"status":"error", …} | A data provider did not answer. Try again shortly. |
curl https://api.ledig-parkering.no/api/v3/freespaces/chargers/bygarasjen \
-u TOKEN:TOKENKEYconst auth = 'Basic ' + btoa('TOKEN:TOKENKEY');
const res = await fetch('https://api.ledig-parkering.no/api/v3/freespaces/chargers/bygarasjen', {
headers: { Authorization: auth }
});
const data = await res.json();{
"updated": 1793350800000,
"status": "OK",
"data": {
"facility": {
"Name": "ByGarasjen, Bergen",
"NumAvailableChargepoints": 112,
"NumOccupiedChargepoints": 82,
"CurrentPrice": 24,
"CurrentPriceElectric": 12,
"MaxPricePer24Hours": 150
}
}
}
Everything about one garage
/freespaces/single/{id}Free spaces, chargers, prices, floors, maximum height and the current status message for one garage.
Garage ids
bygarasjenklostergarasjennordnesgarasjensolheimsgarasjen
Errors
| HTTP | Body | When |
|---|---|---|
| 404 | Facility not found | The id is not one of the garages above. |
| 200 | 401 Denied | No Authorization header was sent. |
| 200 | Invalid credentials | The token or tokenkey is wrong. |
| 502 | {"status":"error", …} | A data provider did not answer. Try again shortly. |
curl https://api.ledig-parkering.no/api/v3/freespaces/single/bygarasjen \
-u TOKEN:TOKENKEYconst auth = 'Basic ' + btoa('TOKEN:TOKENKEY');
const res = await fetch('https://api.ledig-parkering.no/api/v3/freespaces/single/bygarasjen', {
headers: { Authorization: auth }
});
const data = await res.json();{
"updated": 1793350800000,
"status": "OK",
"data": {
"Name": "bygarasjen",
"Location": "Fjøsangerveien 4",
"Floors": 6,
"MaxHeight": "2.2",
"NumTotalSpaces": 1950,
"NumFreeSpaces": 1644,
"NumAvailableChargepoints": 82,
"NumOccupiedChargepoints": 30,
"CurrentPrice": 24,
"CurrentPriceElectric": 12,
"MaxPricePer24Hours": 150,
"StatusMessage": ""
}
}