BLS API: Get unemployment rate
Gets the latest seasonally adjusted unemployment rate and labor-force counts for the United States or a state, with up to 24 months of history.
Unofficial. Not affiliated with or endorsed by BLS.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Place optional
place United States, a state name, or a two-letter state code. Example: Ohio.
Ohio
Default
United States.- Months optional
months Number of recent calendar months to list, up to 24. Example: 6.
6
Whole number from 1 to 24. Default
1.
Input as JSON
{ "place": "Ohio", "months": 6}Output
{ "month": "2026-09", "place": "Ohio", "bls_url": "https://www.bls.gov/news.release/laus.nr0.htm" , "history": [ { "month": "2026-09", "rate_percent": 3.4 }, { "month": "2026-08", "rate_percent": 3.3 }, { "month": "2026-07", "rate_percent": 3.4 } ], "employed": 5657390, "unemployed": 196349, "labor_force": 5853739, "release_date": "2026-10-20", "bls_series_ids": { "employed": "LASST390000000000005", "unemployed": "LASST390000000000004", "labor_force": "LASST390000000000006", "unemployment_rate": "LASST390000000000003" }, "rate_year_earlier_percent": 4.3, "unemployment_rate_percent": 3.4, "change_from_previous_month_percentage_points": 0.1}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"bls.gov/get_unemployment_rate","input":{"place":"Ohio","months":6}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "bls.gov/get_unemployment_rate" , "input": { "place": "Ohio", "months": 6 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "bls.gov/get_unemployment_rate" , "input": { "place": "Ohio", "months": 6 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run bls.gov/get_unemployment_rate# with {"place":"Ohio","months":6}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "properties": { "place": { "type": "string", "default": "United States", "description": "United States, a state name, or a two-letter state code. Example: Ohio." }, "months": { "type": "integer", "default": 1, "maximum": 24, "minimum": 1, "description": "Number of recent calendar months to list, up to 24. Example: 6." } }}Output schema
{ "type": "object", "required": [ "place", "month", "unemployment_rate_percent", "change_from_previous_month_percentage_points", "rate_year_earlier_percent", "labor_force", "employed", "unemployed", "release_date", "bls_url", "bls_series_ids" ], "properties": { "month": { "type": "string", "description": "Latest reported month (YYYY-MM)." }, "place": { "type": "string", "description": "United States or the state name." }, "bls_url": { "type": "string", "description": "BLS news release page." }, "history": { "type": "array", "items": { "type": "object", "required": [ "month", "rate_percent" ], "properties": { "month": { "type": "string" }, "rate_percent": { "type": [ "number", "null" ] } }, "additionalProperties": false }, "description": "Recent calendar months newest first, returned when months exceeds 1." }, "employed": { "type": [ "integer", "null" ], "description": "Seasonally adjusted employed people." }, "unemployed": { "type": [ "integer", "null" ], "description": "Seasonally adjusted unemployed people." }, "labor_force": { "type": [ "integer", "null" ], "description": "Seasonally adjusted labor force in people." }, "release_date": { "type": "string", "description": "Date of the current monthly BLS news release (YYYY-MM-DD)." }, "bls_series_ids": { "type": "object", "required": [ "unemployment_rate", "labor_force", "employed", "unemployed" ], "properties": { "employed": { "type": "string" }, "unemployed": { "type": "string" }, "labor_force": { "type": "string" }, "unemployment_rate": { "type": "string" } }, "description": "BLS series IDs used for the figures.", "additionalProperties": false }, "rate_year_earlier_percent": { "type": [ "number", "null" ], "description": "Rate for the same month one year earlier, percent." }, "unemployment_rate_percent": { "type": "number", "description": "Seasonally adjusted unemployment rate, percent." }, "change_from_previous_month_percentage_points": { "type": [ "number", "null" ], "description": "Difference from the previous calendar month in percentage points; null if unavailable." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
bls.gov/get_unemployment_rate- Returns
- unemployment rate, change from previous month, labor force, employed, unemployed, release date, BLS series IDs, optional monthly history
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method bls.gov/get_unemployment_rate with the inputs above.
Ask your agent
- What is the current seasonally adjusted unemployment rate for Ohio, and how many people are in the labor force?
- Show me the national jobless rate for the past 6 months with monthly history.
- How did the unemployment rate in California change from last month, and what is the release date?
- Give me the number of employed and unemployed people in Texas along with the latest labor force total.
- On bls.gov, pull up the last 12 months of unemployment figures for the United States including the BLS series IDs.
See more
All BLS methodsGets the latest U.S. Consumer Price Index inflation for a spending category, with up to 24 recent months of history. Monthly changes are seasonally adjusted; 12-month changes are not.
bls.gov/get_inflation_rateFinds the latest published BLS pay and employment for an occupation in the US, a state, or a metro area, and compares it with the national median.
bls.gov/get_occupation_wagesFinds the best-matching Occupational Outlook Handbook profile for a job title and returns its pay, entry requirements, jobs and 10-year outlook.
bls.gov/get_occupation_outlookConverts a US dollar amount from one month or annual average to another using the US city average CPI-U for all items, not seasonally adjusted. Defaults to the latest published month.
bls.gov/calculate_inflationGets a US state's or the federal hourly minimum wage from the Department of Labor, with the tipped cash wage and maximum tip credit, future dated increases, notes and the page's update date.
dol.gov/get_minimum_wageSearches FRED economic series by topic, ordered by popularity, and returns each series' coverage dates, units, frequency and last update. FRED does not publish a popularity score on these pages, so it is null.
fred.stlouisfed.org/search_indicatorsGets GasBuddy's latest reported average regular gas price, its changes and the diesel benchmark for a US state or a listed metro area. Midgrade, premium and area low/high prices are not published with these averages; updates may lag the current day.
gasbuddy.com/get_average_gas_pricesReturns seven key economic indicators for a country from its public Trading Economics overview: GDP growth rate, inflation rate, interest rate, unemployment rate, government debt to GDP, currency and stock market. Indicators absent from the overview are null; the US dollar index is not reported as a USD exchange rate.
tradingeconomics.com/get_country_overview