Washington Prevailing Wage - Projects, Rates & Hours avatar

Washington Prevailing Wage - Projects, Rates & Hours

Pricing

from $0.03 / 1,000 washington prevailing-wage records

Go to Apify Store
Washington Prevailing Wage - Projects, Rates & Hours

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

Wenhao Yang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Features

Limited permissions

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 default maxResults=50 delivers 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 corpus field says which one you received.
  • intentId and affidavitId are 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 use mode="profile" for one project's combined totals.
  • The trade vocabularies 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) treat false as "not marked": unchecked is published as null (76% of housing_act), so false matches false or null.
  • Billing: every delivered record is one wage-record, including each aggregate row. On an aggregate row, totalMatched is the number of matching records, while groupCount is that group's count or sum. A rows query delivers at most 5,000 records (maxResults, itself capped there); an aggregate returns every group the dimension has (project contractor = 12,743 groups), so scope it with filters. When maxResults or the run-level charge cap stops a rows query, the dataset also carries one unbilled _meta row with truncated, delivered (a lower bound when stopReason="charge-limit"), totalMatched and stopReason.
  • mode="profile" always reads the project corpus; it rejects a different corpus rather than silently ignoring it.
  • sourceUpdatedAt is 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, with profileProjectFound=false and empty project fields, rather than pretending the project does not exist.
  • housingAct=false matches 355,107 of 356,307 projects because the unchecked state is published as null (269,726 rows) and false is treated as "not marked", i.e. false or null. The same rule applies to federalFunded and apprenticeUtilizationRequired.

Source and licence

Washington State Department of Labor & Industries, published on the Washington open data portal (public records).