Governmental Free & Open

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.

Status Tracker Past 24 hours

Current status

Operational

100.0% operational in known checks

Checked Jun 16, 7:10 PM

24h ago Now
Operational Polling issues Impacted No data
All sources
Data access source profile JSON profile →

Access

open

Collection level

L2

Confidence

medium

Recommended next action

Use the documented public content probe, then promote to freshness only after a stable value is confirmed.

Exportable data

public_api_and_bulk

Docker fit

docker_ok

Estimated size

large

apiautomation-readycsvdirect-linkend-userportalrest-api-and-bulk-downloadxlsx
Access & Pricing Visit source →

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 footnotes field and re-pull recent periods after each release
  • Seasonal adjustment: SA and NSA series coexist — be explicit in your series ID list
  • Period codes: M01M12 are months, Q01Q04 are quarters, A01 is annual
  • Geographic series IDs: metro-area series use different prefixes — check the BLS geographic series documentation

Tool Compatibility

  • Python: bls package or direct API calls; pandas_datareader has BLS support
  • R: blsAPI package
  • 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).

Visit Data Source

Data Formats

csv xlsx api

API Quickstart

— Python — fetch CPI series
Docs →
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"])

How to Access

  • 🌐 end user
  • automation ready programmable

Notable Datasets

8 total
  • Consumer Price Index (CPI)
  • Producer Price Index (PPI)
  • Import/Export Price Indexes
  • Employment, Hours, and Earnings
  • Labor Force Statistics
  • Job Openings and Labor Turnover Survey (JOLTS)
  • Occupational Employment and Wage Statistics (OEWS)
  • Employment Projections

Index entry

Added: Apr 30, 2026

Last indexed: Jun 16, 2026

Unverified entry

Learn

Recent articles

View all →