← 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 — or look one up by licence number or name, from the official open-data registry.

95%golden-diff pass
Run it on Apify → verified nightly

Verification

95%golden-diff success
43canary 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

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
mode string no "auto" auto (default): a licence number or name below runs a lookup, none runs the statewide export. lookup: find licences by L&I licence number (exact) or business / principal name (contains). export: the filters below, names ignored.
queries array no [] Look up many in ONE run: each value is matched as an exact L&I licence number and as a business-name substring, every status. Rows come back in the lookup's shape.
query string no — One value; same as the list above.
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 — 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. Unset: 500 per export run; 50 per lookup value.
licenseTypes array no [] Words from the licence type or specialty, any of them, e.g. 'plumbing', 'electrical', 'roofing'.
statuses array no [] L&I statuses, e.g. ACTIVE, EXPIRED, SUSPENDED, or ALL. One status is the same as 'Status filter'; several return every row with one of them. On a lookup it filters the matches.
status string no — One status; same as Statuses.
expiresAfter string no — Only licences expiring on or after this date (YYYY-MM-DD). With 'Expires on or before' it lists licences due for renewal in a window. Works on exports and lookups.
expiresBefore string no — Only licences expiring on or before this date (YYYY-MM-DD).
proxyConfiguration object no {"useApifyProxy":false} Optional. data.wa.gov is reachable directly; a proxy is not needed.

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.

Lookup or export — which do I use?

Lookup when you have L&I licence numbers or business names: put them in 'Licence numbers or names' (statewide, every status). Export when you want a list: leave that empty and pick counties, status and licence types. 'Mode' can force one or the other; the default, auto, decides by whether you gave names or numbers.

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