North Carolina Electrical Contractor Leads Scraper (NCBEEC)
Pricing
from $4.00 / 1,000 license-verified electrician leads
North Carolina Electrical Contractor Leads Scraper (NCBEEC)
Scrape license-verified electrician leads from North Carolina's state board (NCBEEC) — business name, license number, class, status, expiry, address, phone, and qualifier decision-makers. Full-state sweep or city/company/license search. Opt-in contact-email finding. JSON or CSV out.
Pricing
from $4.00 / 1,000 license-verified electrician leads
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
License-verified electrician leads, straight from the state board. Every row is pulled live from the North Carolina State Board of Examiners of Electrical Contractors public registry — business name, license number, classification, status, expiration date, mailing address, phone, and the licensed qualifier individuals behind each company. Sweep the whole state or target a city, classification, company, or license number. Opt-in contact-email finding turns registry records into outreach-ready leads. JSON or CSV out, billed per lead.
How it works

✨ Why use this scraper?
- License-verified, not directory-scraped — every lead comes from the board's own registry, so the license number, classification, status, and expiry are authoritative at scrape time.
- Decision-makers included — each company row carries its qualifiers: the named, individually licensed electricians who stand behind the license. That's who signs off the work.
- Active-only by default — Terminated / Not Active / Not Valid records are dropped before you pay for them (turn
activeOnlyoff for compliance or historical research). - Full-state sweep built in — run it with an empty input and it walks a bundled list of ~1,500 NC place names, metro areas first. No URL hunting.
- Opt-in contact emails — the actor discovers each business's own website (search + directory filtering + name-match guard) and harvests a contact email from it. You're only charged when an email is actually found.
- New-license monitoring — flip
monitoringModeon a schedule and each run returns only contractors licensed since your last run: the freshest leads in the state. - Zero setup — US residential proxy is built in; the board's registry is public, no login or CAPTCHA involved.
🎯 Use cases
| Who | What they do with it |
|---|---|
| Trade suppliers & distributors | Build call lists of active licensed electricians by city and classification — with phone, address, and the qualifier names to ask for |
| SaaS & fintech selling to trades | Feed license-verified contractor accounts into outbound; enrichEmails + qualifyByPayment qualify who can actually buy online |
| Insurance, bonding & lending | Verify license status and expiration before quoting; includePublicMatters adds the disciplinary record |
| Recruiters & M&A scouts | Map every Unlimited-classification shop in a metro; monitor newly licensed firms as expansion signals |
| General contractors & developers | Verify subs' licenses in bulk from a license-number list before award |
📥 Supported inputs
| Mode | Input | Behaviour |
|---|---|---|
| Full-state sweep (default) | (empty input) | Walks the bundled NC place list, biggest cities first |
| City sweep | cities: ["Charlotte", "Raleigh"] | Exact match on the licensee's mailing-address city |
| Company search | companyNames: ["electric"] | Board-side substring match on company name |
| Name search | lastName (+ optional firstName) | License-holder name lookup |
| License lookup | licenseNumbers: ["U.00025"] | Direct verification; accepts U.00025 or bare digits |
| Phone lookup | phoneNumber | Phone number on record |
Not supported: other states or boards (this actor covers the NC electrical board — see the fabric note in FAQ), NC general contractors (NCLBGC is a different board), plumbing/HVAC licenses (separate NC board, separate actor).
🔄 How it works
- Builds search jobs from your criteria — or the full-state city list when the input is empty.
- Queries the board's live roster for each job and parses the result rows (license #, classification, holder, standing).
- Filters inactive licenses (default), unwanted classifications, and duplicates — before any per-lead fetching, so you never pay for records you filtered out.
- Fetches each license's detail record — name, DBA, address, phone, status, expiry — plus its qualifier individuals, in parallel.
- Optionally enriches: discovers the business's own website (search-engine + directory blocklist + name-match guard) and scrapes a contact email from it;
qualifyByPaymentadditionally detects Stripe/e-commerce signals. - Pushes one row per license to the dataset — qualifiers and enrichment merged inline.
⚙️ Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
cities | array | [] → full sweep | NC mailing-address cities, matched exactly |
classifications | array | [] → all | Any of the 10 board classifications (label, fragment like unlimited, or numeric code) |
activeOnly | boolean | true | Drop licenses not in good standing before fetching |
companyNames | array | — | Substring company-name searches |
lastName / firstName | string | — | License-holder name search |
licenseNumbers | array | — | Direct license lookups |
phoneNumber | string | — | Phone-number search |
includePublicMatters | boolean | false | Fetch disciplinary records per licensee (+1 request each) |
enrichEmails | boolean | false | Website discovery + contact-email harvesting |
qualifyByPayment | boolean | false | Payment-processor detection (needs enrichEmails) |
monitoringMode | boolean | false | Only licenses not delivered on previous runs |
resetMonitoringState | boolean | false | One-shot: clear the monitoring baseline |
maxItems | integer | 500 | Hard cap on leads |
maxConcurrency | integer | 10 | Parallel detail fetches |
searchConcurrency | integer | 3 | Parallel roster searches |
📊 Output overview
One dataset row per license. The row merges the roster entry, the board's detail record, the qualifier list, and (when enabled) email enrichment — there are no separate or padding rows. isActive is computed from the authoritative detail status, and searchCity records which sweep query surfaced the lead.
📦 Output sample
Real trimmed row from a live run:
{"type": "license-lead","stateCode": "NC","trade": "electrical","boardId": "ncbeec","boardName": "North Carolina State Board of Examiners of Electrical Contractors","licenseNumber": "U.00025","classificationCode": "U","classification": "Unlimited Classification License","businessName": "Interstate Electric Company LLC","dbaName": null,"licenseStatus": "Active","statusNote": null,"isActive": true,"expirationDate": "2027-02-28","phone": "(704) 333-7149","address": {"street": "4241 Taggart Creek Road","city": "Charlotte","state": "NC","zip": "28208","raw": "4241 Taggart Creek Road, Charlotte, NC 28208"},"searchCity": "Charlotte","qualifiers": [{ "name": "David Wayne Morrison", "qualifierNumber": "QUAL.U.05776", "status": "Active" },{ "name": "Stuart Dale Robertson Jr.", "qualifierNumber": "QUAL.U.06725", "status": "Active" },{ "name": "Michael John Capuano", "qualifierNumber": "QUAL.U.10213", "status": "Active" },{ "name": "Justin Glenn Rhoden", "qualifierNumber": "QUAL.U.12921", "status": "Active" }],"sourceUrl": "https://arls-public.ncbeec.org/Public/Search","scrapedAt": "2026-07-23T15:54:10.895Z"}
With enrichEmails: true, successful rows additionally carry:
{"contactEmail": "service@example-electric.com","contactWebsite": "https://example-electric.com","emailEnrichment": { "website": "…", "emails": ["…"], "source": "site-scrape", "confidence": "high" }}
🗂 Key output fields
| Group | Fields |
|---|---|
| License | licenseNumber, classification, classificationCode, licenseStatus, statusNote, isActive, expirationDate |
| Business | businessName, dbaName, phone, address.{street,city,state,zip,raw} |
| People | qualifiers[] — name, qualifier number, status of each licensed individual |
| Compliance (opt-in) | publicMatters[] — the board's public disciplinary records |
| Enrichment (opt-in) | contactEmail, contactWebsite, emailEnrichment, takesPayments, paymentProcessors, stripeLiveKey, paymentConfidence |
| Provenance | boardId, boardName, stateCode, trade, searchCity, sourceUrl, scrapedAt |
❓ FAQ
How complete is the full-state sweep? The board's search matches on each licensee's mailing-address city. The bundled sweep list covers ~1,500 NC municipalities, CDPs, and USPS alias spellings, so in-state coverage is effectively complete; licensees whose mailing address is outside NC are only found via company/name/license searches.
What's the email hit rate?
Expect roughly a third of active companies to yield a verified contact email — small local trades often have no website at all. You're only charged the email event when one is found; misses cost nothing. The emailEnrichment.website field is best-effort and can occasionally point at a same-named business elsewhere — confidence and source let you filter.
Why do I see fewer leads than the roster shows?
activeOnly (default on) drops licenses not in good standing — on this board that's the majority of historical records. Set it to false to get everything.
Can I get plumbing / HVAC contractors too?
NC keeps those on a separate board — covered by the matching NC Plumbing & HVAC Contractor Leads Scraper (plumbing, heating groups, fuel piping, and fire sprinkler classifications). The Special Restricted Plumbing, Heating and Air Conditioning classification here is an electrical restricted class, not the plumbing board's license.
Does monitoring mode re-charge for old leads?
No. monitoringMode remembers every license already delivered to your account and silently skips it on later runs — you pay only for new rows. The first monitored run seeds the baseline.
Is this legal to scrape? The registry is a public government licensing record intended for license verification by the public. The actor accesses only those public pages, politely. See the Disclaimer below for your responsibilities.
💬 Support
- 🐛 Issues: the actor's Issues tab
- 💡 Feature requests: same place — concrete requests (new fields, other states, other trades) usually ship fast
- 📧 Direct: message via my Apify profile
🛠 Additional services
Need the same license-verified leads pipeline for another state or trade (plumbing, HVAC, general contractors), a custom export, or a managed feed into your CRM? This actor is the first of a per-state series built on a shared engine — new boards stamp out quickly. Reach out via my Apify profile.
🔎 Explore more scrapers
More lead-gen and directory actors from the same author: apify.com/memo23 — including email finding & verification, business directories, real-estate, and job boards.
🤖 For AI Agents & LLM Apps
This actor is MCP-ready: call it from agent frameworks via the Apify MCP server, or hit it with a single API call and read the dataset as clean JSON. The row schema is stable and flat where it matters (licenseNumber, businessName, phone, address.city, isActive), so it drops straight into RAG pipelines, lead-qualification agents, and compliance-check tools. Typical agent patterns: "verify this contractor's NC license" (pass licenseNumbers), "find active unlimited-class electricians in Raleigh with emails" (pass cities + classifications + enrichEmails), or a scheduled "alert me on newly licensed contractors" 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 State of North Carolina, or any of their agencies or affiliates. All trademarks mentioned are the property of their respective owners.
The scraper accesses only the board's publicly available license-verification pages — no authenticated endpoints and no content behind a login. License data is a public record published for verification purposes; contact-email enrichment visits only the businesses' own public websites. 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
north carolina electrical contractor leads, nc electrician leads, ncbeec license lookup, nc electrical license verification, electrical contractor license scraper, licensed electrician database north carolina, nc contractor leads scraper, electrician email list north carolina, state licensing board scraper, contractor license verify api, home services leads scraper, electrical contractor database, nc license status check, apify contractor leads, b2b trades leads, hvac plumbing electrical leads, newly licensed contractors alerts, contractor license monitoring, charlotte electrician list, raleigh electrical contractors