Washington Contractor Licenses (L&I) with Bond & Insurance
We turn the Washington State L&I contractor license registry into clean JSON records: business name, license number and type, address, phone, UBI, specialty, effective and expiration dates, and status for every licensed contractor in the state. One record is a single license; add principals, bond, insurance or authorized signers as optional joins to see who owns it and whether it is currently bonded and insured.
- Size
- 120,000 licenses (56,306 Active)
- Refresh
- Intraday (varies by table)
- Price
- $3 per 1,000 records
This listing is being published to the Apify Store. If the link is not live yet, contact us and we will run it for you.
Who uses this
Building-material, equipment and tool suppliers
Open accounts with newly licensed contractors the week they get licensed, filtered by city, ZIP or specialty.
Surety and insurance agents
Work renewal leads: licenses expiring next quarter, bonds with a cancellation on file, or policies expiring, each with the contractor's phone and principal name.
Subcontractor marketplaces, GCs and construction lead-gen
Build or refresh a vetted contractor list filtered to Active status, by trade (electrical, plumbing, roofing, HVAC, concrete) and territory.
Lenders, property managers and homeowners' platforms
Check that a contractor is currently Active, bonded and insured before engagement.
Researchers and journalists
Track contractor formation, churn, suspensions and out-of-state entrants.
Sample records
Real records from the source, shown with a subset of the fields. Every run returns the full field set below.
| businessName | licenseNumber | licenseTypeDescription | city | state | status |
|---|---|---|---|---|---|
| AARDVARK GUTTER CLEANING | AARDVGC741N1 | CONSTRUCTION CONTRACTOR | MOSCOW | ID | ACTIVE |
| AAA PUMP & WELL DRILLING | AAAPUPW78497 | ELECTRICAL CONTRACTOR | MONROE | WA | ACTIVE |
| 3 MOUNTAINS HOME SERVICES | 3MOUNHS744JH | PLUMBING CONTRACTOR | MILWAUKIE | OR | ACTIVE |
Three Active licenses from tests/fixtures/generalRows.sample.js, a real committed 2026-08-23 sample of the General dataset, run through src/parse.js normalizeGeneralRow with no join input, the flat shape a default run delivers. primaryPrincipalName is withheld here because it names a natural person; all other values are unchanged.
Fields
The most used fields in each record. The Apify listing documents the full output schema.
- licenseNumber
- L&I's contractor license number, the unique identifier joined across all five source tables.
- businessName
- The licensed business name, as published by L&I.
- licenseTypeDescription
- Construction, electrical, plumbing or elevator contractor, decoded from the license type code.
- status
- Decoded license status: ACTIVE, EXPIRED, SUSPENDED, OUT OF BUSINESS, INACTIVE, RE-LICENSED and others L&I publishes.
- licenseExpirationDate
- When the license expires.
- daysUntilExpiration
- Days remaining to expiration, counted from the run date; negative once expired.
- specialtyDescription1
- The contractor's primary trade specialty, for example GENERAL, ROOFING, HVAC/R, or PUMP & IRRIGATION.
- primaryPrincipalName
- The primary owner on file for the license, present without any join.
- currentBond
- The bond in force on the run date, with firm, amount and expiration; attached when the run requests join: bond.
- currentInsurance
- The insurance policy in force on the run date, with carrier, amount and expiration; attached when the run requests join: insurance.
How it works
1
Run it on Apify
Open the listing, sign in to Apify, and press Start. The actor reads the public source directly, normalizes each record, and writes the results to your Apify dataset. You can also schedule it to run on a cadence.
2
Filter to what you need
- •effectiveWithinDays: licenses effective in the last N days, default 30. 0 disables the window and searches the whole registry; ignored when an effective-date range, license number or UBI is given.
- •effectiveDateFrom / effectiveDateTo: explicit effective-date range that replaces the N-day window.
- •expirationDateFrom / expirationDateTo: licenses expiring in this range, for renewal leads.
- •status: active (default), expired, suspended, outOfBusiness, inactive, reLicensed, or any.
- •licenseType: CC construction, EC electrical, PC plumbing, LC elevator; default any.
- •specialty: an L&I specialty code (e.g. 01 GENERAL, CD ROOFING, SM HVAC/R) or a word from the description; matches either specialty slot.
- •city: case-insensitive exact match on the address city.
- •zip: ZIP prefix, e.g. 981 for Seattle-area ZIPs.
- •state: two-letter state of the mailing address; the registry includes out-of-state contractors licensed in Washington.
- •businessName: case-insensitive substring on the business name.
- •licenseNumber: one license exactly; disables the N-day window.
- •ubi: nine-digit Washington UBI; disables the N-day window.
- •join: any of principals, bond, insurance, signers, default none; each adds that data to every matching record at no extra charge.
- •maxResults: 1 to 50000, default 100; this is your cost cap.
- •includeRaw: attach the untouched data.wa.gov rows under their L&I column names, default false.
3
Export or connect
Download the dataset as CSV, JSON, or Excel from the Apify console, or pull it straight into your own system through the Apify API and integrations.
Default run with no input returns the 100 most recently effective Active licenses from the last 30 days, reading only the General dataset (m8qx-ubtq); that took 6.71 seconds on a live platform smoke run 2026-08-23. The three sample rows above are that un-joined shape, so they carry only the General table. Optional join input attaches principals (4xk5-x9j6), bond (bzff-4fmt), insurance (ciwg-agsx) and authorizedSigners (s7ge-wicw) from four more L&I tables; each requested join adds two health-check requests plus at least one request per 100 licenses. A run delivers up to 50,000 records per call (about $150 at list price); to retrieve more, split the job by date range or ZIP prefix across runs. A search that matches nothing is free.
Pricing
$3 per 1,000 records
Pay per result, billed through your Apify account at $0.003 per record. You are charged only for the records the run delivers to your dataset, so a filtered run that matches nothing costs nothing. No subscription, no minimum.
Source, refresh, and licence
- Source
- Washington State Department of Labor & Industries (L&I): L&I Contractor License Data - General
- Size
- 120,000 rows in the General dataset (m8qx-ubtq), of which 56,306 are Active (45,713 Expired, 7,191 Suspended, 7,029 Re-Licensed, 3,567 Out of Business, and smaller counts for Inactive, Superceded, Passed Away, Restored and Revoked), counted 2026-08-23. The 120,000 figure is a round number; whether L&I caps the export is not stated in the dataset metadata, so it is reported as published.
- Refresh
- The General and Insurance datasets' own notes say "L&I Contractor Contractor Data is updated thee times per day: 7:30 a.m., 12:15 p.m., 5:15 p.m." (typo in the original); the Principal and Signer datasets state a daily 7:30 a.m. posting. All five datasets showed a rowsUpdatedAt of 2026-08-23 when read that day.
- Licence
- General and Principal carry PDDL (Open Data Commons Public Domain Dedication and License); Insurance and Signer carry Public Domain; the Bond dataset's own metadata carries no licence field at all, though it is public-records data on the state's official open-data portal. All five state the attribution "Labor & Industries" and link to L&I's public Verify a Contractor service.
- Attribution
- Washington State Department of Labor & Industries
Questions buyers ask
How do I do a Washington contractor license lookup in bulk?
Set effectiveWithinDays to 0, status to any, and whatever narrows it (city, ZIP, specialty, name), or pass licenseNumber or ubi for one contractor. Every record carries the L&I license number, UBI, status, and effective and expiration dates.
Can I check whether a Washington contractor is bonded and insured?
Yes. Add join: bond and insurance. currentBond and currentInsurance are the instruments in force on the run date, with firm, amount and expiration; bonds and insurancePolicies carry the full history, including cancellations and impaired bonds.
How do I get a list of newly licensed contractors in Washington?
That is the default run: Active licenses effective in the last 30 days, newest first. Set effectiveWithinDays to 7 and schedule the actor weekly for a rolling new-contractor feed.
Related datasets
NYC DOB Permits: Approved Permits with Contractor & Owner
We turn NYC's DOB NOW approved-permits feed into one clean record per permit issuance: the licensed contractor with licence type and number, the building owner, the work type and job description, and the address, BIN, block and lot, plus approval, issue and expiry dates.
Business registriesConnecticut Business Registry: New Registrations with Email, NAICS & Principals
We turn newly registered Connecticut businesses from the Secretary of the State registry into one clean lead record per business, with a published email address, a NAICS code, and the registry's own ownership survey flags, never guessed or enriched.
Pull the data you need
Run it yourself on Apify, or ask us for a custom extract, a join against another dataset, or a scheduled delivery.
We are not affiliated with or endorsed by Washington State Department of Labor & Industries (L&I). The actor reads the public dataset linked above and adds no data of its own.