# Building Permit Leads — New Construction Project Prospects API (`nexgendata/building-permits-construction-leads`) Actor

New construction-project leads from building permits across NYC, Chicago, Austin, Seattle & SF — project, address, type, value, owner/contractor. Optional Notion/Supabase delivery. For construction, contractor and supplier sales.

- **URL**: https://apify.com/nexgendata/building-permits-construction-leads.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 lead returneds

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

## Building Permit Leads

New building-permit records as construction leads — projects, addresses, contractors and estimated cost, refreshed on a schedule.

> Output is a prospect list for your sales team, assembled from public web and business sources. Use it in line with applicable outreach and privacy law.

### ⏰ Run this as a weekly lead monitor (recommended)

New records land continuously. Schedule a weekly sweep (`0 8 * * 1`) and catch fresh leads as they appear — an always-on prospect feed for your sales team.

### 📊 What you get

Clean JSON, one record per lead (full output has 15 fields):

- `city` — City
- `permit_number` — Permit number
- `permit_type` — Permit type
- `work_description` — Work description
- `address` — Address
- `locality` — Locality
- `region` — Region
- `zip` — Zip
- `status` — Status
- `applied_date` — Applied date

**Pricing:** $0.100 per lead (Pay-Per-Event) — about **10 leads per $1**.

### 🤖 Use with AI agents

Point Claude, the OpenAI Agents SDK, an n8n flow or any MCP-aware client at it and run prospecting on demand.

**Agentic payments (x402):** Supports agentic payment via x402 — agents can call this actor with USDC, no API key required.

### 🔗 Related lead-gen actors

**Industry lead lists — pick your vertical:** [Capterra Displacement](https://apify.com/nexgendata/capterra-displacement-leads) · [DOL Form 5500](https://apify.com/nexgendata/dol-form-5500-erisa-plan-tracker) · [FDIC Banks](https://apify.com/nexgendata/fdic-bank-leads) · [NPI Healthcare](https://apify.com/nexgendata/npi-healthcare-provider-leads) · [Doctor Directory](https://apify.com/nexgendata/doctor-directory-lead-finder) · [Restaurants](https://apify.com/nexgendata/restaurant-food-business-leads) · [Auto Dealers](https://apify.com/nexgendata/us-auto-dealer-repair-leads) · [FMCSA Carriers](https://apify.com/nexgendata/fmcsa-carrier-leads) · [SBA Recipients](https://apify.com/nexgendata/sba-loan-recipients-leads) · [Liquor Licenses](https://apify.com/nexgendata/liquor-license-leads) · [Contractor Licenses](https://apify.com/nexgendata/contractor-license-leads) · [Childcare Licenses](https://apify.com/nexgendata/childcare-license-leads)

Found your list here? Run it through the chain: verify the emails, enrich the companies, push to your CRM.

**The lead-gen workflow chain** — found leads? verify → enrich → push to CRM:

1. **Find:** [B2B Leads Finder](https://apify.com/nexgendata/b2b-leads-finder) · [Company Email Finder](https://apify.com/nexgendata/company-email-finder) · [Person Email Finder](https://apify.com/nexgendata/person-business-email-finder) · [Website Contact Scraper](https://apify.com/nexgendata/contact-info-scraper) · [Yellow Pages](https://apify.com/nexgendata/yellow-pages-scraper)
2. **Enrich:** [Company Enrichment](https://apify.com/nexgendata/company-enrichment-tool) · [B2B Contact Enricher](https://apify.com/nexgendata/b2b-contact-enricher) · [Lead List Enricher](https://apify.com/nexgendata/lead-list-enricher) · [Website Tech & Contact Audit](https://apify.com/nexgendata/local-business-tech-contact-audit)
3. **Verify & clean:** [Email Verification](https://apify.com/nexgendata/email-verification-tool) · [Bulk Email Validator](https://apify.com/nexgendata/email-validator) · [Lead List Cleaner](https://apify.com/nexgendata/b2b-lead-list-cleaner)
4. **Deliver:** [Leads to Notion CRM](https://apify.com/nexgendata/leads-to-notion-crm)

**Front door — Sales Intelligence MCP:** the sales-intelligence agent that fronts this whole cluster → [Sales Intelligence MCP](https://apify.com/nexgendata/sales-intelligence-mcp)

***

*Public web & business-source data, assembled as sales-team prospect lists.*

# Actor input Schema

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

Which cities to pull: NYC, CHICAGO, AUSTIN, SEATTLE, SF. Empty = all.

## `since` (type: `string`):

Only permits on/after this date (where the city exposes a date). Empty = most recent.

## `keywords` (type: `array`):

Only permits whose work description or type contains one of these keywords (e.g. solar, roof, pool, electrical).

## `max_per_city` (type: `integer`):

Cap on permits pulled per city.

## `include_raw` (type: `boolean`):

Attach the raw city permit record to each lead.

## `notionConnector` (type: `string`):

Optional. Connect your Notion workspace and the leads are also written as a Notion page in the same run — the Actor never sees your Notion credentials. Authorize a Notion MCP connector in Apify Console → Settings → API & Integrations, then select it here.

## `notionParentId` (type: `string`):

Optional. The Notion page ID to create the page under. If blank, Notion creates a private page in your workspace.

## `supabaseConnector` (type: `string`):

Optional. Connect your own Supabase project and the results are also inserted into a table in the same run — the Actor never sees your Supabase credentials. Authorize a write-scoped, project-scoped Supabase MCP connector in Apify Console (Settings -> Integrations), then select it here.

## `supabaseTable` (type: `string`):

Target table in the public schema (created if missing, with id, a jsonb data column, and a scraped\_at timestamp). Default: nexgendata\_leads.

## `supabaseProjectId` (type: `string`):

Your Supabase project reference (e.g. abcdefghijklmnop). Required unless your connector URL is already project-scoped. Find it in your project URL: supabase.com/dashboard/project/THIS\_PART.

## `deliveryDedup` (type: `boolean`):

When on (default), records already delivered in a previous run are not delivered again to the same destination — so scheduled runs only push new items. Turn off to deliver every record on every run.

## Actor input object example

```json
{
  "cities": [
    "NYC",
    "CHICAGO",
    "AUSTIN",
    "SEATTLE",
    "SF"
  ],
  "keywords": [],
  "max_per_city": 200,
  "include_raw": false,
  "supabaseTable": "nexgendata_leads",
  "deliveryDedup": true
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/building-permits-construction-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/building-permits-construction-leads").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 '{}' |
apify call nexgendata/building-permits-construction-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/building-permits-construction-leads",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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