# North Carolina Contractor License Lookup & Verify (NCLBGC) (`fried_calamaries/north-carolina-contractor-license-lookup`) Actor

Verify any North Carolina general contractor by license number or name — classification, status, expiration, address, and phone — from the official NCLBGC registry.

- **URL**: https://apify.com/fried\_calamaries/north-carolina-contractor-license-lookup.md
- **Developed by:** [ByteMe](https://apify.com/fried_calamaries) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.004 / verified license records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## North Carolina Contractor License Lookup & Verify (NCLBGC)

### Pain points

- Verifying an NC general contractor on the NCLBGC portal is one slow manual lookup at a time.
- The portal has no export or structured API — copy-pasting data into CRM or compliance tools doesn't scale.
- Checking license status, classifications, and expiration across many contractors by hand wastes hours.

### What we solve

- Verify any NCLBGC general contractor by license number or name in one search.
- Returns active classifications, status, expiration, address, and phone from the official registry.
- Enrich a license number or name into a full structured record; pay per match, empty searches free.

### Summary

Look up and verify any North Carolina general contractor from a single search — type an NCLBGC license number (e.g. L.03194) or a company/person name and get back the active classifications, status, expiration date, address, and phone, straight from the official NC Licensing Board for General Contractors registry. Each match is optionally enriched with its full detail record. Built for fast verification, compliance checks, and enriching a license number or name into a structured record.

### Who it's for

- GCs and project owners vetting NC subcontractors before awarding work
- Insurance underwriters and lenders verifying contractor standing before funding
- Compliance and legal teams checking NCLBGC license status for audits or due diligence
- RevOps and BD teams building NC contractor lists for outreach or enrichment

### How to use

Set the input, run the actor, and collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API). Example input:

```json
{
  "query": "L.03194",
  "includeDetails": true,
  "maxResults": 25
}
````

See **Inputs** below for every available field.

### What you get

One row per record:

| Field | Description |
|---|---|
| `state` | Always 'NC' for this actor |
| `license_number` | NCLBGC license number (e.g. L.03194) |
| `business_name` | Licensed company or individual name |
| `license_type` | Active license classifications (e.g. Building, Highway, Unclassified) |
| `status` | License status (e.g. Active, Archived, Cancelled) |
| `issue_date` | Date first issued |
| `expiration_date` | License expiration date |
| `address` | Street or mailing address |
| `city` | Licensee city |
| `zip_code` | ZIP code |
| `phone` | Phone number, when published |
| `matched_by` | Which search surfaced this match: license\_number or business\_name |
| `source_url` | Link to the official NCLBGC license record |

Sample:

```json
{
  "state": "NC",
  "license_number": "L.03194",
  "business_name": "Barnhill Contracting Company",
  "license_type": "Unclassified",
  "status": "Active",
  "issue_date": "04/30/1959",
  "expiration_date": "12/31/2026",
  "address": "P. O. Box 7948",
  "city": "Rocky Mount",
  "zip_code": "27804",
  "phone": "(252) 823-1021",
  "person_name": null,
  "county": null,
  "matched_by": "license_number",
  "source_url": "https://portal.nclbgc.org/Public/_ShowAccountDetails/?key=DCrnKZiPujDNOqltrYHa4A%3d%3d&Source=Search"
}
```

### Inputs

| Field | Required | Type | Default | Description |
|---|---|---|---|---|
| `query` | yes | string | `"Barnhill Contracting"` | An NCLBGC license number (e.g. 'L.03194', '03194') OR a company/person name. A license number is looked up directly; anything else is searched against the NCLBGC name index. Both return matching licenses, deduped by license #. |
| `includeDetails` | no | boolean | `true` | When on (default), each match is enriched with its full NCLBGC record — phone, address, classifications, issue/expiration dates, and exact status. Turn off for a faster, lighter result set. |
| `maxResults` | no | integer | `50` | Cap on the number of matches returned in a single run. This is a lookup tool, not a bulk export — defaults to 50. |

### Pricing (Pay Per Event)

You pay per result (`dataset-item`) — **no charge for empty runs**. Example: **100 verified license records** at *$0.004/result* ≈ **$0.40**.

Illustrative — the final per-result price is set at publish time. Apify platform usage (compute) is billed separately per your plan.

### Use cases

- Pre-hire vetting — confirm an NC general contractor's license, classification, and expiration before signing a contract.
- Record enrichment — turn a license number or company name into a full structured record for a CRM or marketplace.
- Portfolio compliance — batch-check license status across a list of active NC contractors.
- Lender / insurer due diligence — verify a contractor's NCLBGC standing straight from the state registry.

### Why this actor

- Straight from the official NCLBGC registry — authoritative, not a stale third-party copy.
- Search by license number or name; results deduped by license #.
- Pay per match; searches with no results are free.
- No CAPTCHA, no account required — reliable and autonomous.

### Limitations & updates

Covers NC general contractor licenses issued by the NCLBGC only (not electricians, plumbers, or other trade boards). Results reflect the live registry at lookup time. Name searches return up to maxResults matches — refine a broad query to narrow it. County, bond, and insurance fields are in the schema for suite consistency but NCLBGC does not publish them (returned null). Individual qualifier names are not exposed via the public portal search.

### FAQ

**Where does the data come from?**

The official NC Licensing Board for General Contractors (NCLBGC) public portal — authoritative, state-published license data.

**What can I search by?**

An NCLBGC license number (e.g. L.03194, 03194) or a company/person name. Both return matching licenses, deduped by license number.

**What fields do I get?**

License number, company name, active classifications (e.g. Building, Highway), status (Active / Archived / Cancelled), first-issued and expiration dates, street address, city, ZIP, and phone — when the board publishes them.

**How am I charged?**

Pay-per-result — per license match returned. No charge for searches with no results.

**Does this cover all NC contractor license types?**

Yes — NCLBGC issues all NC general contractor licenses (Building, Highway, Public Utilities, Unclassified, Specialty). This actor covers the full board.

**Is this personal data?**

It's public professional-license data (business and license-holder records as NCLBGC publishes them); we add no PII enrichment beyond what the board publishes.

**How current is it?**

It reflects the live NCLBGC record at lookup time.

### Which actor to choose

Part of the contractor-license verification suite — pick the one that fits your goal:

- **Florida Contractor License Lookup & Verify (DBPR)** — You need to verify a Florida contractor by license number or name.
- **California Contractor License Lookup & Verify (CSLB)** — You need to verify a California contractor — by license number, business name, or owner/personnel name.
- **Multi-State Contractor License Lookup** — You want to verify contractor/trade licenses across multiple states in one search.

# Actor input Schema

## `query` (type: `string`):

An NCLBGC license number (e.g. 'L.03194', '03194') OR a company/person name. A license number is looked up directly; anything else is searched against the NCLBGC name index. Both return matching licenses, deduped by license #.

## `includeDetails` (type: `boolean`):

When on (default), each match is enriched with its full NCLBGC record — phone, address, classifications, issue/expiration dates, and exact status. Turn off for a faster, lighter result set.

## `maxResults` (type: `integer`):

Cap on the number of matches returned in a single run. This is a lookup tool, not a bulk export — defaults to 50.

## Actor input object example

```json
{
  "query": "L.03194",
  "includeDetails": true,
  "maxResults": 50
}
```

# Actor output Schema

## `matches` (type: `string`):

The matched NCLBGC licenses — name, status, classifications, address, and expiration when enriched.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "Barnhill Contracting"
};

// Run the Actor and wait for it to finish
const run = await client.actor("fried_calamaries/north-carolina-contractor-license-lookup").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "query": "Barnhill Contracting" }

# Run the Actor and wait for it to finish
run = client.actor("fried_calamaries/north-carolina-contractor-license-lookup").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "Barnhill Contracting"
}' |
apify call fried_calamaries/north-carolina-contractor-license-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fried_calamaries/north-carolina-contractor-license-lookup",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "North Carolina Contractor License Lookup & Verify (NCLBGC)",
        "description": "Verify any North Carolina general contractor by license number or name — classification, status, expiration, address, and phone — from the official NCLBGC registry.",
        "version": "0.0",
        "x-build-id": "0qbVorh542bonErNr"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fried_calamaries~north-carolina-contractor-license-lookup/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fried_calamaries-north-carolina-contractor-license-lookup",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/fried_calamaries~north-carolina-contractor-license-lookup/runs": {
            "post": {
                "operationId": "runs-sync-fried_calamaries-north-carolina-contractor-license-lookup",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/fried_calamaries~north-carolina-contractor-license-lookup/run-sync": {
            "post": {
                "operationId": "run-sync-fried_calamaries-north-carolina-contractor-license-lookup",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "query"
                ],
                "properties": {
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "An NCLBGC license number (e.g. 'L.03194', '03194') OR a company/person name. A license number is looked up directly; anything else is searched against the NCLBGC name index. Both return matching licenses, deduped by license #."
                    },
                    "includeDetails": {
                        "title": "Include full license detail",
                        "type": "boolean",
                        "description": "When on (default), each match is enriched with its full NCLBGC record — phone, address, classifications, issue/expiration dates, and exact status. Turn off for a faster, lighter result set.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Cap on the number of matches returned in a single run. This is a lookup tool, not a bulk export — defaults to 50.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
