BLS API for AI agents, free CPI and unemployment API no key
The U.S. Bureau of Labor Statistics’ official time-series API: one GET or POST with series IDs returns monthly or quarterly values for CPI, unemployment, payrolls, wages, producer prices and more as JSON. Version 1.0 needs no key (25 queries a day, 25 series, 10 years per query); a free registration key unlocks version 2.0 with 500 queries a day.
Verified factsChecked 2026-10-30
| Price | Free. BLS says version 1.0 does not require registration and is open for public use; version 2.0 registration is free.1 [Verified 2026-10-30] |
| API key / auth | None for version 1.0. Our keyless GET and POST on 2026-10-30 returned REQUEST_SUCCEEDED. Version 2.0 needs a registration key sent by email and renewed at least once a year.3 [Verified 2026-10-30] |
| Rate limit | Version 1.0 (no key): 25 queries a day, 25 series per query, 10 years per query. Version 2.0 (key): 500 queries a day, 50 series, 20 years. Both: 50 requests per 10 seconds; over a limit returns HTTP 429.3 [Verified 2026-10-30] |
| License / terms | BLS material is in the public domain (cite BLS as the source); the BLS emblem is a registered trademark. The API terms (last modified Aug 30, 2023) ask you to cite the retrieval date, state that BLS.gov cannot vouch for data or analyses after retrieval, and not modify the data while citing BLS.5 [Verified 2026-10-30] |
| Version 1.0 vs 2.0 | Only 2.0 offers net and percent changes, annual averages on request and series catalog descriptions. Our keyless call to the v2 URL also returned data, but BLS documents v2 as registration-only, so do not rely on it.3 [Verified 2026-10-30] |
| Data gap to expect | October 2025 values come back as "-" with the footnote “Data unavailable due to the 2025 lapse in appropriations” in both CPI and the unemployment rate (our POST on 2026-10-30).2 [Verified 2026-10-30] |
FeaturesChecked 2026-10-30
| Capability | Value |
|---|---|
| StatusTwo versions are live: 1.0 needs no registration, 2.0 needs a free key renewed yearly. No deprecation date is published. | v1.0 open; v2.0 registered1 [Verified 2026-10-30 on https://www.bls.gov/developers/] |
| API key requiredNo key (v1.0). Keyless GET and POST to /publicAPI/v1 returned REQUEST_SUCCEEDED on 2026-10-30. | No2 [Verified 2026-10-30 by test request to https://api.bls.gov/publicAPI/v1/timeseries/data/CUUR0000SA0] |
| Free tierFree. Version 1.0 is open for public use; version 2.0 registration is free. | Yes1 [Verified 2026-10-30 on https://www.bls.gov/developers/] |
| Rate limit25 series and 10 years per query without a key (50 and 20 with one); 50 requests per 10 seconds for both; HTTP 429 when exceeded. | 25 queries/day keyless; 500 with key3 [Verified 2026-10-30 on https://www.bls.gov/developers/api_faqs.htm] |
| Official MCP serverBLS publishes no MCP server; only the REST API with sample code. Community wrappers exist but are not run by BLS. | Not published1 [Not published by vendor: checked 2026-10-30 on https://www.bls.gov/developers/] |
| Official SDKSample code only. BLS offers sample code (Java, PHP, Python, R, Ruby, SAS, Unix shell and more) but no client SDK. | No6 [Verified 2026-10-30 on https://www.bls.gov/developers/api_signature.htm] |
| Data license / termsEverything BLS publishes is public domain except earlier-copyrighted images; the BLS emblem is a registered trademark. | Public domain (cite BLS)4 [Verified 2026-10-30 on https://www.bls.gov/opub/copyright-information.htm] |
| Commercial use allowedAllowed. Public domain material can be used without permission; the API terms ask you to cite the retrieval date and the “cannot vouch” statement. | Yes5 [Verified 2026-10-30 on https://www.bls.gov/developers/termsOfService.htm] |
| CORS / browser useAccess-Control-Allow-Origin: * on GET. Our GET carried ACAO *; an OPTIONS preflight for the JSON POST returned 405, so browser code should use the GET signature. | Yes2 [Verified 2026-10-30 by test request to https://api.bls.gov/publicAPI/v1/timeseries/data/CUUR0000SA0] |
| Freshness / coverageValues follow BLS release schedules; on 2026-10-30 CPI and unemployment were at September 2026, with October 2025 missing (2025 funding lapse). | Published series; latest Sept 20262 [Verified 2026-10-30 by test request to https://api.bls.gov/publicAPI/v1/timeseries/data/CUUR0000SA0] |
What it does
BLS publishes the main U.S. labor-market and inflation statistics: the Consumer Price Index, the unemployment rate from the Current Population Survey, nonfarm payrolls, JOLTS job openings, producer prices, wages and productivity. The Public Data API at api.bls.gov serves those published series by series ID, for example CUUR0000SA0 (CPI for all urban consumers, all items) or LNS14000000 (seasonally adjusted unemployment rate). GET /publicAPI/v1/timeseries/data/{seriesID} returns the last three years; POST to the same URL with a JSON body of up to 25 series IDs plus startyear and endyear returns up to ten years. Each value comes with year, period (M01 to M12, M13 for annual averages), a latest flag and footnotes such as preliminary markers. BLS has no series catalogue in the API, so the agent needs the IDs; the BLS Data Finder and series-ID format pages help. There is no official MCP server or SDK; BLS provides sample code in several languages, and you wrap the endpoint as a tool yourself. The idea for this listing came from a post that cited the BLS API as a source for candy prices.
Working exampleRun 2026-10-30
curl -sS -X POST "https://api.bls.gov/publicAPI/v1/timeseries/data/" \
-H "Content-Type: application/json" \
-d '{"seriesid":["LNS14000000","CUUR0000SA0"],"startyear":"2025","endyear":"2026"}'Response (trimmed)
HTTP 200 (run 2026-10-30, no key; trimmed to the two newest months per series)
{"status":"REQUEST_SUCCEEDED","responseTime":18,"message":[],
"Results":{"series":[
{"seriesID":"LNS14000000","data":[
{"year":"2026","period":"M09","periodName":"September","latest":"true","value":"4.2","footnotes":[{}]},
{"year":"2026","period":"M08","periodName":"August","value":"4.1","footnotes":[{}]}, ...
{"year":"2025","period":"M10","periodName":"October","value":"-",
"footnotes":[{"code":"9","text":"Data unavailable due to the 2025 lapse in appropriations."}]}, ...]},
{"seriesID":"CUUR0000SA0","data":[
{"year":"2026","period":"M09","periodName":"September","latest":"true","value":"336.940","footnotes":[{}]},
{"year":"2026","period":"M08","periodName":"August","value":"334.980","footnotes":[{}]}, ...]}]}}Agent setup
Prompt to give your agent
Use the BLS Public Data API version 1.0 (no key). POST https://api.bls.gov/publicAPI/v1/timeseries/data/ with Content-Type: application/json and the body {"seriesid":["CUUR0000SA0","LNS14000000"],"startyear":"2024","endyear":"2026"}. Report the latest CPI-U index value and its 12-month percent change (compute it from the same month a year earlier), and the latest unemployment rate. Treat a value of "-" as missing and quote its footnote rather than filling it in. Say which month each number is for, that the data was retrieved today from BLS, and that BLS.gov cannot vouch for analyses derived after retrieval. Remember there are only 25 keyless queries a day, so batch series into one request.Agent / MCP-style tool snippet
// Tool definition for Claude, OpenAI or any function-calling agent
{
"name": "bls_timeseries",
"description": "Fetch published U.S. Bureau of Labor Statistics time series (CPI, unemployment, payrolls, wages) by series ID. No key: 25 queries/day, 25 series and 10 years per query.",
"input_schema": {
"type": "object",
"properties": {
"seriesid": { "type": "array", "items": { "type": "string" }, "maxItems": 25, "description": "e.g. CUUR0000SA0 (CPI-U), LNS14000000 (unemployment rate), CES0000000001 (nonfarm payrolls)" },
"startyear": { "type": "string", "pattern": "^[0-9]{4}$" },
"endyear": { "type": "string", "pattern": "^[0-9]{4}$" }
},
"required": ["seriesid"]
}
}
// Implementation: POST https://api.bls.gov/publicAPI/v1/timeseries/data/
// Content-Type: application/json, body = the input. Values are strings; "-" means unavailable.Fit and safety
Good for
- Pulling the latest CPI and unemployment rate into a briefing or research agent
- Comparing wage or price trends for an industry or region over ten years
- Grounding answers about inflation in published figures instead of model memory
Watch out
- Do not call it once per question. The keyless tier allows only 25 queries a day, so batch up to 25 series in one POST, cache results until the next scheduled release, or register for a free v2 key.
- Do not expect it to find series for you. The API has no search; the agent must already know the series IDs or look them up in the BLS Data Finder first.
- Do not present derived numbers as official BLS figures. The terms require you to say BLS.gov cannot vouch for analyses after retrieval, and percent changes you compute may differ from BLS’s published ones.
- Do not use it for real-time market data. Values appear on BLS’s release schedule (most series monthly), and recent months can be preliminary and revised.
- Do not use the BLS emblem in your app. It is a federally registered trademark, and the terms reserve it for BLS-sponsored products.
Alternatives
| SEC EDGAR API | Free, keyless U.S. government API for company-reported financials to pair with macro data. |
| NPPES NPI Registry API | Another free, keyless U.S. government lookup API with plain JSON. |
| Open-Meteo API | Free, keyless time series of a different kind, weather and climate, with a similar request style. |
| TED Search API | A free, keyless official EU dataset, for public tenders rather than statistics. |
FAQ
Does the BLS API need an API key?
Not for version 1.0. Send GET or POST requests to https://api.bls.gov/publicAPI/v1/timeseries/data/ with no key. Version 2.0 needs a free registration key.
What is the BLS API daily limit?
25 queries a day without a key (25 series and 10 years per query) and 500 a day with a free v2 key (50 series, 20 years). Both allow 50 requests per 10 seconds.
What is the series ID for CPI or the unemployment rate?
CUUR0000SA0 is CPI for all urban consumers, all items, not seasonally adjusted; LNS14000000 is the seasonally adjusted unemployment rate.
Can I use BLS data commercially?
Yes. BLS says everything it publishes is in the public domain; cite BLS as the source, note the retrieval date and do not use the BLS emblem.
Compare
Put BLS Public Data API (U.S. labor and price statistics) side by side with other free agent tools on keys, limits, MCP support, licensing and CORS. Open the comparison grid →
SourcesFootnotes
- 1bls.gov/developersVerified 2026-10-30
- 2api.bls.gov/publicAPI/v1/timeseries/data/CUUR0000SA0Tested 2026-10-30
- 3bls.gov/developers/api_faqs.htmVerified 2026-10-30
- 4bls.gov/opub/copyright-information.htmVerified 2026-10-30
- 5bls.gov/developers/termsOfService.htmVerified 2026-10-30
- 6bls.gov/developers/api_signature.htmVerified 2026-10-30