← Health board

L&I

Washington Contractor Directory & Leads Scraper (L&I)

Browse all Washington State L&I contractor registrations filtered by county — business name, license type, status, contact info, and principal — from the official open-data registry.

100%golden-diff pass
Run it on Apify verified nightly

Verification

100%golden-diff success
272canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
countystring|null
business_namestring|null
license_numberstring|null
license_typestring|null
statusstring|null
addressstring|null
address2string|null
citystring|null
state_codestring|null
zip_codestring|null
phonestring|null
license_effective_datestring|null
license_expiration_datestring|null
business_typestring|null
specialtystring|null
specialty_2string|null
ubistring|null
primary_principalstring|null
source_urlstring|null
scraped_atstring|null

Sample row

{
  "county": "King",
  "business_name": "SEATTLE ROOFING LLC",
  "license_number": "SEATTRL123AA",
  "license_type": "CONSTRUCTION CONTRACTOR",
  "status": "ACTIVE",
  "address": "1234 Pike St",
  "address2": null,
  "city": "SEATTLE",
  "state_code": "WA",
  "zip_code": "98101",
  "phone": "2065551234",
  "license_effective_date": "2020-01-15T00:00:00.000",
  "license_expiration_date": "2026-01-15T00:00:00.000",
  "business_type": "Limited Liability Company",
  "specialty": "GENERAL",
  "specialty_2": null,
  "ubi": "601234567",
  "primary_principal": "SMITH, JOHN A.",
  "source_url": "https://data.wa.gov/Business/Washington-Contractors/m8qx-ubtq"
}

Inputs

FieldTypeReqDefaultDescription
county string no Return only contractors in this WA county (e.g. 'King', 'Pierce', 'Spokane'). Leave blank to return all counties. Case-insensitive.
counties array no [] Look up many in ONE run instead of starting a run per lookup. Takes the same values as 'County filter'. Combined with 'County filter' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per record returned, not per entry submitted.
statusFilter string no "ACTIVE" Filter by license status. Use 'ACTIVE' (default) for current licenses only, or 'ALL' to include expired and suspended records.
maxResults integer no 500 Hard cap on the number of contractor records returned. A statewide pull can be 75,000+ rows and will time out the default run — set higher deliberately. Default 500.

Pricing

Pay per result (dataset-item) — no charge for empty runs.
Example: 5000 contractor records (typical mid-sized county) at $0.002/result ≈ $10.00.

FAQ

Where does the data come from?

The official Washington State Department of Labor & Industries (L&I) contractor-registration open-data dataset, published on data.wa.gov (Socrata). Public, authoritative, refreshed on business days.

How does the county filter work?

The L&I dataset has no county field. This actor derives county from each contractor's ZIP code using a static WA ZIP→county mapping covering all 39 counties. Contractors with out-of-state or unrecognised ZIP codes will have county=null and won't match a county filter.

How many records does a typical county run return?

It varies by county size. King County alone has tens of thousands of active registrations; rural counties may have a few hundred. Run without a county filter to get the full dataset (~160,000 rows).

Can I get all counties at once?

Yes — leave the county field blank. The actor pulls the full registry and returns all records (or up to your maxResults cap).

What does statusFilter do?

Set to 'ACTIVE' (default) to return only currently licensed contractors. Set to 'ALL' to include expired, suspended, and re-licensed records for a full historical roster.

How am I charged?

Pay per record returned. No charge for runs that return zero records.

Is this personal data?

It's public professional-license data (business and registration records as L&I publishes them); no personal/PII enrichment is added.

How current is the data?

It reflects the L&I open-data registry, which the state refreshes on business days. Expect up to 1–2 business days of lag for recent changes.

Guides & use cases

Related actors