US Contractor License Leads Scraper (Multi-State) avatar

US Contractor License Leads Scraper (Multi-State)

Pricing

from $4.00 / 1,000 license-verified contractor leads

Go to Apify Store
US Contractor License Leads Scraper (Multi-State)

US Contractor License Leads Scraper (Multi-State)

License-verified contractor leads across every US state board on the ARLS platform in one run — NC electrical, NC plumbing/HVAC, NC general contractors, and LA contractors (with board-published emails). Company, license #, class, status, expiry, address, phone. Full-state sweep or targeted search.

Pricing

from $4.00 / 1,000 license-verified contractor leads

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Every US state licensing board on the ARLS platform, in one run. Pull license-verified contractor leads across four state boards — NC electrical, NC plumbing/HVAC/fire-sprinkler, NC general contractors, and Louisiana contractors — from a single actor. Each row carries company, license number, classification, status, expiration, mailing address, phone, and (for Louisiana) the contractor's board-published email, tagged with the board it came from. Pick the boards you want or run all four; sweep whole states or target a city, classification, company, name, or license number. JSON or CSV out, billed per lead.

How it works

How US Contractor License Leads Scraper works

✨ Why use this scraper?

  • Four boards, one job — instead of running four separate actors and stitching the output, pick any combination (or all) and get one merged, boardId-tagged dataset. Perfect for agencies and multi-state outreach.
  • License-verified, not directory-scraped — every lead comes from the board's own registry, so license number, classification, status, and expiry are authoritative at scrape time.
  • Louisiana emails come standard — LSLBC publishes each contractor's contact email on the record; those rows arrive outreach-ready with no enrichment. Optional enrichEmails recovers emails for the other boards.
  • One shared budgetmaxItems is total across boards, so "give me 500 leads across NC + LA" just works; boards run biggest-roster-first until the budget is spent.
  • Active-only by default — Expired / Terminated / Not Active records are dropped before you pay for them.
  • Everything the per-state actors do — full-state sweeps, classification filters, company/name/license/phone search, qualifier & classification-holder people, technician→employer links (plumbing), and new-license monitoring — all through one engine.
  • Zero setup — US residential proxy is built in; every board is a public registry, no login or CAPTCHA.

🗺 Boards covered

boardIdBoardStateNotable
ncbeecBoard of Examiners of Electrical ContractorsNCQualifier decision-makers
ncphfscPlumbing, Heating & Fire Sprinkler ContractorsNC24 classifications; technician→employer links
nclbgcLicensing Board for General ContractorsNC31 classifications; big roster
lslbcState Licensing Board for ContractorsLABoard-published emails

This is the complete current ARLS-platform contractor roster. New boards are added as configs the moment they appear.

🎯 Use cases

WhoWhat they do with it
Suppliers & distributorsOne call/email list of active licensed contractors across every covered state and trade
SaaS & fintech selling to tradesFeed license-verified accounts into outbound; qualifyByPayment flags who transacts online
Insurance, bonding & lendingBulk-verify license status + expiration before quoting, across states
Agencies & data resellersOne run → a multi-state, board-labeled dataset to segment and deliver
GCs & developersVerify subs' licenses in bulk from a license-number list against every board at once

📥 Supported inputs

ModeInputBehaviour
Board selectionboards: ["ncbeec", "lslbc"]boardId, state code (NC → all NC boards), or trade fragment (electrical). Empty = all four
Full sweep (default)(empty)Each selected board sweeps its own state's city list
City sweepcities: ["Charlotte", "New Orleans"]Exact mailing-city match, applied to every selected board
Classification filterclassifications: ["residential"]Resolved per board — matches whichever boards have it
Company / Name / License / PhonecompanyNames, lastName, licenseNumbers, phoneNumberTried on every selected board

🔄 How it works

  1. Resolves the board list from your boards selection (or all four).
  2. Runs each board through one shared engine — the engine adapts per board (different form fields, active-detection, classification slicing, native-email parsing) from a single config, so all four run the same code path.
  3. Filters inactive licenses and duplicates per board before any detail fetch.
  4. Fetches each license's detail — company, address, phone, status, expiry, classifications, qualifiers/holders, and (LA) the board email.
  5. Optionally enriches rows without a board email (website + contact-email discovery).
  6. Pushes one merged dataset — one row per license, each tagged with boardId, stateCode, and trade, sharing one maxItems budget.

⚙️ Input parameters

FieldTypeDefaultDescription
boardsarray[] → allWhich boards to run (boardId / state / trade)
citiesarray[] → full sweepMailing-address cities, applied to every board
classificationsarray[] → allPer-board classification filter (label / fragment / code)
activeOnlybooleantrueDrop licenses not in good standing before fetching
companyNames / lastName / firstName / licenseNumbers / phoneNumberTargeted searches, tried on every selected board
enrichEmailsbooleanfalseWebsite + email discovery for rows lacking a board email
qualifyByPaymentbooleanfalsePayment-processor detection (needs enrichEmails)
monitoringModebooleanfalseOnly licenses not delivered on previous runs (tracked per board)
maxItemsinteger500Total lead cap, shared across boards
maxConcurrency / searchConcurrencyinteger10 / 3Parallel detail fetches / roster searches

📊 Output overview

One row per license, merged into a single dataset regardless of how many boards ran. Every row carries boardId, stateCode, and trade so you can split or filter downstream. Fields that only some boards expose (boardEmail, parentLicensees, classificationHolders, qualifiers, activeClassifications) are present where the board provides them and null/empty elsewhere.

📦 Output sample

Real trimmed row from a live run (Louisiana — note the native boardEmail):

{
"type": "license-lead",
"boardId": "lslbc",
"stateCode": "LA",
"trade": "contractor",
"boardName": "Louisiana State Licensing Board for Contractors",
"licenseNumber": "CL.00689",
"classification": "Commercial License Certificate",
"businessName": "CAMUS ELECTRIC CO., INC.",
"licenseStatus": "Active",
"isActive": true,
"expirationDate": "2028-03-31",
"phone": "(318) 687-1420",
"boardEmail": "jwallace@camuselectric.com",
"contactEmail": "jwallace@camuselectric.com",
"address": { "street": "…", "city": "Shreveport", "state": "LA", "zip": "…", "raw": "…" },
"qualifiers": [],
"classificationHolders": [],
"searchCity": "Shreveport",
"sourceUrl": "https://arlspublic.lslbc.louisiana.gov/Public/Search",
"scrapedAt": "2026-07-24T…"
}

An NC general-contractor row instead carries qualifiers[] and activeClassifications[] (e.g. ["Building", "Residential"]); an NC plumbing row carries classificationHolders[] and, for technicians, parentLicensees[].

🗂 Key output fields

GroupFields
ProvenanceboardId, boardName, stateCode, trade, searchCity, sourceUrl, scrapedAt
LicenselicenseNumber, classification, activeClassifications[], classificationCode, accountType, licenseStatus, statusNote, isActive, expirationDate
BusinessbusinessName, contactName, dbaName, phone, boardEmail, contactEmail, address.{street,city,state,zip,raw}
Peoplequalifiers[], classificationHolders[], parentLicensees[]
Enrichment (opt-in)contactWebsite, emailEnrichment, takesPayments, paymentProcessors, stripeLiveKey, paymentConfidence

❓ FAQ

How is maxItems split across boards? It's a single total budget. Boards run in registry order (NC electrical → NC plumbing → NC general → LA) until the budget is spent, so a small maxItems may not reach every board — raise it, or select specific boards, to guarantee coverage of the ones you care about.

Do all rows have an email? Louisiana rows almost always do (boardEmail, published by the board). The other three boards don't publish emails — turn on enrichEmails to try to recover one from the business's website. contactEmail is always the best available (board email first, enriched second).

Should I use this or the single-state actors? Use this when you want multiple boards in one run or one dataset. If you only ever want one board, the dedicated per-state actors (NC Electrical, NC Plumbing & HVAC, Louisiana) are simpler.

Is this legal to scrape? Every board is a public government licensing registry intended for verification by the public. The actor accesses only those public pages, politely. See the Disclaimer.

💬 Support

🛠 Additional services

Need another state or trade board added, a custom export, or a managed feed into your CRM? New ARLS boards drop in as configs. Reach out via my Apify profile.

🔎 Explore more scrapers

Single-board versions: NC Electrical · NC Plumbing & HVAC · Louisiana. More lead-gen & directory actors: apify.com/memo23.

🤖 For AI Agents & LLM Apps

MCP-ready via the Apify MCP server, or hit it with one API call and read clean JSON. The row schema is stable and flat where it matters (boardId, licenseNumber, businessName, phone, contactEmail, address.city, isActive), so it drops into RAG pipelines, lead-qualification agents, and compliance checks. Agent patterns: "verify this contractor's license across NC and LA" (pass licenseNumbers), "active residential contractors in Charlotte and New Orleans with emails" (boards + cities + classifications + enrichEmails), or a scheduled "alert me on newly licensed contractors in any state" loop (monitoringMode).


⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the North Carolina State Board of Examiners of Electrical Contractors, the North Carolina State Board of Examiners of Plumbing, Heating & Fire Sprinkler Contractors, the North Carolina Licensing Board for General Contractors, the Louisiana State Licensing Board for Contractors, the States of North Carolina or Louisiana, or any of their agencies or affiliates. All trademarks are the property of their respective owners.

The scraper accesses only each board's publicly available license-verification pages — no authenticated endpoints and no content behind a login. License data, including any contact email a board publishes, is a public record provided for verification purposes. Users are responsible for ensuring their use complies with applicable law and regulation — including data-protection rules (GDPR, CCPA), telemarketing/e-mail regulations (TCPA, CAN-SPAM) when contacting leads, and any obligations of their own organisation.


SEO Keywords

us contractor license leads, multi-state contractor leads, contractor license lookup api, nc electrical contractor leads, nc plumbing hvac contractor leads, nc general contractor leads, louisiana contractor leads, contractor leads with email, state licensing board scraper, arls license verification, licensed contractor database, contractor license verify bulk, home services leads scraper, multi-board license scraper, newly licensed contractors alerts, contractor license monitoring, b2b construction leads, charlotte contractors, new orleans contractors, apify contractor leads