Anslut till Systembolagets API med R

Systembolaget
Data Science
api
Systembolagets API kan vara en spänannde första plats att utforska. Anslut till Systembolagets API med R
Author

Jakob Johannesson

Published

July 1, 2021


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.

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.

SITE IsTastingStore SiteId Alias Address DisplayName PostalCode City County Country IsStore IsAgent IsActiveForAgentOrder Phone Email Services Depot Name
1 FALSE 0102 Fältöversten Karlaplan 13 115 20 Stockholm Stockholms län TRUE FALSE FALSE 08-662 22 89 Fältöversten
2 FALSE 0104 Nybrogatan 47 114 39 Stockholm Stockholms län TRUE FALSE FALSE 08-662 50 16 Nybrogatan
3 FALSE 0106 Garnisonen Karlavägen 100 A 115 26 Stockholm Stockholms län TRUE FALSE FALSE 08-662 64 85 Garnisonen
4 FALSE 0107 Norra Djurgårdsstaden Bobergsgatan 50 115 42 Stockholm Stockholms län TRUE FALSE FALSE 08-403 190 12 Norra Djurgårdsstaden
5 FALSE 0110 Hötorgshallen 111 57 Stockholm Stockholms län TRUE FALSE FALSE 08-56849241 Hötorgshallen
6 FALSE 0113 Sergel, ingång T-Centralen Drottninggatan 45 111 21 Stockholm Stockholms län TRUE FALSE FALSE 08-21 47 44 Sergel, 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.