All datasets Licensing and permits

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.

businessNamelicenseNumberlicenseTypeDescriptioncitystatestatus
AARDVARK GUTTER CLEANINGAARDVGC741N1CONSTRUCTION CONTRACTORMOSCOWIDACTIVE
AAA PUMP & WELL DRILLINGAAAPUPW78497ELECTRICAL CONTRACTORMONROEWAACTIVE
3 MOUNTAINS HOME SERVICES3MOUNHS744JHPLUMBING CONTRACTORMILWAUKIEORACTIVE

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.

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.