Washington Contractor License Lookup & Leads (L&I) avatar

Washington Contractor License Lookup & Leads (L&I)

Pricing

from $8.00 / 1,000 washington contractor records

Go to Apify Store
Washington Contractor License Lookup & Leads (L&I)

Washington Contractor License Lookup & Leads (L&I)

Look up Washington contractor licenses in the L&I registry by name, license or UBI: status, phone, address, owners, bond, insurance. USD 10 per 1,000.

Pricing

from $8.00 / 1,000 washington contractor records

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

Share

Washington Contractor License Lookup & Leads searches the Washington State Department of Labor & Industries (L&I) public Verify registry and returns each contractor's registration number, UBI, status, expiration date, business phone, mailing address, county, owners, bond and insurance history, and violation flags. It is built for general contractors vetting subcontractors, suppliers and lead researchers prospecting licensed trades, and insurers and sureties, and costs USD 10 per 1,000 contractor records on the FREE tier (USD 8 per 1,000 on GOLD).

It calls the same public search and detail data the L&I Verify page loads in a browser, with paced requests and no login, cookies import or account.

What does the Washington contractor license lookup return?

Each dataset row is one L&I contractor or tradesperson record, deduplicated by UBI and license number.

FieldWhat it contains
businessName, licenseNumber, ubi, recordIdRegistered business name, L&I license or registration number (for example CASCAAL756KO), nine-digit UBI, and a stable record key built from both
contractorType, licenseType, licenseTypeCodeL&I type, for example Construction Contractor / CC
registrationStatus, isActiveRegistrationStatus such as ACTIVE, and true when it is active
effectiveDate, expirationDate, suspendDateRegistration dates as L&I prints them (MM/DD/YYYY)
businessPhone, address1, address2, city, state, zipCode, countyBusiness phone and mailing address; county is OUT OF STATE for registrants based elsewhere
businessOwnersUp to 20 owners or officers with name, role and endDate
bondHistoryUp to 5 bonds: suretyName, amountUsd, dates, impaired
insuranceHistoryUp to 5 liability policies: insurerName, amountUsd, dates, impaired
workersCompAccountCurrenttrue or false when L&I shows a workers' comp account status, otherwise null
hasSafetyViolation, hasLicenseViolationViolation flags from the L&I search results
detailFetched, sourceUrl, sourceSearchUrl, scrapedAtWhether the detail record was read, the official L&I detail link, search page, UTC time

Birth dates, workers' comp account numbers, bond account numbers and insurance policy numbers are never output. The OUTPUT record shows the outcome (DATA, EMPTY, BLOCKED, REJECTED or FAILED), source matches, rows scanned, pages fetched, detail failures and charged events.

How do I look up a Washington contractor license by name, license number or UBI?

Pick searchType and enter the matching searchTerm:

searchTypeWhat to enter
NAMEPart of a business or owner name, 2–32 characters, for example Cascade
LICENSEA contractor registration or tradesperson license, for example CASCAAL756KO
UBIExactly nine digits, for example 604983168
{
"searchType": "LICENSE",
"searchTerm": "CASCAAL756KO",
"contractorTypes": ["Construction Contractor"],
"activeRegistrationOnly": false,
"maxResults": 1
}

L&I's form rejects punctuation such as periods and colons, so the Actor rejects them too with a clear message. The prefill (NAME, Cascade, active Construction Contractors, 10 results) returned 10 records from 1,433 source matches in about 22 seconds on 2026-10-26.

Can I build a Washington contractor leads list by trade, city or ZIP?

Yes, within a search term. L&I requires a name, license or UBI, so there is no empty statewide export; a common word such as Electric, Roofing or Construction works as a broad name search. Then filter locally:

  • contractorTypes: one or more of 19 L&I types, including Construction, Electrical, Plumbing, Asbestos and Elevator contractors, electricians, plumbers and Manufactured Home Installer.
  • city (exact mailing city, for example SEATTLE) and zipCode (five digits; ZIP+4 values match on the first five).
  • activeRegistrationOnly (default true) and activeWorkersCompOnly (default false).
  • maxPages (1–25, 20 search rows per page) bounds the scan; maxResults (1–100) caps delivered records.
{
"searchType": "NAME",
"searchTerm": "Electric",
"contractorTypes": ["Electrical Contractor"],
"city": "SEATTLE",
"activeRegistrationOnly": true,
"maxResults": 25,
"maxPages": 25
}

Filters run on public results because L&I's own optional filters currently return an error. When filters keep fewer rows than requested, raise maxPages; OUTPUT says when the page cap stopped the scan.

When should I use it, and when not?

Use it when you need Washington L&I registrations with contact and compliance detail: subcontractor prequalification, bond and insurance checks, workers' comp screening, or a phone-and-address lead list of licensed trades in one city.

Use another Actor when:

Use it from an AI assistant

Washington Contractor License Lookup & Leads works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add it with https://mcp.apify.com/?tools=muhammadafzal/washington-contractor-directory-leads-scraper, then ask, for example: "Find 20 active electrical contractors in Tacoma registered with Washington L&I and list their phone, bond amount and insurer."

Run it with the API

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/washington-contractor-directory-leads-scraper').call({
searchType: 'NAME',
searchTerm: 'Roofing',
contractorTypes: ['Construction Contractor'],
zipCode: '98402',
activeRegistrationOnly: true,
maxResults: 20,
maxPages: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((r) => `${r.businessName} ${r.businessPhone} ${r.registrationStatus}`));

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("muhammadafzal/washington-contractor-directory-leads-scraper").call(
run_input={"searchType": "UBI", "searchTerm": "604983168", "activeRegistrationOnly": False, "maxResults": 1}
)
for record in client.dataset(run.default_dataset_id).iterate_items():
print(record["businessName"], record["registrationStatus"], record["expirationDate"])

What does the output look like?

Two records from the 2026-10-26 prefill run, trimmed, with owner names replaced by placeholders:

[
{
"recordId": "ubi:604983168|license:CASCAAL756KO",
"businessName": "CASCADE ARMOR LLC",
"licenseNumber": "CASCAAL756KO",
"ubi": "604983168",
"contractorType": "Construction Contractor",
"licenseTypeCode": "CC",
"registrationStatus": "ACTIVE",
"isActiveRegistration": true,
"effectiveDate": "05/20/2025",
"expirationDate": "05/20/2027",
"businessPhone": "3609752120",
"address1": "21700 NE 147TH ST",
"city": "BRUSH PRAIRIE",
"state": "WA",
"zipCode": "98606",
"county": "CLARK",
"businessOwners": [{ "name": "OWNER, EXAMPLE", "role": "PARTNER/MEMBER", "endDate": null }],
"bondHistory": [{ "suretyName": "Westfield Insurance Co", "amountUsd": 30000, "effectiveDate": "05/19/2026", "expirationDate": "Until Canceled", "cancelDate": null, "impaired": false }],
"insuranceHistory": [{ "insurerName": "Midvale Indemnity Comp", "amountUsd": 1000000, "effectiveDate": "05/01/2026", "expirationDate": "05/21/2027", "cancelDate": null, "impaired": null }],
"workersCompAccountCurrent": null,
"hasSafetyViolation": false,
"hasLicenseViolation": false,
"detailFetched": true,
"sourceUrl": "https://secure.lni.wa.gov/verify/Detail.aspx?UBI=604983168&LIC=CASCAAL756KO&SAW="
},
{
"businessName": "CASCADE AEROBARRIER INC",
"licenseNumber": "CASCAAI813DM",
"ubi": "604350794",
"registrationStatus": "ACTIVE",
"expirationDate": "03/22/2027",
"businessPhone": "2532226559",
"city": "BUCKLEY",
"county": "PIERCE",
"businessOwners": [{ "name": "OWNER, EXAMPLE", "role": "MEMBER", "endDate": null }],
"workersCompAccountCurrent": true,
"detailFetched": true
}
]

Pricing: how much does a Washington contractor record cost?

The Actor uses pay-per-event pricing with platform usage included. Each record written to the dataset is one event; there is no second charge for the same record.

EventFREEBRONZESILVERGOLD / PLATINUM / DIAMOND
Washington contractor record (one dataset row)USD 0.010USD 0.00975USD 0.0095USD 0.008
Actor start (per started GB of allocated memory)USD 0.005USD 0.005USD 0.005USD 0.005

Worked totals on the FREE tier at the default 256 MB memory (one start event):

  • One license check: 1 × USD 0.010 + USD 0.005 = USD 0.015
  • Maximum run, 100 records: 100 × USD 0.010 + USD 0.005 = USD 1.005

A search with no matching records charges only the start fee. The minimum run charge limit is USD 0.015, and the Actor stops before writing a record that the remaining limit cannot cover. OUTPUT.estimatedEventCostUsd is computed from the live event prices for your pricing tier.

What are the limits?

  • Up to 100 records per run from at most 25 search pages (500 search rows).
  • Speed: one detail request at a time, about 350 ms apart; the 10-record prefill took about 22 seconds.
  • Search term required: no statewide export; trade, city and ZIP are filters on top of a name, license or UBI search.
  • Freshness: L&I says the lookup is updated Monday through Friday by 5 a.m. Pacific, and warns records may be inaccurate or not current. Open sourceUrl before hiring, licensing or credit decisions.
  • Failures: if a detail record fails, the row is kept with detailFetched: false only when its search fields still satisfy your filters; three detail failures in a row stop the run. A blocked or unavailable source ends as BLOCKED or FAILED with diagnostics and no invented records.

FAQ

Is this the official Washington L&I contractor lookup?

It reads the official L&I Verify registry and links every record to its L&I detail page. It is an independent tool, not affiliated with or endorsed by L&I.

Does it return phone numbers and addresses?

Yes, the business phone and mailing address L&I publishes on the detail record. It does not return emails, because L&I does not publish them.

Can I check a contractor's bond and insurance?

Yes. bondHistory and insuranceHistory list up to five entries each with company, amount, dates and impaired flags.

Can I search by UBI number?

Yes. Use searchType UBI with exactly nine digits; spaces and underscores are removed first.

Why did I get fewer records than maxResults?

The source had fewer matches, or your type, city, ZIP, active or workers' comp filters removed rows within the scanned pages. Raise maxPages or broaden the term; OUTPUT shows rows scanned and whether the page cap was reached.

Does it include electricians and plumbers?

Yes. Choose tradesperson types such as Electrician, Master Electrician, Plumber or Plumber Trainee in contractorTypes.

Contractor and license data from the same developer:

Washington Contractor License Lookup & Leads reads public L&I records without logging in or bypassing access controls. Records name business owners and publish business phones, so use them only for lawful verification or business outreach, follow L&I's terms and anti-spam and privacy rules, and confirm current registration with L&I before relying on a record. Sources: L&I Verify and L&I lookup guidance.

Last verified: 2026-10-27