# BLS Public Data API

CPI, payrolls and PPI from the agency that computes them. Free, 500 calls a day.

*https://stockmarketstack.com/tools/bls-api · Stock Market Data APIs*

## Facts

### At a glance

| Field | Value |
| --- | --- |
| Vendor | U.S. Bureau of Labor Statistics |
| Category | Stock Market Data APIs |
| Job | macro |
| Website | https://www.bls.gov/developers/ |
| Pricing model | free |
| Free tier | true |
| Open source | false |
| Licence | none |
| Self-hosted | false |
| Tested hands-on | false |
| Last updated | 2026-09-19 |

### Pricing

| Tier | USD | Period |
| --- | --- | --- |
| Version 1.0 (unregistered) | 0 USD | month |
| Version 2.0 (registered) | 0 USD | month |

### Coverage

| Field | Value |
| --- | --- |
| Asset classes | none |
| Markets | us |
| Works outside the US | false |
| Data latency | none |
| Platforms | web |
| AI features | none |

### Interfaces

| Field | Value |
| --- | --- |
| API | true |
| Webhooks | false |
| Scripting | none |
| Python | false |
| Spreadsheet add-in | false |
| MCP server | false |
| Export | json, xlsx, api |

### Capabilities

Yes: none

No: charting, screening, scanning, backtesting, automation, live_trading, paper_trading, portfolio_tracking, broker_import, tax_reporting, alerts, news, options_analysis

*Verified: pricing 2026-09-19; capabilities 2026-09-19; coverage 2026-09-19.*

## What it is

The BLS Public Data API is the Bureau of Labor Statistics' own endpoint for the series it
computes: the Consumer Price Index, the establishment and household employment surveys, producer
prices, the Employment Cost Index, JOLTS, productivity and import/export price indexes. Series ID
formats are documented for around twenty-five programmes, each with its own prefix — `CU` for
CPI-U, `CE` for national employment, `WP` for PPI commodity data, `JT` for JOLTS.

A request is a JSON POST to `api.bls.gov/publicAPI/v2/timeseries/data/` carrying a list of series
IDs and a year range; a single series can also be pulled with a plain GET. Responses are JSON,
with each observation carrying its year, period, value and a footnote array — which is where the
preliminary flags live.

Most readers meet these series second-hand, through FRED or an aggregator. The reason to come to
the source is the footnotes: this is the number as the agency published it, with the agency's own
caveat attached.

## Pricing

Free in both versions; registration buys headroom, not data. The step from v1 to v2 is 25 queries
a day to 500, 25 series per query to 50 and 10 years of history to 20, plus calculations, annual
averages and catalog metadata. Both share a ceiling of 50 requests per 10 seconds, and the Terms
of Service warn that trying to circumvent it can get your access blocked. Registration takes an
email address, an organisation name and a CAPTCHA, and the key must be renewed annually.

Worth knowing before you plan around the versions: the v2 path answers without a key. A keyless
POST on 19 September 2026 returned the data alongside a message array saying the catalog and the
calculations had been disabled for the request. The key gates the extras and the quota, not the
numbers.

## Data & coverage

United States only, and nothing priced. Checked on 19 September 2026, the August 2026 readings were
already there: CPI-U all items (`CUUR0000SA0`) at 334.980, total nonfarm payrolls
(`CES0000000001`) at 159,075 thousand and PPI final demand (`WPUFD4`) at 157.604 — the last two
flagged preliminary. A two-to-three-week lag on the monthly headline series is the shape to plan
against. Monthly is the fastest frequency in the building; much of the catalogue is quarterly or
annual.

## Integrations

BLS ships no client library, no spreadsheet add-in and no MCP server. The Python packages people
use are third-party and both are dormant: `bls` on PyPI is Oliver Sherouse's, last released in June
2018, and `bls-api` is Tien Nguyen's, last released in September 2022. Neither is named in the BLS
documentation.

Spreadsheet output is a URL, not a parameter: post the same JSON body to
`api.bls.gov/publicAPI/v2/timeseries/data.xlsx`, or append `.xlsx` to a single-series GET, and the
response is a real workbook with a `Content-Disposition` filename. An `output_type` field in the
body does nothing — a request carrying one came back as ordinary JSON on 19 September 2026.

For bulk there is a flat-file server at `download.bls.gov/pub/time.series/`, one directory per
survey, tab-delimited, with timestamps that track the release calendar. The BLS web hosts are
unfriendly to anonymous automation — on 19 September 2026 a plain `curl` call to `www.bls.gov`
was refused with 403 while the same request with a User-Agent naming a contact address was served.
The API host itself does not do this.

## Limitations

- **This is not market data.** No instrument, no price, no volume, nothing intraday — it is the
  macro input to a model.
- **No point-in-time access.** The request signature has no vintage parameter, so a backtest
  reading today's CPI is reading numbers nobody had at the time. ALFRED, on the FRED side, is
  where that problem is solved.
- **Revisions differ per programme and live in the footnotes.** PPI is revised monthly for four
  months after publication; payrolls arrive preliminary, are revised twice and then benchmarked
  annually; unadjusted CPI is final on release while the seasonally adjusted version is restated
  for up to five years as the factors are re-estimated each January.
- **25 queries a day is a development budget,** and even 500 is small across a wide panel. This is
  a pull-on-release API, not something to poll.
- **The key expires every year,** and the failure mode is an authentication error rather than a
  notice.
- **Public domain, with a sentence attached.** BLS asks to be cited and requires you to state that
  it cannot vouch for data or analyses derived from the data once they have left BLS.gov.

## Alternatives

[FRED](https://stockmarketstack.com/tools/fred) republishes most of these series at 120 requests a minute, with vintages
through ALFRED and an Excel add-in, and is the better default unless you want the agency's own
footnotes. [DBnomics](https://stockmarketstack.com/tools/dbnomics) mirrors BLS alongside dozens of other providers under one
query shape. [EconDB](https://stockmarketstack.com/tools/econdb) and [Trading Economics](https://stockmarketstack.com/tools/trading-economics) wrap the
same public numbers in a commercial product.

## FAQ

### Do I need an API key for the BLS Public Data API?

Not to get data. Version 1.0 answers anonymously at 25 queries a day. Registration is what buys version 2.0's limits — 500 queries a day, 50 series and 20 years per query — plus calculations, annual averages and catalog metadata. Registration takes an email address, an organisation name and a CAPTCHA; the key arrives by email and has to be renewed once a year.

### What happens if I call the v2 endpoint without a key?

It answers, and it quietly takes the extras away. A keyless POST to the v2 path on 19 September 2026 returned the series fine, with a message array reading that the catalog has been disabled for this request and that calculations have been disabled for this request. Nothing fails; the response is just thinner than the one you asked for.

### Is BLS data free to use commercially?

Yes. BLS states that everything it publishes is in the public domain except previously copyrighted photographs and illustrations, and that no specific permission is needed, though it asks to be cited as the source. The Terms of Service add two conditions — do not modify the content and still cite BLS as the source, and state that BLS cannot vouch for data or analyses derived after the data left BLS.gov.

### Can I get the value that was published on a past date?

No. The request signature has no vintage or as-of parameter — the API returns the series as it stands now. For point-in-time macro you need ALFRED, the vintage front end on the same database as [FRED](/tools/fred), which carries most of these series.

### How quickly are BLS numbers revised?

It varies by programme, and the API tells you in a footnote. Producer price indexes come back flagged preliminary with the note that all indexes are subject to monthly revisions up to four months after original publication. The not-seasonally-adjusted CPI is final when issued, because it is used in escalation agreements — but seasonally adjusted CPI is revised for up to five years as the factors are re-estimated each year.

## Also worth comparing

- [ECB Data Portal API](https://stockmarketstack.com/tools/ecb-data-portal.md) — Euro reference rates, yield curves and €STR over keyless SDMX — with vintages.
- [Eurostat API](https://stockmarketstack.com/tools/eurostat.md) — EU statistics, keyless and free — 8,877 datasets, and the codes move under you.
- [FRED](https://stockmarketstack.com/tools/fred.md) — The Fed's macro database — 851,100 series, a free key and 120 requests a minute.
- [IMF Data](https://stockmarketstack.com/tools/imf-data.md) — Free, keyless SDMX access to IMF macro statistics — WEO included, forecasts and all.
- [OECD Data](https://stockmarketstack.com/tools/oecd-data.md) — Free, keyless macro statistics over SDMX — and SDMX is the price of admission.
- [World Bank Open Data](https://stockmarketstack.com/tools/world-bank-open-data.md) — Free, keyless macro indicators for 217 economies — annual, lagged, and CC BY 4.0.
