Occupation Salary by Metro
Pricing
Pay per event
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
Maintained by CommunityActor 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
sourceswith as-of dates and a data notice
Price
Pay per event, no subscription:
| Event | Price |
|---|---|
| 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}
| Field | Meaning |
|---|---|
occupations | SOC codes (15-1252) or occupation names (Software Developers) |
metros | Metro slug, MSA code or name fragment (san-jose, 41940, Dallas). Leave empty for the top metros by filing volume |
maxMetrosPerOccupation | When no metros are given, how many top metros to return (default 5, max 50) |
maxItems | Safety 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
Related
- H-1B Employer Wage Lookup: percentiles and an OEWS ratio for a named employer.