A third-party Julia library to pull data from the Bureau of Labor Statistics (BLS).
|Does this thing work?|
|Documentation||<this page, for now>|
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
Bls type represents a connection to the BLS API.
Looks for a registration key in the file
~/.blsdatarc, or omits the registration key
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.
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])
series: A string, or array of strings, identifying the time series
startyear: A four-digit year identifying the start of the data request. Defaults to 9 or 19 years before
endyear, depending on the API version used.
endyear: A four-digit year identifying the end of the data request. Defaults to 9 or 19 years after
endyear, depending on the API version used; or, this year, if neither
catalog: Whether to return any available metadata about the series. Defaults to
BlsSeries, or an array of
Finding data series
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