Bureau of Labor Statistics
Provides authoritative data on employment, unemployment, wages, productivity, and inflation in the United States labor market. Serves as a critical resource for economic researchers, policymakers, and analysts.
import requests, json
headers = {"Content-type": "application/json"}
data = json.dumps({
"seriesid": ["CUSR0000SA0"], # CPI-U All items
"startyear": "2022",
"endyear": "2024",
"registrationkey": "your_bls_key"
})
r = requests.post(
"https://api.bls.gov/publicAPI/v2/timeseries/data/",
data=data, headers=headers
)
series = r.json()["Results"]["series"][0]
for row in series["data"][:5]:
print(row["year"], row["period"], row["value"]) Cost
Free
Access type
open
Signup required
No
Update alerts
Not offered
Coverage
north america
Update frequency
monthly
Source Documentation
What You're Getting
BLS publishes the official US labor market data: CPI, PPI, unemployment (CPS), job openings (JOLTS), payrolls (CES), hourly earnings, and occupational employment statistics (OES). Data is organized by series ID — a structured code encoding survey, seasonality, geography, and metric (e.g. LNS14000000 = national unemployment rate SA). Series return monthly or quarterly observations with year, period, value, and footnotes.
Ingestion Strategy
Use the Public Data API v2 — register for a key to get 500 req/day (unregistered: 25/day). Batch requests support up to 50 series per call, so group your series list into chunks of 50.
import requests, json
headers = {"Content-type": "application/json"}
payload = {
"seriesid": ["LNS14000000", "CES0000000001", "CUUR0000SA0"],
"startyear": "2015",
"endyear": "2024",
"registrationkey": "your_key"
}
r = requests.post("https://api.bls.gov/publicAPI/v2/timeseries/data/",
data=json.dumps(payload), headers=headers)
results = r.json()["Results"]["series"]
Rate Limits & API Details
- Registered key: 500 series/day, 50 series/request, 20 years of data/request
- Unregistered: 25 series/day, 10 series/request, 10 years
- Bulk flat files at download.bls.gov (FTP-style HTTPS) — full series dumps updated after each release
Schema Stability
Series IDs are highly stable — BLS rarely retires a series. Footnote codes signal data quality flags (preliminary, revised) — parse and store them. Seasonal adjustment flag is embedded in the series ID (second character). New series are added regularly; discovery via the Series ID structure documentation.
Data Quality Gotchas
- Preliminary vs final: payroll data is revised twice before becoming final — store
footnotesfield and re-pull recent periods after each release - Seasonal adjustment: SA and NSA series coexist — be explicit in your series ID list
- Period codes:
M01–M12are months,Q01–Q04are quarters,A01is annual - Geographic series IDs: metro-area series use different prefixes — check the BLS geographic series documentation
Tool Compatibility
- Python:
blspackage or direct API calls;pandas_datareaderhas BLS support - R:
blsAPIpackage - Airbyte: no official connector; community scripts exist
- Bulk flat files (at download.bls.gov) are tab-delimited, easily loaded via Snowflake COPY or BigQuery load jobs
Benchmarking Approach
National unemployment rate (LNS14000000) should have monthly observations back to 1948 — expect 900+ rows. Total nonfarm payrolls (CES0000000001) back to 1939. After each monthly release (first Friday of month), verify new row appears within 24h. Spot-check against BLS press release headline number. Flag if value changes on re-pull of a period older than 3 months (indicates revision).
Notable Datasets
1 total- ▸ Consumer Price Index (CPI)\nProducer Price Index (PPI)\nImport/Export Price Indexes\nEmployment, Hours, and Earnings\nLabor Force Statistics\nJob Openings and Labor Turnover Survey (JOLTS)\nOccupational Employment and Wage Statistics (OEWS)\nEmployment Projections
Access
- Cost
- Free
- Access type
- Open
- Update alerts
- Not offered
Data Profile
- Coverage
- North America
- Frequency
- Monthly
- History from
- 1884
- Source updated
- Jan 2025
Data Formats
How to Access
- 🌐 Browser/UI
- ⚡ Automation Ready programmable
Index entry
Added: Apr 30, 2026
Last indexed: May 2, 2026
~ Community-sourced entry