GovTribe

BLS occupational wage data MCP tool

Query the independently operated public GSA CALC+ API for BLS occupational wage data, either as normalized search rows or as aggregation-derived filter options for pricing workflows.

Examples

Use this for BLS wage evidence from GSA CALC+ when pricing labor categories or benchmarking local labor markets.

For occupation lookup, choose one anchor: keyword, a single exact title in occupation_name, or a single SOC/occupation code in occupation_code. The latter two are single-element arrays used as keyword aliases. Do not combine them with each other or with a nonempty keyword, or put occupation names/codes in raw filters.

What are software developer wage rows in Virginia?

{
  "tool": "BLS_Occupational_Wage_Data",
  "arguments": {
    "mode": "search",
    "keyword": "software developer",
    "state_name": [
      "Virginia"
    ],
    "page_size": 5,
    "ordering": "rate",
    "sort": "desc",
    "fields_to_return": [
      "items",
      "summary"
    ],
    "item_fields_to_return": [
      "occupation_name",
      "occupation_code",
      "state_name",
      "area_name",
      "rate",
      "series_year"
    ]
  }
}

Which BLS filter options should narrow cybersecurity wage research?

{
  "tool": "BLS_Occupational_Wage_Data",
  "arguments": {
    "mode": "filters",
    "keyword": "cybersecurity",
    "fields_to_return": [
      "occupation_names",
      "occupation_codes",
      "occupation_levels",
      "states",
      "areas",
      "industries",
      "modeling_presets"
    ]
  }
}

Search a discovered occupation and area

Run mode: "filters" first to discover occupation, level, industry and area values. Copy each returned area's area_name and normalized_area_name together; both arrays are required and must have the same number of values.

{
  "tool": "BLS_Occupational_Wage_Data",
  "arguments": {
    "mode": "search",
    "occupation_name": ["<returned_occupation_name>"],
    "area_name": ["<returned_area_name>"],
    "normalized_area_name": ["<returned_normalized_area_name>"],
    "fields_to_return": ["items", "summary"],
    "item_fields_to_return": ["occupation_name", "occupation_level", "area_name", "rate", "series_year"]
  }
}

When industry matters, either mode accepts naics_category_ids: ["<govtribe_naics_category_id>"]. GovTribe resolves those IDs to NAICS codes and merges them with any industry_code values. If a narrow industry and location produce sparse results, retry with industry_code: ["000000"] for All Industries, omitting the narrower industry inputs; label the broader basis in the analysis.