All data sources

BLS Labor Stats

No authbls

US BLS public API. Anonymous tier (25/day, ≤25 ids, ≤10y) toggle-on. BLS_API_KEY raises caps to 500/day, ≤50/≤20y + unlocks calculations + catalog. - getSeries ⭐ single id + year range - getMultipleSeries ⭐ POST multi, caps validated upfront - findIndustrialSeries ⭐ curated NAICS↔seriesId map (~50 entries, no upstream call) - listSurveys ⭐ all 73 surveys; getSurvey, getPopularSeries, getServiceInfo Differentiator: programmatic NAICS-to-seriesId drifts from BLS docs; BLS exposes no NAICS lookup. Map covers O&G 211, Drilling 213111, Support 213112, Refineries 32411, Pipelines 4861/4862, PPI commodities, state LAUS. upstream quirk: errors hide in HTTP 200 — message[] says "Series X does not exist" while status=REQUEST_SUCCEEDED.

Provenance

PublisherBLS Labor Stats

Freshness & coverage

FreshnessFreshness not declared
GeographicNot declared
TemporalNot declared
AuthenticationNo credentials required

Methods (7)

  • getSeries

    read

    Single time series by id. startYear/endYear slice; calculations+catalog need a BLS API key.

    Input schema
    {
      "type": "object",
      "properties": {
        "seriesId": {
          "type": "string",
          "examples": [
            "CEU1021100001"
          ]
        },
        "startYear": {
          "type": "number",
          "examples": [
            2020
          ]
        },
        "endYear": {
          "type": "number",
          "examples": [
            2026
          ]
        },
        "calculations": {
          "type": "boolean"
        },
        "catalog": {
          "type": "boolean"
        }
      },
      "additionalProperties": false,
      "required": [
        "seriesId"
      ]
    }

    Returns BLSResponseEnvelope: status, series[].data[], notices[], registered.

  • getMultipleSeries

    read

    Multi-series POST. Anonymous: ≤25 ids / ≤10y. Keyed: ≤50 ids / ≤20y. Caps validated upfront.

    Input schema
    {
      "type": "object",
      "properties": {
        "seriesIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "startYear": {
          "type": "number",
          "examples": [
            2024
          ]
        },
        "endYear": {
          "type": "number",
          "examples": [
            2026
          ]
        },
        "calculations": {
          "type": "boolean"
        },
        "catalog": {
          "type": "boolean"
        }
      },
      "additionalProperties": false,
      "required": [
        "seriesIds"
      ]
    }

    calculations/catalog silently ignored without a key — handler emits a warning.

  • findIndustrialSeries

    read

    Curated NAICS↔seriesId lookup by NAICS, keyword, or surveyHint. Killer feature, no upstream call.

    Input schema
    {
      "type": "object",
      "properties": {
        "naicsCode": {
          "type": "string",
          "examples": [
            "213111"
          ]
        },
        "keyword": {
          "type": "string"
        },
        "surveyHint": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }

    NAICS supports prefix matching (211 matches 211, 211111).

  • listSurveys

    read

    Catalog of all 73 BLS surveys (CE/EN/WP/PC/PR/JT/OE/LA/CU/EI/SM/MP/IP/CI). 7d cache.

    Input schema
    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
  • getSurvey

    read

    Metadata for one survey by abbreviation (CE, EN, WP, PC, …).

    Input schema
    {
      "type": "object",
      "properties": {
        "abbr": {
          "type": "string",
          "examples": [
            "CE"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "abbr"
      ]
    }
  • getPopularSeries

    read

    Popular series ids for a survey (undocumented BLS endpoint, cold-start UX).

    Input schema
    {
      "type": "object",
      "properties": {
        "survey": {
          "type": "string",
          "examples": [
            "CE"
          ]
        }
      },
      "additionalProperties": false
    }
  • getServiceInfo

    read

    Tier delta (anonymous vs registered), curated NAICS coverage, endpoint catalog, upstream quirks.

    Input schema
    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }