Query AI Infrastructure Employment (data centers + semiconductors)
query_ai_infrastructure_employment_v1Query verified U.S. employment, establishments, and wages — total and by industry (data centers, semiconductors, construction, retail, accommodation, food service) — for any county, state, or the nation, from the U.S. Bureau of Labor Statistics' Quarterly Census of Employment and Wages (QCEW).
Use this for two families of questions: (1) "how many people work in / how many establishments / what wages in data centers or chip fabs" — INDUSTRY employment, not an "AI jobs" count; and (2) the place-based question — "what happened to a county's employment, wages, construction, or local economy (e.g. during and after a data-center / fab buildout)": total covered employment plus the buildout-phase and induced-sector series for every US county, quarterly since 2014.
Filter by industry_code — each code lives at ONE aggregation depth, shown here with its agglvl codes
(national/state/county):
"10" Total, all industries — every covered job (agglvl 10/50/70 = all ownerships combined;
11/51/71 = split by ownership)
"23" Construction (sector; 14/54/74)
"44-45" Retail trade (sector; 14/54/74)
"721" Accommodation (3-digit; 15/55/75)
"722" Food services & drinking places (3-digit; 15/55/75)
"236220" Commercial & institutional building construction (6-digit; 18/58/78)
"518210" Computing infrastructure / data processing / web hosting — the data-center industry
(6-digit; 18/58/78)
"334413" Semiconductor & related device manufacturing (6-digit; 18/58/78)
agglvl's first digit is geography (1 national / 5 state / 7 county); pick ONE industry_code and the
matching agglvl for its depth to get a clean additive scope. Also filter by own_code ("5" = Private —
the usual one; "1"/"2"/"3" = federal/state/local government; "0" = Total Covered, only on industry
"10"), geography (state USPS e.g. "VA", county_fips 5-digit e.g. "51107" Loudoun County, or
area_fips), and time (year, qtr "1"-"4", the quarter ISO first-of-quarter e.g. "2025-10-01", or
a quarter_from/quarter_to range). Group by any of industry, industry_code, ownership,
own_code, state, county_fips, agglvl, year, qtr, or quarter. Pass each parameter as a
top-level key of params (flat — not nested under a filter/where key). Examples:
{"industry_code": "518210", "own_code": "5", "agglvl": "18", "quarter": "2025-10-01"} — the national
private data-center-industry figure; {"industry_code": "10", "own_code": "0", "agglvl": "70", "county_fips": "51117", "group_by": ["quarter"], "quarter_from": "2014-01-01"} — total employment in
Mecklenburg County VA, quarterly (the "did the buildout move the county" series); swap
"industry_code": "23", "own_code": "5", "agglvl": "74" for its construction sector. Returns JSON
aggregates with citations and optional row-level records when include_records is true — every value
cites the exact BLS file, row, and quarter.
Measures: qtrly_estabs (establishments), month1_emplvl/month2_emplvl/month3_emplvl (employment
in each month of the quarter — intra-quarter SNAPSHOTS; average them for a quarterly figure, never sum
them), total_qtrly_wages ($), and avg_wkly_wage ($, on detail records). Industry series are
DISTINCT and NESTED: "10" contains the sectors, "23" contains "236220" — never sum across industry
codes (each depth has its own agglvl, so a mixed-depth scope draws the qcew_hierarchy note).
WHERE JOBS ARE COUNTED: at the employer's ESTABLISHMENT, not the work site. A construction crew building in county X for a contractor based in county Y counts in county Y — so a county's construction series understates on-site buildout labor staffed by outside contractors.
SUPPRESSION: BLS withholds a confidential (small county × industry) cell by zeroing its employment and
wages and marking disclosure_code "N" (or "-"). Those are served as NULL (absent), never as zero —
the establishment count is still shown. Roughly half of county × data-center cells are withheld ("10"
and sector-level cells are rarely withheld); an absent value means "BLS withheld it," not "no jobs."
A scope containing withheld cells returns a qcew_suppression note counting them: sums skip the
NULLs, so summed employment/wages UNDERCOUNT — for a state or national figure use BLS's own row at
that level (agglvl 5x/1x) instead of summing finer cells.
Data is quarterly back to 2014 Q1, ~6-month lag (latest ≈ 2025 Q4). The response as_of is the release
vintage; pin as_of to reproduce an earlier vintage.
NAICS VINTAGE: each year is served exactly as BLS coded it — 2014-2021 under NAICS 2017, 2022Q1-forward under NAICS 2022; BLS never recodes history. The 2022 revision REDEFINED 518210 (retitled to "computing infrastructure providers…"), so a 518210 series crossing 2022Q1 mixes two definitions — a level shift at that boundary (e.g. Loudoun County VA: −45% in one quarter) is establishment reclassification, not jobs lost. Compare 518210 within one vintage side of 2022Q1, or say so when crossing it.
NOT additive across hierarchy or time: counts and employment are additive across distinct AREAS within
ONE agglvl + ONE own_code + ONE quarter (e.g. all counties in a state). They are NOT additive across
geographic levels (national already contains states/counties — a qcew_hierarchy note flags it), across
industry depths ("10" contains the sectors and 6-digit codes), across ownership totals ("0"/"8" contain
their components), or across QUARTERS (employment is a per-quarter stock — a qcew_period note flags
it; quarterly wages, by contrast, sum across quarters into an annual bill). Filter or group_by to avoid
double-counting.
Does not determine "AI jobs" or a data-center-only headcount (NAICS 518210 is the broader computing-infrastructure / hosting industry), jobs at the work SITE (counted at the employer's establishment — see above), a definition-constant 518210 series across 2022Q1 (the NAICS vintage break — see above), industries beyond the eight pinned series (e.g. electrical contractors 238210 — largely absent/suppressed at county grain), employment for a withheld cell (served absent), occupation or job-title detail (QCEW is industry, not occupation), which company employs (no employer breakdown), or MSA / metro figures (national / state / county only).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||