Does anyone know how to fetch WASDE (World Agricultural supply and demand estimates) report fundamental data by using API in Python or R?

Question:

https://usda.library.cornell.edu/apidoc/index.html The web site has provided the API doc. Can somebody tell me the required steps to fetch the data either in R or Python?

Asked By: Niket Chauhan

||

Answers:

Here’s how you can do it in R.

First, create variables containing the email address and password you created when you signed up:

my_email    <- "[email protected]"
my_password <- "Passw0rd!"

You are going to need to send these inside a json string as a POST request to get an authorization code to use the service. We’ll create the json now:

my_json <- paste0('{"auth": {"email":"', my_email,'","password":"', my_password, '"}}')

Now we’ll request an authorization token using httr::POST:

library(httr)

auth <- POST("https://usda.library.cornell.edu/user_token",
             body = my_json, encode = "raw",
             add_headers(`Content-Type` = "application/json"))

If everything went well, auth now contains our authorization token. We will use this token inside an ‘Authorization’ header for every subsequent request to the server:

token <- add_headers("Authorization" = paste("Bearer", content(auth, "parsed")$jwt))

So now we can just send http requests to the API using GET and POST. For most of these we can just use the url we want, and ensure we have included our header.

res <- GET("https://usda.library.cornell.edu/api/v1/agency/findAll", token)

Here, res is an http response object, so we’ll extract its contents as text to get our json string:

cat(content(res, "text"))
#> [{"id":"waob_agency","title":["World Agricultural Outlook Board"],
#> "acronym":["WAOB"],"contact_email":["[email protected]"],"contact_phone":
#> ["202-720-5447"],"location_city":["Washington"],"location_state":
#> ["DC"],"homepage_url":["http://www.usda.gov/oce/commodity/"]},
#> {"id":"ers_agency","title":["Economic Research Service"],"acronym":
#> ["ERS"],"contact_email":["[email protected]"],"contact_phone":
#> ["202-694-5139"],"location_city":["Washington"],"location_state":
#> ["DC"],"homepage_url":["http://www.ers.usda.gov/"]},
#> {"id":"nass_agency","title":["National Agricultural Statistics Service"],
#> "acronym":["NASS"],"contact_email":["[email protected]"],
#> "contact_phone":["800-727-9540"],"location_city":["Washington"],
#> "location_state":["DC"],"homepage_url":["http://www.nass.usda.gov/"]},
#> {"id":"fas_agency","title":["Foreign Agricultural Service"],"acronym":
#> ["FAS"],"contact_email":["[email protected]"],"location_city":
#> ["Washington"],"location_state":["DC"],"homepage_url":
#> ["http://www.fas.usda.gov/"]},{"id":"ams_agency","title":
#> ["Agricultural Marketing Service"],"acronym":["AMS"],"contact_email":
#> ["[email protected]"],"contact_phone":["202-720-8998"],"location_city":
#> ["Washington"],"location_state":["DC"],"homepage_url":
#> ["http://www.ams.usda.gov/"]}]
Answered By: Allan Cameron
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.