Anslut till Systembolagets API med R

Action creates insight

Anslut till Systembolagets API med R

Anslut till Systembolagets API med R! För att ansluta till Systembolagets API behöver du R med Rstudio samt en API nyckel. Allt är gratis att skaffa och koden är relativt andra programmeringsspråk enkel. Om du inte redan har R så kan du ladda ner det från CRAN. Rstudio finns att ladda ner från deras hemsida och Systembolagets API finns att tillgå här.

Börja med att öppna Rstudio, ladda ner paketen httr och jsonlite, genom att köra koden:

install.packages("httr")
install.packages("jsonlite")

Gå nu till systembolagets API sida. Skapa ett konto genom sign up. Verifiera ditt konto genom emailet som skickas till dig. Jag har tidigare gjort en guide hur du ansluter till Börsdatas API som hur man kan göra en automatisk DCF med hjälp av dessa.

Gå tillbaka till Systembolagets api sida, gå till products och tryck på ‘Open API’. Tryck på ‘Add subscription’ och skriv in ett namn på din API nyckel. Gå tillbaka till products och gå in på din nyckel som du har skapat. Hämta denna ‘primary key’, spara den nyckel genom ctrl+c.

Läs in nyckeln till Rstudio genom följande kod:

key1<-"<API NYCKEL HÄR>"

Nu kan vi börja att hämta information from Systembolagets API. Gå till sidan ‘Site v1’ och fliken site_getall. Vi kommer att behöva denna request url till anslutningen. Kopiera bara all kod.

#### Systembolaget API ####
## 
# Installera paket - Ta bort efter du har kört en gång 
install.packages("httr")
install.packages("jsonlite")

# Laddar in paket
library(httr)
library(jsonlite)

# Laddar in API nyckel
API_nyckel<-"<API NYCKEL HÄR>"

# Ansluter till Systembolagets API

url<-"https://api-extern.systembolaget.se/site/v1/site"

stage1<-GET(url = url,add_headers("Ocp-Apim-Subscription-Key"=API_nyckel))
stage2<-content(stage1,type = "text",encoding = "UTF-8")
site<-jsonlite::fromJSON(stage2)

# Agent/Ombud
url<-"https://api-extern.systembolaget.se/site/V2/Agent"

stage1<-GET(url = url,add_headers("Ocp-Apim-Subscription-Key"=API_nyckel))
stage2<-content(stage1,type = "text",encoding = "UTF-8")
AGENT<-jsonlite::fromJSON(stage2)

# Store
url<-"https://api-extern.systembolaget.se/site/V2/Store"
stage1<-GET(url = url,add_headers("Ocp-Apim-Subscription-Key"=API_nyckel))
stage2<-content(stage1,type = "text",encoding = "UTF-8")
STORE<-jsonlite::fromJSON(stage2)

Från detta har vi nu fått ut tre ordentliga dataset. Tidigare var det möjligt att få ut information om Systembolagets sortiment, men eftersom det tydligen missbrukades av API användarna så är det inte längre tillgängligt. Låt oss titta närmare på det datamaterialet som vi har fått ut. Site ser ut som följande.

SITEIsTastingStoreSiteIdAliasAddressDisplayNamePostalCodeCityCountyCountryIsStoreIsAgentIsActiveForAgentOrderPhoneEmailServicesDepotName
1FALSE0102FältöverstenKarlaplan 13115 20StockholmStockholms länTRUEFALSEFALSE08-662 22 89Fältöversten
2FALSE0104Nybrogatan 47114 39StockholmStockholms länTRUEFALSEFALSE08-662 50 16Nybrogatan
3FALSE0106GarnisonenKarlavägen 100 A115 26StockholmStockholms länTRUEFALSEFALSE08-662 64 85Garnisonen
4FALSE0107Norra DjurgårdsstadenBobergsgatan 50115 42StockholmStockholms länTRUEFALSEFALSE08-403 190 12Norra Djurgårdsstaden
5FALSE0110Hötorgshallen111 57StockholmStockholms länTRUEFALSEFALSE08-56849241Hötorgshallen
6FALSE0113Sergel, ingång T-CentralenDrottninggatan 45111 21StockholmStockholms länTRUEFALSEFALSE08-21 47 44Sergel, ingång T-Centralen
Första observationerna i SITE

Tog bort position och open hours, detta då dessa var mer än en rad. Agent och Store är i ett liknande format. Vad kan vi nu göra med detta datamaterialet? Vi kan bygga en karta över positionerna, eller så kan vi se över tid vem det är som beställer mycket alkohol. Inget av detta intresserar mig, därför väljer jag att lägga locket på och kanske återkommer till detta projekt om det visar sig att det finns möjligheter att skapa mer intressanta analyser på det.

Systembolagets API var mindre intressant än vad jag trodde

Jakob Johannesson, 2020

Leave a Reply