Utilities for exploring OFLC prevailing wage level data.
All values are annualized (40 hours x 52 weeks) from the 2026 ALC collection for SOC 15-1252 (Software Developers).
| Region | CBSA | Level I ($/yr) | Level II ($/yr) | Level III ($/yr) | Level IV ($/yr) |
|---|---|---|---|---|---|
| Seattle-Tacoma-Bellevue, WA | 42660 | 117,748.80 | 149,240.00 | 180,710.40 | 212,201.60 |
| New York-Newark-Jersey City, NY-NJ | 35620 | 103,209.60 | 131,996.80 | 160,804.80 | 189,592.00 |
| Austin-Round Rock-San Marcos, TX | 12420 | 90,355.20 | 114,753.60 | 139,152.00 | 163,550.40 |
| San Jose-Sunnyvale-Santa Clara, CA | 41940 | 149,364.80 | 187,740.80 | 226,137.60 | 264,513.60 |
| San Francisco-Oakland-Fremont, CA | 41860 | 135,699.20 | 161,636.80 | 187,574.40 | 213,512.00 |
Lazy loading defers dataset work until a command needs it.
# Suggest SOC codes (outputs JSON suggestions)
python3 wage_cli.py --zip data/current/OFLC_Wages_2025-26.zip \
suggest --search "software developer" --top 3 | jq .
# Let the CLI suggest the SOC code, then run wage-search with the top match.
# The JSON payload includes `socSuggestions`, `selectedSoc`, and `selectedSocSource`.
python3 wage_cli.py --zip data/current/OFLC_Wages_2025-26.zip \
wage-search --collection-type alc --year 2026 \
--soc-search "software developer" --soc-top 3 \
--area 42660 --area-type bls_area | jq .
# Explicit SOC + area discovery examples
python3 wage_cli.py --zip data/current/OFLC_Wages_2025-26.zip \
areas options --state CA --year 2026 | jq .
python3 wage_cli.py --zip data/current/OFLC_Wages_2025-26.zip \
wage-search --collection-type alc --year 2026 \
--soc-code 15-1252.00 --area 41860 --area-type bls_area | jq .wage_cli.py: CLI entry point with SOC suggestion fallback.wage_search/: dataset loader and common helpers shared by the API.fastapi_app.py: FastAPI server exposing the same operations as the CLI.api/: Vercel serverless handlers backed by the shared dataset loader.docs/: Static frontend that consumes the API; configurable viadata-api-base.
The toolkit focuses on the CLI and HTTP interfaces.
- Local stack (API + UI):
uv run uvicorn fastapi_app:app --reloadserves both on http://127.0.0.1:8000. - Static host alternative: run
uv run uvicorn fastapi_app:app --port 8000and, in a second shell,python3 -m http.server --directory docs 4173; setbody data-api-base="http://127.0.0.1:8000"indocs/index.htmlif you serve the UI from another origin. - Vercel preview:
vercel devmirrors the serverless routing used in production, but each API route starts cold so first calls may take several seconds while dependencies install.
- Current archive:
data/current/OFLC_Wages_2025-26.zip - Historical:
data/historical/ - Official download: https://flag.dol.gov/sites/default/files/wdbdatasets/prevailing-wage/OFLC_Wages_2025-26.zip