Search BLS Series
bls_search_seriesSearch the BLS series catalog by natural language query, survey code, geographic area, or keywords to resolve cryptic SeriesIDs. Returns matching series with decoded components (survey, area, item, seasonal flag) and plain-language names. Use this before bls_get_series when you have a concept but not a SeriesID. Operates offline — no API quota consumed. Survey filter accepts two-letter codes (CU, CE, LN, LA, PC, JT, OE, EC, PR). Area filter accepts state names, MSA names, or FIPS area codes.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | State name, MSA name, or FIPS area code to narrow results to a geographic area. Omit for national series. | |
| limit | No | Maximum number of results to return (1–50, default 10). | |
| query | Yes | Natural language or keyword query (e.g. "unemployment rate", "CPI food", "nonfarm payrolls"). Also accepts a SeriesID directly for exact lookup. | |
| survey | No | Two-letter LABSTAT survey abbreviation to filter results (e.g. CU for CPI, CE for CES, LN for CPS, LA for LAUS, JT for JOLTS, OE for OEWS). Omit to search all loaded surveys. | |
| seasonal_adjustment | No | When true, return only seasonally adjusted series. When false, return only not-seasonally-adjusted. Omit to return both. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cap | No | The result limit that capped the returned list. | |
| error | No | Present when the call failed. Absent on success. | |
| shown | No | Number of series returned in this response. | |
| capped | No | True when the FTS candidate pool reached the internal cap (~1000). totalCount is then a lower bound, not an exact match count. Narrow the query, add survey/area filters, or use a direct SeriesID to get an exact count. | |
| notice | No | Guidance when no results matched — e.g. how to broaden the query or remove filters. Absent when results are returned. | |
| series | No | Matching series, ordered by relevance. | |
| truncated | No | True when more candidates matched than the limit returned. | |
| areaFilter | No | Area filter applied, if any. Absent when no area filter was passed. | |
| totalCount | No | Total candidates scored before the limit was applied. A lower bound when capped is true — the catalog index may contain more matching series. | |
| catalogSize | No | Total series in the loaded catalog index. Distinguishes an empty-result search from a failed catalog load. | |
| limitApplied | No | Result limit in effect (defaults to 10 when omitted). | |
| surveyFilter | No | Survey filter applied, if any. Absent when no survey filter was passed. | |
| effectiveQuery | No | Query string as the server received and searched on. Confirms interpretation for self-correction. | |
| seasonalFilter | No | Seasonal-adjustment filter applied, if any. Absent when not passed. |