# New Contractor Leads – Fresh Licenses (WA, NY, TX) (`leadsignal-data/new-contractor-leads`) Actor

Newly licensed contractors with phone numbers, from official WA L\&I, NY DOL and Texas TDLR data. Renewals filtered out, deduped across runs. Schedule daily for a fresh lead feed.

- **URL**: https://apify.com/leadsignal-data/new-contractor-leads.md
- **Developed by:** [Alex](https://apify.com/leadsignal-data) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$15.00 / 1,000 results

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 Contractor Leads – Fresh Licenses (WA, NY, TX)

**A new contractor needs insurance, bonding, tools, a truck and software, all in their first few weeks. Reach them first for about 1.5¢ per lead, with a phone number.**

This Actor pulls **newly licensed contractors** from official state data: **Washington L\&I**, the **New York DOL Contractor Registry** and **Texas TDLR** (A/C, electrical, sign, appliance and water well contractors). Renewals and existing businesses are **filtered out**, and every lead is deduplicated across runs.

👉 **Try it free:** new Apify accounts get **$5 of free platform credit every month**, which covers hundreds of leads. Click **Try for free** and hit Start.

### Real sample leads (pulled October 2026)

| Business | State | City | Phone | Licensed |
|---|---|---|---|---|
| Waxman Family Plumbing LLC | WA | Black Diamond | (253) 350-4571 | 2026-10-09 |
| UV Pacific Construction LLC | WA | Tacoma | (253) 258-5059 | 2026-10-09 |
| Timeless Spaces SEA LLC | WA | Seattle | (206) 765-7784 | 2026-10-09 |
| Adirondack Taping and Supply, Inc. | NY | Glens Falls | (518) 761-0089 | 2026-10-09 |
| AJAY Glass & Mirror Co., Inc. | NY | Farmington | (585) 393-0082 | 2026-10-09 |

### Who uses it

- **Contractor insurance, surety bond and workers' comp agents**.
- **Building material suppliers, tool and equipment dealers, fleet and truck financing**.
- **Field-service software** (Jobber, Housecall Pro, ServiceTitan partners), payroll, accounting and marketing agencies.
- **Home-service marketplaces, lead-gen platforms and GCs recruiting subcontractors**.

### Set it up as a daily lead feed

1. Pick **states**, and optionally **cities, ZIP prefixes or trades** (PLUMBING, ELECTRICAL, ROOFING, A/C Contractor…).
2. Keep **Only new since last run** and **Exclude renewals** on.
3. Click **Schedule → Daily**, then push leads to **HubSpot, Salesforce, Google Sheets, Zapier or Make**.

### Sources and what "new" means

| State | Official source | New = |
|---|---|---|
| Washington | L\&I Contractor License Data (data.wa.gov) | License effective in your window, held by a business registered in roughly the last 12 months |
| New York | NYS DOL Contractor Registry (data.ny.gov) | Certificate issued in your window, no earlier certificate under the same name or phone |
| Texas | TDLR licenses (data.texas.gov) | License that appeared since your previous run. The first run saves a baseline silently. |

All three are stable government APIs: no fragile search forms, no browser.

### Input

```json
{ "states": ["WA", "NY", "TX"], "daysBack": 7, "licenseTypes": ["PLUMBING", "ELECTRICAL"], "excludeLikelyRenewals": true, "onlyNew": true, "maxItems": 2000 }
```

### Output fields

`state, businessName, ownerName, phone, address, city, county, zip, licenseType, specialty, businessType, status, licenseDate, dateBasis, expirationDate, isNewBusiness`, plus WA `ubi` and NY `mwbe` / `hasWorkersComp`.

### Pricing

Pay per result: **$0.015 per lead** ($15 per 1,000). Runs with nothing new cost almost nothing.

### FAQ

**Are these really new businesses?** With **Exclude renewals** on (the default), as far as the data allows. WA drops licenses held by businesses whose state business ID (UBI) is older than about 12 months. NY drops certificates whose business name or phone had an earlier certificate. Each lead carries an `isNewBusiness` flag.
**Why did my first Texas run return nothing?** TDLR doesn't publish issue dates, so the first run records every current license as a baseline. Later runs return only newly added licenses. TDLR refreshes its data periodically, so Texas leads arrive in batches.
**Do Texas A/C contractor records have addresses?** TDLR often leaves them out for A/C contractors. Electrical contractors usually include address, county and phone.
**Is the data public?** Yes. State agencies publish it on official open-data portals for reuse.
**More states?** Coming. Request yours in the Issues tab.

***

*Last updated: October 11, 2026 · Built by **LeadSignal**: public-record lead feeds for B2B sales. Not affiliated with any state agency.*

# Actor input Schema

## `states` (type: `array`):

Which official sources to pull.

## `daysBack` (type: `integer`):

WA and NY: license effective/issue date window. TX has no issue date; see 'Texas mode'.

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

Optional city filter (case-insensitive).

## `zipPrefixes` (type: `array`):

Optional, e.g. 981, 100, 787.

## `licenseTypes` (type: `array`):

Optional keyword match on license type or specialty, e.g. ELECTRICAL, PLUMBING, ROOFING, A/C Contractor.

## `txLicenseTypes` (type: `array`):

Texas license types to track.

## `txMode` (type: `string`):

TDLR publishes no issue date, so new Texas licenses are detected as licenses that appear since your previous run.

## `onlyNew` (type: `boolean`):

Skip licenses already returned in earlier runs.

## `dedupeStoreName` (type: `string`):

Named key-value store for seen license keys. Use one per feed.

## `maxItems` (type: `integer`):

Maximum leads per run.

## `excludeLikelyRenewals` (type: `boolean`):

WA: drop licenses held by businesses whose state UBI number predates the last ~12 months (re-licenses, reinstatements). NY: drop certificates whose business name or phone already had an earlier certificate (renewals). Each lead gets an isNewBusiness flag either way.

## Actor input object example

```json
{
  "states": [
    "WA",
    "NY"
  ],
  "daysBack": 30,
  "txLicenseTypes": [
    "A/C Contractor",
    "Electrical Contractor",
    "Electrical Sign Contractor",
    "Appliance Installation Contractor",
    "Water Well Driller/Pump Installer"
  ],
  "txMode": "baselineThenNew",
  "onlyNew": true,
  "dedupeStoreName": "contractor-leads-seen",
  "maxItems": 1000,
  "excludeLikelyRenewals": true
}
```

# Actor output Schema

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

All leads/records returned by this run.

# 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 = {
    "states": [
        "WA",
        "NY"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leadsignal-data/new-contractor-leads").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 = { "states": [
        "WA",
        "NY",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("leadsignal-data/new-contractor-leads").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 '{
  "states": [
    "WA",
    "NY"
  ]
}' |
apify call leadsignal-data/new-contractor-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leadsignal-data/new-contractor-leads"
        }
    }
}
```

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/E9dVNRSIP5nT4hUsI/builds/ER8SetcqL9nKgcRmY/openapi.json
