install.packages("httr")
install.packages("jsonlite")
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:
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:
<-"<API NYCKEL HÄR>" key1
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 HÄR>"
API_nyckel
# Ansluter till Systembolagets API
<-"https://api-extern.systembolaget.se/site/v1/site"
url
<-GET(url = url,add_headers("Ocp-Apim-Subscription-Key"=API_nyckel))
stage1<-content(stage1,type = "text",encoding = "UTF-8")
stage2<-jsonlite::fromJSON(stage2)
site
# Agent/Ombud
<-"https://api-extern.systembolaget.se/site/V2/Agent"
url
<-GET(url = url,add_headers("Ocp-Apim-Subscription-Key"=API_nyckel))
stage1<-content(stage1,type = "text",encoding = "UTF-8")
stage2<-jsonlite::fromJSON(stage2)
AGENT
# Store
<-"https://api-extern.systembolaget.se/site/V2/Store"
url<-GET(url = url,add_headers("Ocp-Apim-Subscription-Key"=API_nyckel))
stage1<-content(stage1,type = "text",encoding = "UTF-8")
stage2<-jsonlite::fromJSON(stage2) STORE
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 | 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 |
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.