Occupation Salary by Metro avatar

Occupation Salary by Metro

Pricing

Pay per event

Go to Apify Store
Occupation Salary by Metro

Occupation Salary by Metro

Wage percentiles for an occupation in a U.S. metro area: DOL LCA filings next to BLS OEWS, with sources.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Aidan Jones

Aidan Jones

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Occupation Salary by Metro: LCA wage percentiles next to BLS OEWS

Get salary percentiles for an occupation in a U.S. metropolitan area from two official sources side by side: wages certified on H-1B Labor Condition Application (LCA) filings (DOL) and BLS OEWS percentiles for the same occupation and metro. You also get the LCA-to-OEWS ratio and the top filing employers in that metro. It returns the summary, not raw filing rows.

Official data only. Nothing is scraped from any website; the Actor reads a cleaned copy of the DOL and BLS files through a hosted API.

What you get

For each occupation and metro:

  • LCA wage percentiles (p10 to p90) and the number of filings
  • BLS OEWS percentiles, OEWS median and employment
  • ratioToOews: LCA median divided by OEWS median
  • Top employers by filings in that metro
  • sources with as-of dates and a data notice

Price

Pay per event, no subscription:

EventPrice
Actor start$0.005 per start event. Apify bills one start event per GB of memory, minimum one; the default run here uses 512 MB, so one event
Salary record$0.008 per occupation-metro record returned

Combinations with no data come back as status: "not_found" and are free. Example: 20 records cost $0.005 + 20 x $0.008 = $0.165. Set a maximum cost per run in the Apify run options and the Actor stops cleanly when it is reached.

Example input (works as is)

{
"occupations": ["15-1252"],
"metros": ["san-jose", "dallas"],
"maxMetrosPerOccupation": 5,
"maxItems": 200
}
FieldMeaning
occupationsSOC codes (15-1252) or occupation names (Software Developers)
metrosMetro slug, MSA code or name fragment (san-jose, 41940, Dallas). Leave empty for the top metros by filing volume
maxMetrosPerOccupationWhen no metros are given, how many top metros to return (default 5, max 50)
maxItemsSafety cap on records per run (default 200, max 2000)

Example output

Trimmed from a real run of this Actor (the full item also has a notice string and more employers):

{
"query": "15-1252",
"status": "found",
"soc": "15-1252",
"occupation": "Software Developers",
"metro": "San Jose-Sunnyvale-Santa Clara, CA",
"msaCode": "41940",
"filings": 14027,
"lcaWagePercentilesUsd": { "p10": 149365, "p25": 167000, "p50": 191886, "p75": 222820, "p90": 256387 },
"oewsWagePercentilesUsd": { "p10": 138420, "p25": 173650, "p50": 213110, "p75": 226080, "p90": 289150 },
"oewsMedianUsd": 213110,
"ratioToOews": 0.9,
"oewsEmployment": 87350,
"topEmployers": [{ "employer": "Google", "filings": 3213 }, { "employer": "Apple", "filings": 1257 }],
"sources": [
{ "name": "DOL OFLC LCA Disclosure Data FY2026 Q3", "as_of": "FY2026 Q3 release", "url": "https://www.dol.gov/agencies/eta/foreign-labor/performance" },
{ "name": "BLS OEWS May 2025", "as_of": "May 2025", "url": "https://www.bls.gov/oes/tables.htm" }
]
}

A run summary (requested, found, notFound, errors) is saved under the key-value store key SUMMARY.

Data and limits (read this)

  • LCA wages are the bottom of each filing's offered range (WAGE_RATE_OF_PAY_FROM), so LCA medians run low against OEWS, and percentiles are unweighted per filing. In the example above the LCA median is 0.9 of the OEWS median.
  • LCA percentiles describe certified wages for visa filings, not all workers in the occupation. Use the OEWS columns for the general labor market. OEWS percentiles can be missing when BLS suppresses or top-codes an estimate.
  • Coverage is the set of occupation and metro pairs loaded in the data API; live counts are on https://data-api.premed-toolkit.workers.dev/docs
  • Source: U.S. Department of Labor OFLC LCA disclosure data and BLS OEWS (May 2025 estimates), both U.S. government publications. Not legal, immigration, or financial advice. Not affiliated with or endorsed by DOL or BLS.

FAQ

Do I need an API key? No. Press Start.

What is a SOC code? The federal occupation code, for example 15-1252 for Software Developers. You can also type an occupation name; it is resolved by search.

Why is my metro or occupation not found? The pair may not be in the loaded set (see the live counts on the docs page). Try a nearby metro or leave metros empty to get the top metros by filing volume. Not-found is free.

Can an AI agent call it? Yes. Apify exposes Actors as tools through its MCP server (see https://docs.apify.com/platform/integrations/mcp). The output is small and structured. It also works from Make, Zapier, n8n and the Apify API.

I need volume. Use the direct API: free tier (100 calls per month) and paid plans, with plans and docs at https://data-api.premed-toolkit.workers.dev/docs. More tools: https://filedwages.com