Washington Contractor License Lookup & Leads (L&I)
Pricing
from $8.00 / 1,000 washington contractor records
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
Maintained by CommunityActor 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.
| Field | What it contains |
|---|---|
businessName, licenseNumber, ubi, recordId | Registered business name, L&I license or registration number (for example CASCAAL756KO), nine-digit UBI, and a stable record key built from both |
contractorType, licenseType, licenseTypeCode | L&I type, for example Construction Contractor / CC |
registrationStatus, isActiveRegistration | Status such as ACTIVE, and true when it is active |
effectiveDate, expirationDate, suspendDate | Registration dates as L&I prints them (MM/DD/YYYY) |
businessPhone, address1, address2, city, state, zipCode, county | Business phone and mailing address; county is OUT OF STATE for registrants based elsewhere |
businessOwners | Up to 20 owners or officers with name, role and endDate |
bondHistory | Up to 5 bonds: suretyName, amountUsd, dates, impaired |
insuranceHistory | Up to 5 liability policies: insurerName, amountUsd, dates, impaired |
workersCompAccountCurrent | true or false when L&I shows a workers' comp account status, otherwise null |
hasSafetyViolation, hasLicenseViolation | Violation flags from the L&I search results |
detailFetched, sourceUrl, sourceSearchUrl, scrapedAt | Whether 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:
searchType | What to enter |
|---|---|
NAME | Part of a business or owner name, 2–32 characters, for example Cascade |
LICENSE | A contractor registration or tradesperson license, for example CASCAAL756KO |
UBI | Exactly 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 exampleSEATTLE) andzipCode(five digits; ZIP+4 values match on the first five).activeRegistrationOnly(defaulttrue) andactiveWorkersCompOnly(defaultfalse).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:
- You need licensed contractors from several states in one run: Contractor License Leads (Washington, California, Texas).
- You need Oregon contractors: Oregon CCB Contractor License Scraper.
- You need Tennessee general contractor licenses with monetary limits: Tennessee Contractor License Lookup.
- You need trade leads with verified emails and websites rather than state registry data: Contractor Leads Scraper.
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 ApifyClientclient = 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.
| Event | FREE | BRONZE | SILVER | GOLD / PLATINUM / DIAMOND |
|---|---|---|---|---|
| Washington contractor record (one dataset row) | USD 0.010 | USD 0.00975 | USD 0.0095 | USD 0.008 |
| Actor start (per started GB of allocated memory) | USD 0.005 | USD 0.005 | USD 0.005 | USD 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
sourceUrlbefore hiring, licensing or credit decisions. - Failures: if a detail record fails, the row is kept with
detailFetched: falseonly when its search fields still satisfy your filters; three detail failures in a row stop the run. A blocked or unavailable source ends asBLOCKEDorFAILEDwith 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.
Related Actors
Contractor and license data from the same developer:
- Tennessee Contractor License Lookup for TDCI status, classifications and monetary limits
- Oregon CCB Contractor License Scraper for Oregon licenses with bond and insurance details
- Contractor License Leads for Washington, California and Texas license searches
- Louisiana Contractor License Lookup for LSLBC status and contacts
Legal and compliance
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