Open In App

Read JSON Data from Web APIs using R

Improve
Improve
Like Article
Like
Save
Share
Report

The Application Programming Interface allows users to use certain features like creating, reading, updating, and deleting CRUD actions without directly exposing the code. This is mostly done in the form of JavaScript Object Notation which is a text-based format for representing structured data.

Before going forward we should understand basic API calls. The CRUD operations can be performed with an API by POST, GET, PUT, and DELETE methods respectively. Of course, some methods like PUT, POST, and DELETE need authentication. In this article, we are going to see how to make an API call for getting the information using the GET method.

Take a look at this API documentation. It gives information about a word, its synonyms, etc. And if you look at this URL, it is giving us information about the word geek which is in JSON format, and looks like this:

Dictionary API to get the meaning of words

Dictionary API to get the meaning of words

Calling from R

To call this URL with a GET request in R Programming Language, we need a library called httr which does not come pre-installed. So go ahead and install it. To use its functionalities, include this library in the code.

R




# Installing httr
install.packages("httr")
  
# including the library
library(httr)


Now, let’s call the URL with the GET method and store it in wordInfo:

R




# call the URL with the GET method


The GET function returns a list with all the information about the server as well.

Raw data fetched via API

Raw data fetched via API

To get the content out of it, we need to convert this using the rawToChar function. But before that install, a library called jsonlite to work with JSON format. 

R




# installing and loading jsonlite library
install.packages("jsonlite")
library(jsonlite)
  
rawToChar(wordInfo$content)


Output:

Raw data fetched via API

Raw data fetched via API

Now that we got our data in JSON format, to make it more clean and easy to work, we will use fromJSON function.

R




# convert to cleaner format
data <- fromJSON(rawToChar(wordInfo$content))


Output:

Using fromJSON method to get data from JSON to R

Using fromJSON method to get data from JSON to R

To extract the meanings,

R




data$meanings


Output:

Data extracted from the JSON File

Data extracted from the JSON File

It is a list, so we can use:

R




data$meanings[[1]][[2]][[1]]$definition


Output:

'A carnival performer specializing in bizarre and unappetizing behavior.'
'A person who is intensely interested in a particular field or hobby 
 and often having limited or nonstandard social skills. Often used with 
 an attributive noun.'
'(by extension) An expert in a technical field, particularly one having
 to do with computers.''The subculture of geeks; an esoteric subject of
 interest that is marginal to the social mainstream; the philosophy, events,
 and physical artifacts of geeks; geekness.''An unfashionable or socially
 undesirable person.'

You can also play with strings and do something like this:

R




library(httr)
library(jsonlite)
# storing search query in a variable
word <- "competition"
# appending the query at the end
wordInfo <- GET(paste("https://api.dictionaryapi.dev/api/v2/entries/en/", word))
  
data <- fromJSON(rawToChar(wordInfo$content))
  
data$meanings[[1]][[2]][[1]]$definition


Output:

'The action of competing.'
'A contest for a prize or award.'
'The competitors in such a contest.'


Last Updated : 30 Jan, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads