# Connecticut Contractor Directory & Leads Scraper (DCP) (`scrapebench/connecticut-contractor-directory-leads-scraper`) Actor

Browse all Connecticut Home Improvement Contractor (HIC) registrations filtered by county — business name, credential number, status, issue and expiry dates — from the official DCP open-data registry.

- **URL**: https://apify.com/scrapebench/connecticut-contractor-directory-leads-scraper.md
- **Developed by:** [ScrapeBench](https://apify.com/scrapebench) (community)
- **Categories:** Lead generation
- **Stats:** 41 total users, 18 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.002 / contractor records (typical mid-sized county)

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Connecticut Contractor Directory & Leads Scraper (DCP)

### Pain points

- DCP publishes every Home Improvement Contractor registration as open data, but with no county field - so you cannot ask it for a county's roster.
- Building a prospect list for Hartford, Fairfield or New Haven County means mapping 134,000+ raw ZIP codes to counties yourself.
- The DCP open-data dataset has no county field — raw ZIP codes make it impossible to slice by county without a CT ZIP-to-county mapping.

### What we solve

- Pull every CT DCP Home Improvement Contractor registration in bulk and filter to any of Connecticut's 8 counties in one run.
- Derives county for each contractor client-side from their ZIP code using a static CT ZIP→county mapping covering all 8 counties.
- Returns structured records — business name, credential number, status, issue/expiry dates, and person name — ready for CRM import or lead scoring.

### Summary

Extract the full Connecticut DCP Home Improvement Contractor registry — all 134,000+ registrations — filtered to any county, in a single structured dataset. The official Socrata open-data API has no county field; this actor derives county from each contractor's ZIP code and lets you slice by Hartford, Fairfield, New Haven, or any of Connecticut's 8 counties. Every record includes business name, credential number, active/inactive status, issue and expiration dates, and the registrant's name. No CAPTCHA, no proxy, no browser — pay per record returned.

### Who it's for

- Sales reps targeting licensed CT contractors in a territory with a new tool, material, or service
- GCs and specialty subs building a county-level competitor map or vendor network in Connecticut
- Insurance and bonding agents prospecting for Home Improvement Contractor accounts by county
- Market researchers studying CT construction market density and license saturation by region
- Compliance teams verifying that a contractor holds an active CT HIC credential before engaging them

### 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
{
  "county": "Hartford",
  "statusFilter": "Active",
  "maxResults": 500
}
```

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

### What you get

One row per record:

| Field | Description |
|---|---|
| `county` | CT county derived from the contractor's ZIP code (null for out-of-state addresses or unrecognised ZIPs) |
| `person_name` | Registrant / owner name as published by the DCP |
| `business_name` | Licensed business name |
| `credential_type` | Credential type (HIC — Home Improvement Contractor) |
| `credential_number` | DCP credential number (e.g. HIC.0567890) |
| `status` | Credential status (e.g. Active, Inactive, Revoked) |
| `issue_date` | Date the credential was originally issued |
| `effective_date` | Credential effective date (current renewal period start) |
| `expiration_date` | Credential expiration date |
| `city` | Business city |
| `state_code` | Business state (CT for in-state; some licensees are based out of state) |
| `zip_code` | Business ZIP code |
| `source_url` | Link to the official DCP open-data dataset |

Sample:

```json
{
  "county": "Hartford",
  "person_name": "JOHN SMITH",
  "business_name": "HARTFORD HOME PROS LLC",
  "credential_type": "HIC",
  "credential_number": "HIC.0567890",
  "status": "Active",
  "issue_date": "2020-03-15T00:00:00.000",
  "effective_date": "2020-03-15T00:00:00.000",
  "expiration_date": "2026-03-15T00:00:00.000",
  "city": "HARTFORD",
  "state_code": "CT",
  "zip_code": "06103",
  "source_url": "https://data.ct.gov/Business/Connecticut-Home-Improvement-Contractors/5r9m-qgni"
}
```

### Inputs

| Field | Required | Type | Default | Description |
|---|---|---|---|---|
| `county` | no | string | — | Return only contractors in this CT county (e.g. 'Hartford', 'Fairfield', 'New Haven'). Leave blank to return all 8 counties. Case-insensitive. |
| `statusFilter` | no | string | `"Active"` | Filter by credential status. Use 'Active' (default) for current licenses only, or 'ALL' to include inactive and revoked records. |
| `maxResults` | no | integer | `500` | Hard cap on the number of contractor records returned. A statewide ALL-status pull can be 130,000+ rows and will time out the default run — set higher deliberately. Default 500. |

### Pricing (Pay Per Event)

You pay per result (`dataset-item`) — **no charge for empty runs**. Example: **5000 contractor records (typical mid-sized county)** at *$0.002/result* ≈ **$10.00**.

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

### Use cases

- Territory lead generation — pull every active HIC in Hartford County for a sales outreach campaign targeting licensed remodelers.
- Competitive landscape mapping — see how many active HICs are registered in Fairfield vs. New Haven County to prioritise market entry.
- Insurance prospecting — build a list of active contractors in Litchfield or Middlesex County for renewal outreach.
- Market sizing — count active registrations per county to decide which CT markets to enter first.
- Vendor vetting — verify a subcontractor holds an active HIC credential before signing a contract.

### Why this actor

- County-level slicing the source can't do — the raw DCP open-data has no county field (verified: it publishes ZIP and city only), so this actor derives county from ZIP codes.
- Covers all 134,000+ DCP HIC registrations across Connecticut's 8 counties in a single run.
- Official DCP open-data source (data.ct.gov Socrata) — authoritative, not a third-party copy.
- No CAPTCHA, no proxy, no browser — lowest possible cost per record.
- Status filter built in — run active-only (default) or include inactive/revoked for a full historical roster.

### Limitations & updates

County assignment depends on a static ZIP→county mapping covering Connecticut's major ZIP codes. Out-of-state contractors and a small fraction of less common CT ZIP codes will have county=null. The dataset covers Home Improvement Contractors (HIC credential type) only — other DCP credential types (e.g. home inspectors, electricians licensed under different boards) are not in this dataset. Full-dataset runs (no county filter) may take several minutes to complete the ~135 API pages across 134,000+ rows.

### FAQ

**Where does the data come from?**

The official Connecticut Department of Consumer Protection (DCP) Home Improvement Contractor credential dataset, published on data.ct.gov (Socrata). Public, authoritative, and refreshed regularly.

**How does the county filter work?**

The DCP dataset has no county field. This actor derives county from each contractor's ZIP code using a static CT ZIP→county mapping covering all 8 Connecticut counties. Contractors with out-of-state or unrecognised ZIP codes will have county=null and won't match a county filter.

**What are Connecticut's 8 counties?**

Fairfield, Hartford, Litchfield, Middlesex, New Haven, New London, Tolland, and Windham.

**How many records does a typical county run return?**

It varies by county size. Hartford and Fairfield counties have the most contractors; Litchfield and Middlesex are smaller. Run without a county filter to get all 134,000+ rows.

**Can I get all counties at once?**

Yes — leave the county field blank. The actor pulls the full registry and returns all records (or up to your maxResults cap).

**What does statusFilter do?**

Set to 'Active' (default) to return only currently licensed contractors. Set to 'ALL' to include inactive, revoked, and expired records for a full historical roster.

**How am I charged?**

Pay per record returned. No charge for runs that return zero records.

**Is this personal data?**

It's public professional-credential data (business and registration records as DCP publishes them); no personal/PII enrichment is added.

**How current is the data?**

The DCP open-data dataset on data.ct.gov is refreshed regularly. Expect up to 1–2 business days of lag for very recent changes.

### Which actor to choose

Part of the CT contractor data suite — pick the one that fits your goal:

- **Multistate Contractor License Lookup & Verify** — You have a specific CT HIC credential number or business name and want to verify a single contractor's status and expiration.
- **Washington Contractor Directory & Leads Scraper (L\&I)** — You need the same county-level directory but for Washington State contractors (L\&I).
- **California Contractor Directory & Leads Scraper (CSLB)** — You need the same county-level directory but for California contractors (CSLB).
- **Florida Contractor License Lookup & Verify (DBPR)** — You're verifying a Florida contractor — type, status, expiration, county (DBPR).

### 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 Connecticut Contractor Directory & Leads Scraper (DCP)](https://scrapebench.dev/guides/how-to-connecticut-contractor-directory-leads-scraper/)
- **Use case:** [Build a Hartford County Home Improvement Contractor List](https://scrapebench.dev/use-cases/hartford-county-home-improvement-contractors/)

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

# Actor input Schema

## `county` (type: `string`):

Return only contractors in this CT county (e.g. 'Hartford', 'Fairfield', 'New Haven'). Leave blank to return all 8 counties. Case-insensitive.

## `statusFilter` (type: `string`):

Filter by credential status. Use 'Active' (default) for current licenses only, or 'ALL' to include inactive and revoked records.

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

Hard cap on the number of contractor records returned. A statewide ALL-status pull can be 130,000+ rows and will time out the default run — set higher deliberately. Default 500.

## Actor input object example

```json
{
  "statusFilter": "Active",
  "maxResults": 500
}
```

# Actor output Schema

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

One row per CT HIC registration; county is derived from the contractor's ZIP code.

# 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 = {
    "statusFilter": "Active"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapebench/connecticut-contractor-directory-leads-scraper").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 = { "statusFilter": "Active" }

# Run the Actor and wait for it to finish
run = client.actor("scrapebench/connecticut-contractor-directory-leads-scraper").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 '{
  "statusFilter": "Active"
}' |
apify call scrapebench/connecticut-contractor-directory-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapebench/connecticut-contractor-directory-leads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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