# BLS Provider Extension for the OpenBB Platform
`openbb-bls` integrates the U.S. **Bureau of Labor Statistics** into the OpenBB
Platform. It combines three data paths:
- **BLS Public Data API v2** — point-in-time time series by series ID (the only
endpoint that can use an API key).
- **Published release files** — News Release tables, supplemental XLSX files,
and the news-release chart packages, parsed directly from `bls.gov`.
- **A bundled series catalog** — a local, partitioned cache of ~1.1M BLS series
(14 survey families) so the catalog search works offline with no API calls.
A bundled OpenBB Workspace dashboard (`apps.json`) ships five apps: a BLS home
app plus dedicated Employment Situation, CPI, PPI, and Productivity apps.
## Installation
From PyPI:
```console
pip install openbb-bls
```
For local development from a clone of the OpenBB monorepo, run from this folder:
```console
pip install -e .
```
## Authentication
No key is required. Every News-Release table, supplemental table, and chart
endpoint is parsed from published files and works with no credentials.
An (optional) **BLS registration key** only affects the `series` endpoint, where
it raises the per-request limits — 50 symbols / 20-year window / 500 requests
per day (registered) vs. 25 / 10 years / 25 per day (unregistered). Get one at
and set it as `bls_api_key`:
```python
from openbb import obb
obb.user.credentials.bls_api_key = "YOUR_KEY"
```
## Coverage
Python commands are `obb.bls..(...)`; the equivalent REST route
is `GET /api/v1/bls//`. Every group also exposes a `documents`
command listing the release PDFs/files for that program.
### Consumer Price Index — `bls.cpi`
| Command | Description |
| --- | --- |
| `t1_expenditure_category` … `t7_12m_analysis` | News Release tables 1–7 (expenditure category, detailed, special aggregates, selected areas, chained vs. CPI-U, 1-month and 12-month analyses) |
| `relative_importance` | Relative-importance / weights (U.S. city average and selected local areas) |
| `seasonal_factors` | Revised seasonally-adjusted indexes and seasonal factors |
| `supplemental_tables` | C-CPI-U, CPI-W, historical CPI-U, and other supplemental XLSX tables |
| `average_prices`, `by_category`, `by_category_line`, `by_metro`, `by_region` | News-release chart package |
### Employment Situation — `bls.employment_situation`
| Command | Description |
| --- | --- |
| `summary_household`, `summary_establishment` | Summary Tables A (CPS) and B (CES) |
| `t1_employment_changes` … `t7_peak_trough`, `confidence_intervals` | CES analytical tables |
| `civilian_unemployment_rate`, `civilian_unemployment`, `civilian_employment`, `employment_population_ratio`, `labor_force_participation_rate`, `labor_underutilization`, `duration_of_unemployment`, `reasons_for_unemployment`, `unemployment_by_education`, `unemployment_by_veteran_status`, `long_term_unemployed_share`, `not_in_labor_force_indicators`, `not_in_labor_force_want_a_job` | Household-survey (CPS) chart package |
| `employment_levels_by_industry`, `average_weekly_hours_production`, `employment_change_by_industry_ci`, `employment_by_industry_monthly_changes`, `employment_and_hourly_earnings_by_industry`, `employment_and_weekly_earnings_by_industry` | Establishment-survey (CES) chart package |
### Producer Price Index — `bls.ppi`
| Command | Description |
| --- | --- |
| `detailed_report` | Monthly Detailed Report tables (XLSX) |
| `relative_importance`, `seasonal_factors` | Relative importance and seasonal factors |
| `final_demand_1m` / `_12m`, `final_demand_components_1m` / `_12m`, `intermediate_processed_1m` / `_12m`, `intermediate_services_1m` / `_12m`, `intermediate_unprocessed_1m` / `_12m` | Final- and intermediate-demand chart package |
### JOLTS — `bls.jolts`
| Command | Description |
| --- | --- |
| `change_analysis`, `revisions` | Over-the-month change analysis and SA/NSA revisions |
| `beveridge_curve`, `unemp_per_opening`, `openings_by_industry`, `hires_seps_rates`, `openings_hires_seps_levels`, `openings_hires_seps_rates`, `openings_hires_seps_by_region` | Job openings, hires, and separations chart package |
### Productivity & Costs — `bls.productivity`
| Command | Description |
| --- | --- |
| `tables` | Long-form major-sector / total-economy productivity datasets |
| `by_sector`, `nonfarm_business_productivity` / `_indexes` / `_labor_costs`, `manufacturing_productivity` / `_indexes` / `_labor_costs`, `nonfinancial_corporations_indexes` | Major-sector productivity & costs charts |
| `tfp_output_and_inputs`, `tfp_combined_inputs_output`, `tfp_contributions`, `tfp_percent_change`, `tfp_ict_trends`, `tfp_fire_trends` | Total Factor Productivity |
| `wr_productivity_change` / `_by_period`, `wr_1yr_change`, `wr_longterm_change`, `wr_indexes_by_sector`, `wr_labor_cost_by_sector`, `wr_lp_by_industry` | Wholesale & Retail Trade productivity |
| `mm_productivity_change` / `_by_period`, `mm_1yr_change`, `mm_longterm_change`, `mm_indexes_by_industry`, `mm_labor_cost_by_industry` | Mining & Manufacturing productivity |
### Import / Export Price Indexes — `bls.import_export`
| Command | Description |
| --- | --- |
| `price_indexes` | U.S. import and export price indexes |
| `imports_by_category`, `exports_by_category`, `imports_by_origin`, `exports_by_grains`, `air_passenger_fares` | Import/export chart package |
### Real Earnings — `bls.real_earnings`
| Command | Description |
| --- | --- |
| `documents` | Real Earnings news-release archive |
### Search, Series & Calendar
These cross-survey commands fetch live or cached data by series ID:
| Command | Description |
| --- | --- |
| `search` | Search the bundled ~1.1M-series catalog by category, keyword, or code (offline, no API call) |
| `series` | Fetch one or more time series by symbol from the BLS Public Data API (optional `bls_api_key`) |
| `calendar` | BLS data-release schedule |
When `openbb-economy` is installed these register under the Economy `survey`
namespace (e.g. `obb.economy.survey.bls_search(...)`, and the release calendar as
`obb.economy.calendar(provider="bls")`); otherwise they are available standalone
as `obb.bls.search(...)`, `obb.bls.series(...)`, and `obb.bls.calendar(...)`.
## Usage
```python
from openbb import obb
# Latest CPI-U expenditure-category table (no key required)
obb.bls.cpi.t1_expenditure_category(provider="bls").to_df()
# A specific time series from the BLS Public Data API
obb.bls.series(symbol="CUUR0000SA0", provider="bls").to_df()
# Find series in the local catalog, then chart one
obb.bls.search(category="cpi", query="urban", provider="bls").to_df()
```
Documentation for the OpenBB Platform is available at
.