# New Jersey Contractor License Lookup & Export (DCA) (`scrapebench/new-jersey-contractor-license-lookup`) Actor

Look up any New Jersey DCA contractor licence by number or name, or export home improvement, electrical, master plumber and master HVACR licences statewide, with street address and owner for home improvement contractors.

- **URL**: https://apify.com/scrapebench/new-jersey-contractor-license-lookup.md
- **Developed by:** [ScrapeBench](https://apify.com/scrapebench) (community)
- **Categories:** Lead generation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.004 / license record

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## New Jersey Contractor License Lookup & Export (DCA)

### Pain points

- DCA's verification site shows 40 licences a page and has no download, so a list of New Jersey's 47,251 active home improvement contractors (2026-10-12) means clicking through more than a thousand pages.
- Issue and expiry dates, and a home improvement contractor's street address, ZIP and owner, are only on each licence's own detail page, one click per licence.
- The site stops serving detail pages after 20 views from one search, and its detail links stop working once you leave the results page they came from.

### What we solve

- Export a trade statewide, or by city, in one run: home improvement contractors, electrical business permits, master plumbers and master HVACR contractors, filtered by status, with a batch list for each filter.
- Each exported licence gets its detail page — issue and expiry dates on every trade, plus street address, ZIP, owner and DBA for home improvement contractors and the qualifying electrician for electrical permits — and every row says whether that landed.
- Verify licences in bulk: a list of licence numbers or names returns each licence's current status, whatever it is.

### Summary

New Jersey contractor licences from the Division of Consumer Affairs (DCA), two ways. Export mode reads DCA's public licence verification search for home improvement contractor registrations (13VH), electrical business permits (34EB), master plumber licences (36BI) and master HVACR licences (19HC) — statewide or by city, active by default or any status — and adds each licence's dates from its detail page, with street address, ZIP and owner for home improvement contractors. Lookup mode takes licence numbers or names and returns every matching licence with its status. Pay per licence returned.

### Who it's for

- Sales teams selling materials, equipment, insurance or software to New Jersey contractors
- Lead-generation agencies building trade-specific contractor lists by city
- General contractors and property managers sourcing registered subcontractors near a job
- Compliance, insurance and lending teams verifying DCA licence status in bulk

### 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
{
  "trade": "home_improvement",
  "city": "Newark",
  "maxResults": 1000
}
```

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

### What you get

One row per record:

| Field | Description |
|---|---|
| `license_number` | DCA licence number, e.g. 13VH13621300 |
| `business_name` | Business name, or the licensee's name for plumbers and HVACR |
| `dba_name` | Doing-business-as name, when filed |
| `person_name` | Owner (home improvement) or qualifying electrician (electrical) |
| `trade` | home_improvement, electrical, plumbing or hvacr |
| `license_type` | e.g. Home Improvement Business Contr, Master Plumber |
| `status` | Active, Expired, Closed, Suspended, Revoked... |
| `status_change_reason` | DCA's reason for the latest status change |
| `address` | Street address (home improvement contractors) |
| `city` | Address city |
| `address_state` | Address state (out-of-state firms register too) |
| `zip_code` | ZIP code (home improvement contractors) |
| `issue_date` | Issue date |
| `expiration_date` | Expiry date |
| `enrichment_status` | Whether the detail-page fields landed |
| `source_url` | The DCA search page the row came from |

Sample:

```json
{
  "license_number": "13VH13621300",
  "business_name": "VISTA FENCING LLC",
  "dba_name": null,
  "person_name": "Olsen Tafa",
  "trade": "home_improvement",
  "profession": "Home Improvement Contractors",
  "license_type": "Home Improvement Business Contr",
  "status": "Active",
  "status_change_reason": "License Issuance",
  "address": "154 Charles St Rear",
  "city": "Garfield",
  "address_state": "NJ",
  "zip_code": "07026",
  "issue_date": "2025-04-25",
  "expiration_date": "2027-03-31",
  "matched_by": "license_number",
  "enrichment_status": "enriched",
  "state": "NJ",
  "source_url": "https://newjersey.mylicense.com/verification/Search.aspx?facility=Y"
}
```

### Inputs

| Field | Required | Type | Default | Description |
|---|---|---|---|---|
| `query` | no | string | — | A full DCA licence number ('13VH13621300'), a business name or part of one ('Vista Fencing' — matched anywhere in the name), or a person's name written FIRST then LAST for master plumbers and HVACR contractors ('John Smith'). Leave empty to run an export instead. |
| `queries` | no | array | `[]` | Several lookups in ONE run, one per line. Combined with the field above if you fill both. |
| `trade` | no | string | — | home_improvement (Home Improvement Contractor registrations, 13VH), electrical (Electrical Business Permits, 34EB), plumbing (Master Plumber licences, 36BI) or hvacr (Master HVACR licences, 19HC). Leave empty for all four. |
| `trades` | no | array | `[]` | Several trades in ONE export, e.g. electrical and plumbing. |
| `status` | no | string | — | Active by default. DCA also lists Expired, Closed, Suspended, Revoked and others; type 'all' to export every status. |
| `statuses` | no | array | `[]` | Several statuses in ONE export, e.g. Active and Expired. |
| `city` | no | string | — | Address city, exact match ignoring case and punctuation, e.g. 'Newark'. DCA lists the licensee's own address, not where they work. |
| `cities` | no | array | `[]` | Several cities in ONE export. Up to 3 cities are searched one by one; with more, the actor lists the whole trade and keeps your cities (about 7 minutes for every trade). |
| `newJerseyAddressesOnly` | no | boolean | `false` | Out-of-state firms register too. Tick to drop licensees whose address is outside New Jersey. |
| `includeDetails` | no | boolean | `true` | Fetch each licence's DCA detail page: street address, ZIP, owner name and DBA (home improvement and electrical businesses) and issue/expiry dates (all trades). Adds time, not cost. enrichment_status says per row whether it landed. |
| `maxResults` | no | integer | `500` | EXPORT: cap on licences for the WHOLE run — your spend control (set 100000 to take everything that matches). LOOKUP: cap per name or number (default 50). |
| `proxyConfiguration` | no | object | `{"useApifyProxy": false}` | Not needed: DCA answers Apify's own IPs directly and fastest. Set a proxy only if a run reports the source refused it. |

### Pricing (Pay Per Event)

You pay per result (`dataset-item`) — **no charge for empty runs**. Example: **813 Newark home improvement contractors** at *$0.004/result* ≈ **$3.25**.

The default export (500 licences) costs $2.00; every active licence in the four trades (64,569 on 2026-10-12) costs $258.28 at maxResults 100000.

### Use cases

- Territory prospecting: export every active home improvement contractor in Newark, Jersey City and Paterson with street address and owner for a CRM.
- New-registrant outreach: export a trade statewide each month and compare issue dates to catch firms registered since the last run.
- Subcontractor sourcing: list active master plumbers or electrical contractors in the towns around a job before sending bid invitations.
- Vendor compliance: run your contractors' DCA numbers as a lookup batch and flag any that are expired, suspended or revoked.

### Why this actor

- Four trades in one actor: 64,569 active New Jersey licences on 2026-10-12 — 47,251 home improvement contractors, 6,678 master HVACR, 5,709 electrical business permits and 4,931 master plumbers — listed statewide in 431 s.
- Straight from DCA's public licence verification site, read fresh on every run, with each row's detail page checked against its licence number, licensee name and status before its fields are copied (DCA has re-issued some electrical permit numbers to a second firm).
- Filter by trade, status and city; a trade it does not recognise is refused with a free notice, never silently widened to every trade.
- Pay per licence returned; outage, cut-short and bad-input notices are free.

### Limitations & updates

No phone or email: DCA publishes none. Street address, ZIP and owner exist only for home improvement contractor registrations; electrical permits, master plumbers and master HVACR licences carry city and state only. DCA lists the licensee's own address, so a city filter finds where the contractor is based, not where they work. Every row's detail page is a separate request, so a statewide export with details takes much longer than one without: untick 'Add address, owner and dates' for list fields only, and rows the run could not reach in time say skipped_time_budget. The source has no bulk file, so an export reads DCA's search 40 rows a page.

### FAQ

**Where does the data come from?**

From the New Jersey Division of Consumer Affairs' public licence verification site (newjersey.mylicense.com/verification), read on every run. DCA publishes no bulk file or open dataset of these licences.

**Which licences are covered?**

Four DCA licences, counted 2026-10-12: home improvement contractor registrations (13VH) — 47,251 active; electrical business permits (34EB) — 5,709 active of 13,938; master plumber licences (36BI) — 4,931 active of 11,501; master HVACR contractor licences (19HC) — 6,678 active of 9,608. Exports return active licences unless you ask for other statuses. Journeyman and apprentice licences, telecom, alarm and locksmith businesses and the 61 home elevation contractor registrations are not included.

**Lookup or export — which do I use?**

Lookup when you have licence numbers or names: fill 'License number or name' (or the batch list). A full licence number ('13VH13621300') is matched exactly; a business name is matched anywhere in the name; a person's name (plumbers, HVACR) is matched on last name and the start of the first name. Export when you want a list: leave that field empty and pick trades, statuses and cities.

**Why is the street address missing on some rows?**

DCA shows a street address and ZIP only for home improvement contractor registrations. For electrical business permits it shows city and state plus the qualifying electrician; master plumber and HVACR licences are held by people, and DCA shows only their city and state. enrichment_status says per row whether the detail page landed: enriched, not_found, failed or skipped_time_budget (a very large export ran out of time). Untick 'Add address, owner and dates' for the fastest export.

**Does it include out-of-state contractors?**

Yes: 3,939 of the 47,251 active home improvement contractors (8.3%) list an address outside New Jersey, mostly Pennsylvania (1,978) and New York (1,457), counted 2026-10-12. Tick 'New Jersey addresses only' to drop them.

**How am I charged?**

$0.004 per licence returned. Newark's 813 active home improvement contractors cost $3.25 (2026-10-12; 20 of them are in Newark, Delaware — tick 'New Jersey addresses only' to drop those). Rows explaining an outage, a cut-short run or an unrecognised filter are free.

### Which actor to choose

Part of the contractor-data suite — the same statewide export for other states:

- **Iowa Contractor License Lookup & Export (DIAL)** — You need Iowa contractors — every active DIAL registration statewide, with phone and email, filtered by trade, county, city or ZIP.
- **Mississippi Contractor License Lookup & Export (MSBOC)** — You need Mississippi contractors — the active MSBOC roster with phone, street address and classifications, by county or class.
- **Ohio Contractor License Lookup & Export (OCILB)** — You need Ohio electrical, HVAC, plumbing, hydronics or refrigeration contractors — the full OCILB roster, by trade and county.
- **Nebraska Contractor Registration Lookup & Export (NDOL)** — You need Nebraska contractors — every current NDOL registration, by service and county, with phone on request.
- **Delaware Contractor License Lookup & Export (DOR + DPR)** — You need Delaware contractors — DOR business licences plus DPR electrical, plumbing and HVACR licences, by city or ZIP.
- **DC Contractor License Lookup & Export (DLCP)** — You need contractors licensed in Washington, DC — every active DLCP general contractor, home improvement and asbestos licence, by address state, ZIP or ward.
- **Arizona Contractor License Lookup & Export (ROC)** — You need Arizona contractors — one ROC licence by number or name, or every active licence statewide with phone, by class and city.
- **West Virginia Contractor License Lookup & Export (WVCLB)** — You need West Virginia contractors — every current WVCLB licence with phone and mailing address, by county or classification.
- **Colorado Electrical & Plumbing License Lookup & Export (DORA)** — You need Colorado electrical or plumbing licences — contractors, masters and journeymen statewide, with status and public disciplinary actions.
- **Maryland Contractor License Lookup & Export (MHIC)** — You need Maryland home improvement contractors — every active MHIC licence with street address and expiry, by city or ZIP.

### Guides & use cases

Written up on **[scrapebench.dev](https://scrapebench.dev)** — the bench that runs and verifies this actor against the live source every night:

- **How-to:** [How to run New Jersey Contractor License Lookup & Export (DCA)](https://scrapebench.dev/guides/how-to-new-jersey-contractor-license-lookup/)
- **Use case:** [Export Newark, New Jersey Home Improvement Contractors](https://scrapebench.dev/use-cases/newark-home-improvement-contractors/)
- **Use case:** [Verify New Jersey Contractor Licenses (DCA)](https://scrapebench.dev/use-cases/new-jersey-license-verification/)

More actors, coverage and nightly verification results: **[scrapebench.dev](https://scrapebench.dev)**

### Works with AI assistants (MCP)

Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the [MCP tab](https://apify.com/scrapebench/new-jersey-contractor-license-lookup/api/mcp) on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.

Then just ask:

> "List the active New Jersey home improvement contractors with a Newark address, with street address and owner."

With no trade, city or name it exports every active licence in all four trades (64,569 on 2026-10-12), so set a trade or city before running it from an agent. Runs started this way bill exactly like any other run.

# Changelog

This Actor's version history is a separate document: https://apify.com/scrapebench/new-jersey-contractor-license-lookup/changelog.md

# Actor input Schema

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

A full DCA licence number ('13VH13621300'), a business name or part of one ('Vista Fencing' — matched anywhere in the name), or a person's name written FIRST then LAST for master plumbers and HVACR contractors ('John Smith'). Leave empty to run an export instead.

## `queries` (type: `array`):

Several lookups in ONE run, one per line. Combined with the field above if you fill both.

## `trade` (type: `string`):

home_improvement (Home Improvement Contractor registrations, 13VH), electrical (Electrical Business Permits, 34EB), plumbing (Master Plumber licences, 36BI) or hvacr (Master HVACR licences, 19HC). Leave empty for all four.

## `trades` (type: `array`):

Several trades in ONE export, e.g. electrical and plumbing.

## `status` (type: `string`):

Active by default. DCA also lists Expired, Closed, Suspended, Revoked and others; type 'all' to export every status.

## `statuses` (type: `array`):

Several statuses in ONE export, e.g. Active and Expired.

## `city` (type: `string`):

Address city, exact match ignoring case and punctuation, e.g. 'Newark'. DCA lists the licensee's own address, not where they work.

## `cities` (type: `array`):

Several cities in ONE export. Up to 3 cities are searched one by one; with more, the actor lists the whole trade and keeps your cities (about 7 minutes for every trade).

## `newJerseyAddressesOnly` (type: `boolean`):

Out-of-state firms register too. Tick to drop licensees whose address is outside New Jersey.

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

Fetch each licence's DCA detail page: street address, ZIP, owner name and DBA (home improvement and electrical businesses) and issue/expiry dates (all trades). Adds time, not cost. enrichment_status says per row whether it landed.

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

EXPORT: cap on licences for the WHOLE run — your spend control (set 100000 to take everything that matches). LOOKUP: cap per name or number (default 50).

## `proxyConfiguration` (type: `object`):

Not needed: DCA answers Apify's own IPs directly and fastest. Set a proxy only if a run reports the source refused it.

## Actor input object example

```json
{
  "query": "Vista Fencing",
  "queries": [],
  "trades": [],
  "status": "Active",
  "statuses": [],
  "cities": [],
  "newJerseyAddressesOnly": false,
  "includeDetails": true,
  "maxResults": 500,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Each row is one DCA licence: name, trade, licence type, status, city and, from the detail page, street address, ZIP, owner, DBA and dates.

# 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 = {
    "maxResults": 500,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapebench/new-jersey-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 = {
    "maxResults": 500,
    "proxyConfiguration": { "useApifyProxy": False },
}

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

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

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

```

## CLI example

```bash
echo '{
  "maxResults": 500,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapebench/new-jersey-contractor-license-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapebench/new-jersey-contractor-license-lookup"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/oaQLOVDYF5ywUwjxC/builds/Z5X2asixcbjnRNaSi/openapi.json
