Washington Prevailing Wage - Projects, Rates & Hours
Pricing
from $0.03 / 1,000 washington prevailing-wage records
Washington Prevailing Wage - Projects, Rates & Hours
Washington L&I public-works prevailing-wage records: 356,307 projects, 2,044,717 intent lines (filed rates and planned headcount) and 2,857,574 affidavit lines (hours actually paid). Profile a project or aggregate by agency, contractor, county, trade or year.
Pricing
from $0.03 / 1,000 washington prevailing-wage records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Features
Share
Washington Prevailing Wage - 356,307 Projects, Rates & Hours
Every public-works prevailing-wage filing Washington State's Department of Labor & Industries publishes, in one schema:
- 356,307 filed projects - awarding agency and category, prime contractor and UBI, contract number, type and amount, bid-due, award and completion dates, and the final apprentice / OMWBE utilisation figures.
- 2,044,717 intent lines - the hourly rate, fringe rate and the number of workers a contractor intends to use, per project, trade and county. (The source column is literally "Number of Workers"; intent lines do not publish hours.)
- 2,857,574 affidavit lines - the hours and rates actually paid, per project, trade, job classification and county.
Award dates run to 27 October 2026; the newest awards are in the file. Corpus counts are measured 10 November 2026 and move as L&I publishes.
Low cost
From $0.00005 per record, down to $0.00003 at Gold. Pay only for the records you receive - the full 4.9 million wage lines and 356k projects stay queryable, and you are never billed for the scan behind it.
What you get
Projects carry the whole filed record: agencyName, agencyCategory
(School District, City, County, State Agency, Public Utility District, ...),
contractorName, contractorUbi, projectName, contractNumber,
contractType, contractAmount, bidDueDate, awardDate,
workCompletedDate, federalFunded, housingAct,
apprenticeUtilizationRequired, apprenticeUtilization, omwbeUtilization,
journeylevelHours, apprenticeHours, totalHours, journeylevelWages,
apprenticeWages, totalWages, femaleHours/femaleUtilization,
minorityHours/minorityUtilization, veteranHours/veteranUtilization,
incentiveAmount, penaltyAmount, numberOfContractors, bondWaived,
retainageAmt.
Intent lines carry intentTrade, intentClassification, intentCounty,
intentHourlyRate, intentFringeRate, intentWorkers (planned headcount -
the source's "Number of Workers", not hours).
Affidavit lines carry affidavitTrade, affidavitClassification,
affidavitCounty, affidavitHourlyRate, affidavitFringeRate,
affidavitHours.
Every record also carries projectId, corpus, mode and totalMatched.
This is the filed project and wage-line register. It is not L&I's official prevailing-wage rate determination schedule; the rates here are the ones a contractor filed on a project.
Search it
- Contractor -
contractor="kiewit"(17 projects). - Agency -
agency="SEATTLE, CITY OF","school district","county". - UBI -
ubi="..."for one firm's exact state business identifier. It is stored numerically, so 911 rows carry an 8-digit UBI (leading zero dropped). - Contract window -
awardFrom="2026-01-01", awardTo="2026-12-31". - Dollar band -
minAmount=1000000. - One project's lines -
corpus="affidavits", projectId="952101"matches 1,468 affidavit lines (the defaultmaxResults=50delivers 50; raise it for all). - County and trade -
corpus="affidavits", county="King", trade="Electrician"(65,155 lines). County names are the file's own spelling - use"King", not"King County". - Rate floor -
corpus="intents", minRate=80.
Example inputs
Largest public-works contractors by project count
{ "mode": "aggregate", "corpus": "projects","groupBy": "contractor", "metric": "count" }
That aggregation returns all 12,743 contractor groups (one billed record
each). groupBy="agency" is smaller at 2,825 groups.
Federally funded projects awarded since 2026
{ "corpus": "projects", "federalFunded": true,"awardFrom": "2026-01-01", "maxResults": 100 }
One project, with intent and affidavit totals
{ "mode": "profile", "projectId": "952101" }
King County electrician affidavit lines
{ "corpus": "affidavits", "county": "King","trade": "Electrician", "maxResults": 100 }
Aggregate it
mode="aggregate" with groupBy and metric:
{ "mode": "aggregate", "corpus": "affidavits","groupBy": "county", "metric": "hours" }
- Projects -
groupBy=agency(default),contractor,agencyCategory,contractType,awardYear;metric=count,amount(contract dollars),hours,wages. - Intent lines -
groupBy=trade(default),county,classification;metric=count,workers(summed headcount),avgRate. - Affidavit lines - same dimensions;
metric=count,hours(hours actually worked),avgRate.
Measured today: MCKINSTRY CO LLC 8,286 projects, JOHNSON CONTROLS FIRE PRTTN LP 4,039, PACIFIC POWER GROUP LLC 3,266; BELLEVUE, CITY OF 6,628 projects, FISH AND WILDLIFE, WASH STATE DEPT OF 4,350; King County 869,286 affidavit lines and Pierce 271,775. Names are exactly as the file spells them.
Coverage and boundaries
- Washington State only. L&I publishes Washington public-works filings.
- Row grain differs by corpus: a project record is one filed project; an
intent or affidavit record is one project / trade / classification / county
line. The record's
corpusfield says which one you received. intentIdandaffidavitIdare filing references, not unique line keys - the same reference appears on several trade/classification lines.- The two line corpora carry no agency or contractor columns - that is how
L&I publishes them. Join them to projects by
projectId, or usemode="profile"for one project's combined totals. - The
tradevocabularies differ between intents (260 values) and affidavits (1,697 values); they are not the same column renamed. - Amounts are as filed: 42,826 small-works records carry a blank amount (the file has no zero-amount projects).
- The three checkbox filters (
federalFunded,housingAct,apprenticeUtilizationRequired) treatfalseas "not marked": unchecked is published as null (76% ofhousing_act), sofalsematches false or null. - Billing: every delivered record is one
wage-record, including each aggregate row. On an aggregate row,totalMatchedis the number of matching records, whilegroupCountis that group's count or sum. Arowsquery delivers at most 5,000 records (maxResults, itself capped there); an aggregate returns every group the dimension has (projectcontractor= 12,743 groups), so scope it with filters. WhenmaxResultsor the run-level charge cap stops a rows query, the dataset also carries one unbilled_metarow withtruncated,delivered(a lower bound whenstopReason="charge-limit"),totalMatchedandstopReason. mode="profile"always reads the project corpus; it rejects a differentcorpusrather than silently ignoring it.sourceUpdatedAtis the source dataset's last update date from the portal metadata (newest award date if the metadata is unavailable).- About half of the line rows have no project record. L&I's project corpus
covers intents filed on/after 1 July 2019 (its project ids start at 885,960),
while the line files go back further: 1,102,450 of 2,044,717 intent lines
(53.9%) and 1,344,424 of 2,857,574 affidavit lines (47.0%) point at an older
id.
mode="profile"still returns their line counts and hours/headcount, withprofileProjectFound=falseand empty project fields, rather than pretending the project does not exist. housingAct=falsematches 355,107 of 356,307 projects because the unchecked state is published as null (269,726 rows) andfalseis treated as "not marked", i.e. false or null. The same rule applies tofederalFundedandapprenticeUtilizationRequired.
Source and licence
Washington State Department of Labor & Industries, published on the Washington open data portal (public records).