A third-party Julia library to pull data from the Bureau of Labor Statistics (BLS).
Does this thing work? | |
---|---|
Documentation | <this page, for now> |
Package Evaluator | |
Build Status |
julia> Pkg.add("BlsData")
BlsData uses BLS's Public Data API. This API limits the number of requests that unauthenticated users can make each day. To increase these limits, register a Public Data API account on the BLS website here to receive an API key.
Make the BLS Public Data API key that you just registered accessible to BlsData by storing it in a file. Then, your API key will be automatically detected by the package.
julia> open(joinpath(homedir(), ".blsdatarc"), "w") do f
write(f, "0123456789abcdef0123456789abcdef")
end
Download civilian labor force level data:
using BlsData
b = Bls()
result = get_data(b, "LNS11000000")
Then, access the DataFrame using result.data
.
The Bls
type represents a connection to the BLS API.
Looks for a registration key in the file ~/.blsdatarc
, or omits the registration key
otherwise.
b = Bls()
Specify a registration key directly.
b = Bls(key="0123456789abcdef0123456789abcdef")
Get and set fields.
get_api_url(b::Bls) # Get the base URL used to connect to the server
set_api_url!(b::Bls, url::AbstractString) # Set the base URL used to connect to the server
get_api_key(b::Bls) # Get the API key
get_api_version(b::Bls) # Get the API version (v1 or v2) used
requests_made(b::Bls) # Get the number of requests made today
requests_remaining(b::Bls) # Get the number of requests remaining today
Note that the requests made/remaining are calculated based on the lifetime of this object only and would not include those made in a distinct Julia session.
The BlsSeries
type contains the data in a query response.
For a series s
, access fields with
s.id # series ID
s.data # DataFrame of data
s.catalog # catalog metadata
Request one or multiple series from the BLS API.
get_data(b, series [; startyear, endyear, catalog])
b
: ABls
connectionseries
: A string, or array of strings, identifying the time seriesstartyear
: A four-digit year identifying the start of the data request. Defaults to 9 or 19 years beforeendyear
, depending on the API version used.endyear
: A four-digit year identifying the end of the data request. Defaults to 9 or 19 years afterendyear
, depending on the API version used; or, this year, if neitherstartyear
norendyear
is provided.catalog
: Whether to return any available metadata about the series. Defaults tofalse
.
A BlsSeries
, or an array of BlsSeries
.
The BLS mnemonics are somewhat obscure. You can attempt to build them programmatically by consulting this page.
The BLS API provides the following limits on requests:
v2 (registered) | v1 (unregistered) | |
---|---|---|
Daily query limit | 500 | 25 |
Years per query limit | 20 | 10 |
Series per query limit | 50 | 25 |
BlsData.jl
addresses these limits as follows:
- track daily query limit for reference
- make multiple requests under the hood, and concatenate results, for date ranges longer than limit
- [NOT IMPLEMENTED] make multiple requests under the hood, and concatenate results, for lists of series longer than limit