NC Licensing Board for General Contractors Scraper avatar

NC Licensing Board for General Contractors Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
NC Licensing Board for General Contractors Scraper

NC Licensing Board for General Contractors Scraper

North Carolina general contractor license scraper & API: search the NC Licensing Board and export license number, status, classification, company name, qualifier, address and limits. Contractor verification, compliance and B2B lead generation — fast, no login.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

0

Monthly active users

3 days ago

Last modified

Features

Limited permissions

Share

NC Licensing Board for General Contractors Scraper — NCLBGC License Lookup, Classifications, Qualifiers, Phone & Address

Pull structured North Carolina general contractor license records straight from the official NCLBGC public portal (portal.nclbgc.org). Search by city, classification/trade, company name, qualifier name, license number, or ZIP code and extract license status, financial limitation tier, active classifications, primary qualifier, phone number, mailing address, expiration & issue dates, and disciplinary matters — with no login and no coding.

Export clean, de-duplicated records to JSON, CSV, Excel, or API for construction prequalification, B2B lead generation, compliance verification, and underwriting.

Apify Actor

Built for construction bid & prequalification desks, B2B building-materials and equipment sales teams, compliance and vendor-onboarding officers, surety bond & commercial insurance underwriters, construction executive recruiters, and M&A analysts.


⚡ At a glance

FeatureDetails
Official SourceNorth Carolina Licensing Board for General Contractors (NCLBGC)
Search Modes (6)40-Metro City Dropdown (cityPreset), Custom City (citiesCustom), ZIP Code (zipCodes), Company Name (companyNames), Qualifier First/Last Name (qualifierLastNames), Exact License Number (licenseNumbers)
Trade Filter30+ NCLBGC Classifications (Building, Residential, Highway, Public Utilities, S (Roofing), S (Masonry Construction), S (Concrete Construction), etc.)
Extracted FieldsLicense #, Status, Company, DBA, Limitation (Limited/Intermediate/Unlimited), Active Classifications, Primary Qualifier & Full Qualifier List, Phone, Street Address/City/State/ZIP, Issue & Expiration Dates, Disciplinary Actions
Scale & PaginationMulti-search fan-out across cities, ZIPs, and classifications — scales cleanly to 1,000+ contractors per run
De-duplicationAutomatic in-memory de-duplication by normalized licenseNumber across all searches (0 duplicates)
Empty-Run BehaviorAuto-samples across 40 major North Carolina cities when run with empty input
Export FormatsJSON, CSV, Excel (XLSX), HTML, XML, JSON Lines, and Apify API

🔎 Why scrape the NC Licensing Board for General Contractors (NCLBGC)?

The North Carolina Licensing Board for General Contractors (NCLBGC) regulates every general contractor bidding or performing construction work in North Carolina valued at $30,000 or more (NC General Statute §87-1). Its public registry is the single authoritative source of truth for who is licensed, at what financial limitation tier, in which construction classifications, under which qualified individual ("qualifier"), and with what expiration date or disciplinary history.

However, the NCLBGC portal is designed for one-by-one manual lookups:

  • There is no public CSV download and no bulk API.
  • Search results only show license numbers and names; viewing the financial limitation, classifications, phone number, address, qualifiers, and disciplinary actions requires opening three separate detail tabs for every single contractor.
  • Clicking through hundreds of contractors across Charlotte, Raleigh, Greensboro, Durham, and Wilmington by hand takes hours and quickly goes stale.

This NCLBGC scraper automates the entire workflow. It executes your searches across cities, ZIP codes, companies, or classifications, fetches and merges all three detail views per license in parallel with automatic IP rotation, normalizes dates and addresses, and outputs one flat, CRM-ready JSON row per contractor.

Common reasons teams use this NC contractor license scraper:

  • 🏗️ B2B Lead Generation for Construction Suppliers & SaaS — build targeted lists of licensed NC contractors with company name, business phone, mailing address, trade classification, and financial tier (Unlimited, Intermediate, Limited).
  • 📋 Subcontractor & Bidder Prequalification — verify that every bidder holds an Active license, the required classification (Building, Highway, Public Utilities), and a financial limitation high enough for the project contract value.
  • 🛡️ Vendor Compliance & Automated License Monitoring — run scheduled checks on your approved contractor list (licenseNumbers) to catch expired licenses (expirationDate), status changes, or new disciplinaryActions.
  • 🏦 Surety Bonding & Commercial Insurance Underwriting — validate years in business (issueDate), active qualifiers, limitation tier, and clean disciplinary history before binding coverage.
  • 🎯 Qualifier & Construction Executive Recruiting — identify licensed NC qualifiers (primaryQualifier, qualifierNumber, qualifiers) who hold the exam credentials required by general contractors statewide.
  • 📊 M&A Due Diligence & Market Sizing — map licensed contractor density across North Carolina metros and specialty trades.

✨ What this NCLBGC scraper does

  • ✅ Six combinable search modes:
    1. 40-City Dropdown (cityPreset) — select Raleigh, Charlotte, Greensboro, Durham, Winston-Salem, Fayetteville, Cary, Wilmington, Asheville, and 31 more NC cities with a click.
    2. Custom Cities (citiesCustom) — enter any North Carolina town not in the preset dropdown (e.g., "Boone", "pines", "Pinehurst", "Morehead City").
    3. ZIP Codes (zipCodes) — target hyper-local service territories by 5-digit postal code (e.g., "27601", "28202").
    4. Company / Business Names (companyNames) — search partial or exact contractor names in bulk.
    5. Qualifier First & Last Names (qualifierFirstNames, qualifierLastNames) — look up contractors by the licensed individual who passed the NCLBGC exams, with optional phonetic Soundex matching (includeLikeSoundingNames).
    6. Exact License Numbers (licenseNumbers) — verify a batch of known NCLBGC license numbers in seconds.
  • ✅ 30+ Trade & Classification Filter (classificationType) — filter any search by specific NCLBGC classification:
    • Primary Classifications: Building, Residential, Highway, Public Utilities
    • Grading & Excavating: H (Grading & Excavating)
    • Public Utilities Sub-classifications: PU (Communications), PU (Fuel Distribution), PU (Sewage Disposal), PU (Sewer Lines), PU (Water Lines), PU(Electrical-Ahead of P.O.D.), PU(Water Lines & Sewer Lines), PU(Water Pur. & Sewage Disp.), PU(Water Purification)
    • Specialty (S) Trades: S (Roofing), S (Masonry Construction), S (Concrete Construction), S (Interior Construction), S (Metal Erection), S (Swimming Pools), S (Insulation), S (Asbestos), S (Boring & Tunneling), S (Marine Construction), S (Railroad Construction), S (Sidewalk Curb & Gutter), S (Sign/Billboard), S (Wind Turbine)
    • Builder Tiers: Accredited Builder, Accredited Master Builder, Unclassified
  • ✅ Complete 3-Part Profile Enrichment (scrapeDetailPage: true) — merges Account Details, Account Qualifiers, and Public Disciplinary Matters into one unified record.
  • ✅ Unlocked 1,000+ Contractor Scaling — set maxItems: 1000+ (with maxResultsPerSearch: 0) to harvest 1,000+ unique contractors across a single large metro or across all 40 NC cities.

🎯 Use cases & B2B workflows

1. Building Material Distributors, Equipment Rental & ConTech Sales

Segment North Carolina contractors by trade classification and financial project size:

  • Target Unlimited and Intermediate Building and Highway contractors in Charlotte, Raleigh, and Greensboro for enterprise construction software, crane/heavy-equipment leasing, and structural steel supply.
  • Target Residential and S (Roofing) / S (Swimming Pools) / S (Concrete Construction) contractors with direct phone (phone) and mailing address (streetAddress, city, state, zip) outreach.

2. General Contractors, Owners & Public-Works Procurement

Automate pre-bid compliance checks. Pass your subcontractor roster into licenseNumbers (or companyNames) before issuing an Notice to Proceed to confirm:

  • licenseStatus === "Active"
  • expirationDate is in the future
  • limitation meets statutory project thresholds (Limited ≤ $500,000; Intermediate ≤ $1,000,000; Unlimited = no dollar cap)
  • disciplinaryActions is null

3. Construction Recruiters & Headhunters

In North Carolina, a general contractor license cannot remain active without a designated Qualifier who has passed the board examination. Every enriched record extracts primaryQualifier, qualifierNumber (e.g., Q.00166), and the full qualifiers array — giving construction recruiters an authoritative directory of credentialed qualifiers across the state.

4. Surety Bond & Commercial Insurance Underwriters

Evaluate contractor risk profiles before issuing bid bonds, performance bonds, or general liability policies. Cross-check issueDate (tenure), limitation (Limited vs. Intermediate vs. Unlimited), active classifications, and disciplinaryActions across hundreds of applicants automatically.


🏗️ NCLBGC classifications & limitation tiers explained

NCLBGC AttributeValues ReturnedMeaning in North Carolina Construction
Limitation: Limited"Limited"Licensed for single projects valued up to $500,000.
Limitation: Intermediate"Intermediate"Licensed for single projects valued up to $1,000,000.
Limitation: Unlimited"Unlimited"Licensed for projects of any dollar amount (no statutory ceiling).
Primary ClassificationsBuilding, Residential, Highway, Public UtilitiesBroad general contracting classifications covering commercial/industrial buildings, single/multi-family homes, roads/bridges, and utility infrastructure.
Specialty (S) ClassificationsS (Roofing), S (Masonry Construction), S (Concrete Construction), S (Metal Erection), S (Swimming Pools), S (Interior Construction), etc.Specialized trade classifications for targeted subcontractor sourcing and B2B trade sales.
Public Utilities (PU) Sub-classesPU (Water Lines), PU (Sewer Lines), PU (Communications), PU (Fuel Distribution), PU (Water Purification)Municipal and civil utility subcontractor classifications.

📥 Input configuration

All fields are optional (required: []). Leave the input empty to collect a ready-made sample across major NC cities, or combine cities, ZIPs, companies, and classifications for targeted extraction.

ParameterTypeDefault / PrefillDescription
cityPresetarray<string>[]Pick one or more NC cities from the 40-metro dropdown (Raleigh, Charlotte, Greensboro, Durham, Winston-Salem, Cary, Wilmington, Asheville, etc.).
citiesCustomarray<string>[]Additional NC cities not in the dropdown (e.g., ["Boone", "Pinehurst"]).
classificationTypestring"ALL"Filter by one of 30+ NCLBGC trade classifications (Building, Residential, Highway, Public Utilities, S (Roofing), etc.). "ALL" includes every classification.
companyNamesarray<string>[]Business or company names to search (partial matches supported).
qualifierLastNamesarray<string>[]Last name(s) of the licensed qualifier.
qualifierFirstNamesarray<string>[]First name(s) of the qualifier (paired positionally with qualifierLastNames).
licenseNumbersarray<string>[]Specific NCLBGC license numbers for exact lookup (e.g., ["76235", "L.01807"]).
zipCodesarray<string>[]5-digit ZIP codes to search (e.g., ["27601", "28202"]).
includeLikeSoundingNamesbooleanfalseEnable phonetic Soundex matching on name searches (Smith → Smyth).
maxItemsintegerDefault: 0 (Prefill: 50)Maximum total contractor records to return across all searches (0 = unlimited). Set 1000+ for bulk statewide runs.
maxResultsPerSearchinteger0Cap on records per individual search (0 = automatic/unlimited governed by maxItems).
scrapeDetailPagebooleantrueFetch each contractor's full profile (phone, address, limitation, classifications, qualifiers, dates, disciplinary actions). Set false for fast list-only mode.
maxConcurrencyinteger8Number of parallel detail requests (1–20).
proxyConfigurationobjectApify ProxyProxy configuration for per-request IP rotation. Default Apify Proxy works out of the box.

Example 1 — 1,000+ Building contractors across Charlotte, Raleigh & Durham

{
"cityPreset": ["Charlotte", "Raleigh", "Durham", "Greensboro"],
"classificationType": "Building",
"scrapeDetailPage": true,
"maxItems": 1000,
"maxResultsPerSearch": 0,
"maxConcurrency": 8,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Example 2 — Specialty Roofing contractors (S (Roofing)) across NC metros

{
"cityPreset": ["Raleigh", "Cary", "Apex", "Wake Forest", "Garner", "Holly Springs"],
"classificationType": "S (Roofing)",
"scrapeDetailPage": true,
"maxItems": 500
}

Example 3 — Instant compliance verification for a batch of license numbers

{
"licenseNumbers": ["76235", "1807", "54321", "81234"],
"scrapeDetailPage": true
}

📤 Output schema & field reference

Every record uses a consistent flat JSON structure. Below is a real active contractor record from a live run:

{
"licenseNumber": "L.01807",
"licenseStatus": "Active",
"companyName": "Hodgin Construction Company",
"dbaName": null,
"licenseType": "License",
"limitation": "Unlimited",
"classifications": [
"Building",
"Highway"
],
"primaryQualifier": "Edward Anthony Kluttz",
"qualifierNumber": "Q.00166",
"qualifiers": [
{
"name": "Edward Anthony Kluttz",
"qualifierNumber": "Q.00166",
"classification": null,
"status": "Active"
},
{
"name": "Elizabeth Page Hodgin Kluttz",
"qualifierNumber": "Q.00167",
"classification": null,
"status": "Active"
}
],
"phone": "3362995460",
"streetAddress": "PO Box 7877",
"city": "Greensboro",
"state": "NC",
"zip": "27417",
"expirationDate": "2027-12-31",
"issueDate": "1948-04-29",
"disciplinaryActions": null,
"profileUrl": "https://portal.nclbgc.org/Public/Search?key=Re8f6Zc5TYVXf%2fauQ7ti7g%3d%3d",
"scrapedAt": "2026-11-10T02:50:00.000Z"
}

🪪 License Identity & Financial Tier

FieldTypeCoverageDescription
licenseNumberstring🟢 High (100%)Official NCLBGC license/account number (cleaned of status suffixes). Primary de-duplication key.
licenseStatusstring🟢 High (100%)Normalized status (Active, Archived - License Not Valid, Invalid - License Not Valid, Revoked - License Not Valid).
licenseTypestring🟢 High (100%)Account type label (typically License).
limitationstring|null🟢 High (~99%)Financial project-size limitation: Limited, Intermediate, or Unlimited.
classificationsarray<string>|null🟢 High (Active)Array of active trade classifications held by the license (e.g., ["Building", "Highway"]).
issueDatestring|null🟢 High (~98%)Original license issue date normalized to ISO YYYY-MM-DD.
expirationDatestring|null🟢 High (Active)License expiration date in ISO YYYY-MM-DD (populated on active licenses; null on archived historical records).

🏢 Company, Contact & Location Details

FieldTypeCoverageDescription
companyNamestring🟢 High (100%)Registered corporate or business name (T/A suffixes stripped cleanly).
dbaNamestring|null🟡 ConditionalTrade name / DBA ("Also Known As") when registered on the license.
phonestring|null🟢 High (Active)Business telephone number on file with NCLBGC (populated on ~92–100% of active licenses).
streetAddressstring|null🟢 High (~99%)Principal street or PO Box mailing address.
citystring|null🟢 High (100%)Business city name.
statestring|null🟢 High (100%)Two-letter state code (e.g., NC, SC, VA, GA).
zipstring|null🟢 High (~98%)5- or 9-digit postal ZIP code.

🧑‍💼 Qualifiers, Compliance & Metadata

FieldTypeCoverageDescription
primaryQualifierstring|null🟢 High (Active)Full name of the first/primary exam qualifier on the license.
qualifierNumberstring|null🟢 High (Active)Official NCLBGC qualifier number of the primary qualifier (e.g., "Q.00166").
qualifiersarray<object>|null🟢 High (Active)Full array of qualifiers ({ name, qualifierNumber, classification, status }).
disciplinaryActionsarray<object>|null🟡 ConditionalArray of public disciplinary matters ({ date, type, detail }), or null when clean.
profileUrlstring🟢 High (100%)Direct link to the contractor's NCLBGC record.
scrapedAtstring🟢 High (100%)ISO 8601 UTC timestamp of extraction.

🔁 Pagination, scale & 1,000+ contractor extraction

The NCLBGC portal returns all matching rows for each search query in one table, and each contractor's full profile requires 3 separate detail requests. This actor scales to 1,000+ contractors through:

  1. Multi-city & multi-query fan-out: Select multiple cities in cityPreset (or leave empty to iterate across all 40 built-in NC cities) and set maxItems: 1000+ with maxResultsPerSearch: 0.
  2. Parallel IP-rotated detail batching: Detail fetches run in concurrent batches (maxConcurrency: 8 by default, configurable up to 20) with a fresh rotating proxy IP per request so the portal's per-IP rate limit is never triggered.
  3. Fast list-only mode (scrapeDetailPage: false): Need 5,000+ contractor names, license numbers, and active/inactive statuses in under 60 seconds? Set scrapeDetailPage: false to skip individual profile fetches and stream the search tables directly.

⚙️ How to use

  1. Open the Actor in the Apify Console.
  2. Select your target market: pick cities from Cities (cityPreset), choose a Classification (classificationType), or enter company names, qualifier names, ZIPs, or license numbers.
  3. Set your volume: use maxItems: 50 for a quick <1-minute test, or set maxItems: 1000+ (and maxResultsPerSearch: 0) for a large regional sweep.
  4. Click Start and watch contractor records stream into the dataset.
  5. Export: download as JSON, CSV, or Excel (XLSX), or connect directly to Salesforce, HubSpot, Google Sheets, Make, Zapier, or your database via the Apify API.

API Example (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("haketa/nc-licensing-board-for-general-contractors-scraper").call(run_input={
"cityPreset": ["Charlotte", "Raleigh", "Durham"],
"classificationType": "Building",
"scrapeDetailPage": True,
"maxItems": 500,
"maxResultsPerSearch": 0,
})
for record in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{record['licenseNumber']} | {record['companyName']} | {record['licenseStatus']} | {record['limitation']} | {record['phone']}")

API Example (Node.js)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client
.actor('haketa/nc-licensing-board-for-general-contractors-scraper')
.call({
cityPreset: ['Wilmington', 'Asheville'],
classificationType: 'Residential',
scrapeDetailPage: true,
maxItems: 300,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Collected ${items.length} NC general contractors`);

API Example (cURL)

curl -X POST "https://api.apify.com/v2/acts/haketa~nc-licensing-board-for-general-contractors-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cityPreset": ["Charlotte", "Raleigh"],
"classificationType": "Building",
"scrapeDetailPage": true,
"maxItems": 500
}'

💡 Pro tips for best results

  • Combine City + Classification to prioritize Active contractors: Broad city searches with classificationType: "ALL" include historical archived licenses starting from L.00001. Selecting a specific classification (e.g., Building, Residential, Highway, S (Roofing)) returns a much higher concentration of currently active contractors with phones, qualifiers, and expiration dates.
  • Use maxItems for global control: Leave maxResultsPerSearch: 0 and set maxItems to your desired total (e.g., 1000) so the scraper automatically pulls across your selected cities until the global target is reached.
  • Two-stage workflow for massive statewide audits: Run once with scrapeDetailPage: false to get all license numbers and statuses in seconds, filter to licenseStatus === "Active", and pass those license numbers into licenseNumbers with scrapeDetailPage: true.

⚠️ Honest limitations & source behavior

  • Archived historical records: On retired/archived licenses from decades ago (Archived - License Not Valid), the NCLBGC portal does not publish a current phone number, active qualifier, or expiration date. For those records, phone, qualifiers, and expirationDate are accurately returned as null. On Active licenses, those fields populate at 92–100%.
  • No email addresses: The NCLBGC public portal does not publish contractor email addresses; it provides business phone numbers, physical/mailing addresses, and named qualifiers.

❓ FAQ

Does this NCLBGC scraper require a login or API key?

No. All license data is extracted from the public NCLBGC search portal with zero credentials required.

How fast does it run?

A prefill run of 50 detailed contractor records completes in ~20–35 seconds. A list-only run (scrapeDetailPage: false) extracts hundreds of records in a few seconds.

What is the difference between Limited, Intermediate, and Unlimited limitation?

In North Carolina, a general contractor's financial limitation determines the maximum single-project contract value they are legally allowed to bid on:

  • Limited: projects up to $500,000
  • Intermediate: projects up to $1,000,000
  • Unlimited: projects of any dollar value

Do I need residential proxies?

No. Because each request rotates a fresh IP from the default Apify Proxy pool, standard datacenter proxies work reliably and keep compute costs very low.


Building a multi-state contractor and professional license pipeline? Check out our other state licensing scrapers:


📋 Changelog

v1.2 (2026-11)

  • Added Global maxItems & Unlocked 1,000+ Scaling: Added maxItems (with fast prefill: 50) and set maxResultsPerSearch default to 0 so users can collect 1,000+ contractors across single or multiple cities without per-search caps.
  • Expanded Default NC Metro Coverage: Expanded built-in fallback cities to all 40 NC municipalities so empty-filter runs with maxItems: 1000+ can harvest 1,000+ contractors statewide.
  • Memory & Concurrency Optimization: Right-sized container memory to 512 MB minimum and raised default parallel detail concurrency to 8 for sub-minute prefill execution.

v1.1 (2026-10)

  • Migrated from browser execution to lightweight pure-HTTP with per-request IP rotation, boosting detail field coverage (limitation, phone, qualifiers, expirationDate) to 92–100% on active licenses and cutting compute cost by >90%.

v1.0 (2026-07)

  • Initial release supporting 6 NCLBGC search modes and 30+ construction trade classifications.
⌂ 换网址