A contractor who just got licensed is about to make a lot of buying decisions at once: where to buy lumber and materials, who writes their liability insurance and bond, which estimating and invoicing app to use, and whether to pay for a website or lead service. Reach them in the first few weeks and you are talking to someone who hasn't picked a vendor yet.
States publish those new licenses as open data. This guide shows how to pull a fresh list with the New Contractor Licenses Actor on Apify.
Where the data comes from
The Actor reads two official state sources, both free with no login:
- Washington L&I (data.wa.gov): every registered construction and electrical contractor, with phone, street address, specialty (Roofing, Plumbing, Handyman, Appliances/Equipment and so on), principal name and UBI business number.
- Connecticut (data.ct.gov): Home Improvement Contractor registrations, with business name, business type and city.
The Actor normalizes both into the same fields, keeps only active licenses, and sorts newest first.
Step 1: Configure the input
Open the Actor page and click Try for free. To get roofers licensed in Washington in the last week who have a phone number on file:
{ "states": ["WA"], "daysBack": 7, "keyword": "ROOF", "onlyWithPhone": true, "maxItemsPerState": 100 } The filters are:
-
states:WA,CTor both (the default). -
daysBack, ordateFrom/dateTofor an exact license-date range. -
keyword: matches the business name, or in Washington the specialty, such asROOF,ELECTRICorPLUMB. -
onlyWithPhone: Washington only. -
maxItemsPerState, newest first.
Step 2: Read the output
Here is a real Washington row from a recent run (phone and owner name trimmed for this post):
{ "state": "WA", "licenseNumber": "AARALAA744PT", "businessName": "AAR - ALL APPLIANCE REPAIR LLC", "licenseType": "Construction Contractor", "specialties": ["Appliances/Equipment"], "businessType": "Limited Liability Company", "status": "Active", "licenseDate": "2026-10-30", "expirationDate": "2028-10-30", "city": "Chattaroy", "zip": "99003", "phone": "(509) 688-XXXX", "url": "https://secure.lni.wa.gov/verify/Detail.aspx?LIC=AARALAA744PT", "source": "data.wa.gov" } And a Connecticut row from the same run:
{ "state": "CT", "licenseNumber": "HIC.0707536", "businessName": "USA WILDLIFE & EXCLUSION LLC", "licenseType": "Home Improvement Contractor", "businessType": "Limited Liability Company", "status": "Active", "licenseDate": "2026-10-29", "expirationDate": "2027-03-31", "city": "Plymouth", "zip": "06782-2024", "source": "data.ct.gov" } Other fields include dba, principalName (WA), address (WA) and ubi (WA). Export the dataset as CSV, Excel or JSON.
Step 3: Run it from Python every morning
from apify_client import ApifyClient client = ApifyClient("YOUR_APIFY_TOKEN") run = client.actor("perskekits/new-contractor-licenses").call(run_input={ "states": ["WA", "CT"], "daysBack": 1, "maxItemsPerState": 500, }) for c in client.dataset(run["defaultDatasetId"]).iterate_items(): trades = ", ".join(c.get("specialties") or [c["licenseType"]]) print(c["licenseDate"], c["state"], c["businessName"], c["city"], trades, c.get("phone") or "") Or set a daily schedule in the Apify Console with daysBack: 1 and push new rows into a Google Sheet, HubSpot or Slack through an integration.
Use cases
- Building-material suppliers and lumber yards: open a contractor account before a competitor does.
- Contractor insurance and bonding agents: new registrations need liability coverage and bonds to stay licensed.
- Field-service software (CRM, estimating, invoicing, scheduling): a steady feed of brand-new businesses still choosing their tools.
- Equipment rental: filter by specialty (excavation, roofing, concrete) to match your fleet.
- Accountants, bookkeepers and marketing agencies: new LLCs need books, taxes, websites and Google Business profiles.
Caveats
- In Washington,
licenseDateis the license effective date, which is also reset when a lapsed license is reinstated, so a small share of rows are re-registrations rather than brand-new businesses. - Connecticut rows don't include phone numbers or street addresses.
- These are public records of small businesses, often one person. Keep outreach relevant and respect do-not-call and CAN-SPAM rules.
Want another state added? Leave a comment or open an issue on the Actor page.
