# Building Permit Lead Monitor: Chicago, NYC, Austin (`getascraper/construction-permit-lead-monitor`) Actor

Monitor official building-permit datasets in Chicago, New York City, and Austin. Return new, updated, and removed permit signals with project details, valuation, published contacts, and source links. Send results to HubSpot, Airtable, n8n, or Slack.

- **URL**: https://apify.com/getascraper/construction-permit-lead-monitor.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Lead generation, Real estate, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.66 / 1,000 permit records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Lead Monitor: Chicago, NYC, Austin

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:24px 28px;background:#FFF7ED;border:1px solid #FED7AA;border-top:4px solid #C2410C;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#7C2D12;line-height:1.3">Turn public permit activity into your next local lead</span><br>
<span style="font-size:15px;color:#431407;line-height:1.6">Monitor selected Chicago, New York City, and Austin permit data. Get source-linked project details and a change feed for the same scope.</span>
</td>
</tr>
</table>

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FED7AA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A3412">🏙️ Choose the market</span><br>
<span style="font-size:12px;color:#431407">Work with the supported public datasets for Chicago, New York City, and Austin.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FED7AA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A3412">🔔 Catch fresh signals</span><br>
<span style="font-size:12px;color:#431407">Separate new, updated, and removed permits from a complete baseline.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FED7AA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A3412">🏗️ Qualify the project</span><br>
<span style="font-size:12px;color:#431407">Review permit type, address, value, and published parties when available.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FED7AA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A3412">🔗 Verify the record</span><br>
<span style="font-size:12px;color:#431407">Keep a direct link to the official source for every permit.</span>
</td>
</tr>
</table>

Monitor official building-permit datasets for Chicago, New York City, and Austin. Turn selected public permit activity into a current snapshot or source-linked change feed.

### 🎯 What it does

The Actor reads the declared city datasets and normalizes their public permit records. A full run returns the current selected scope. Changes-only mode returns new, updated, and removed records only after a complete scan.

### 👥 Who it is for

- Construction suppliers and local sales teams watching public project signals.
- Roofing, HVAC, solar, and equipment teams qualifying declared-city permit activity.
- Analysts building a source-backed local construction dataset.

### ⚙️ How it works

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#FFF7ED;border:1px solid #FED7AA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#C2410C;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#7C2D12">Select the city</span><br>
<span style="font-size:12px;color:#431407">Choose Chicago, New York City, Austin, or a combination.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FFF7ED;border:1px solid #FED7AA;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#C2410C;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#7C2D12">Focus the signal</span><br>
<span style="font-size:12px;color:#431407">Filter by issued date, permit type, or a project keyword.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FFF7ED;border:1px solid #FED7AA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#C2410C;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#7C2D12">Monitor the scope</span><br>
<span style="font-size:12px;color:#431407">Run a snapshot or schedule that same scope for changes.</span>
</td>
</tr>
</table>

### 🧾 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| Cities | Array | Yes | One or more supported city datasets: Chicago, New York City, or Austin. |
| Issue date from and to | Date | No | Published issue-date bounds for the selected datasets. |
| Permit types | Array | No | Source permit-type labels to match. |
| Description keyword | Text | No | Keyword matched against the public permit description. |
| Output mode | Choice | No | Full snapshot or changes-only output. |
| Maximum pages | Number | No | Pages to request per city. A capped scan does not update saved state. |
| Maximum records returned | Number | No | Maximum rows written across selected cities. |

### 📊 Output

| Field | Type | Description |
| --- | --- | --- |
| changeType | String | `SNAPSHOT`, `NEW`, `UPDATED`, or `REMOVED`. |
| city | String | Source city dataset. |
| permitId | String | Public permit identifier. |
| permitType | String | Published permit type when available. |
| issueDate | Date | Published issue date when available. |
| address | String | Published project address when available. |
| sourceUrl | URL | Official source record link. |

### 💡 Good to know

- Coverage is limited to Chicago, New York City, and Austin. It is not a nationwide permit database.
- Owner, applicant, contractor, valuation, and coordinates are included only when published by the source.
- A capped or incomplete scan does not update saved comparison state.

### 💰 Pricing

This Actor uses pay per result. Empty runs do not create result charges. Begin with one city and a focused date range.

### ⭐ Enjoying Building Permit Lead Monitor?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#FFF7ED;border:1px solid #FED7AA;border-left:5px solid #C2410C;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px;color:#C2410C">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#7C2D12">Did this make local project research easier to prioritize?</span><br>
<span style="font-size:14px;color:#431407">A 5-star rating takes 10 seconds and helps construction suppliers, sales teams, and local analysts find it. Your feedback also guides what we build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#C2410C;border:1px solid #FED7AA;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/construction-permit-lead-monitor/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

**Which cities are supported?** Chicago, New York City, and Austin only.

**Does it enrich private contact details?** No. It returns public fields from the official datasets.

**Can I find only new permits?** Yes. Use changes-only mode after a complete baseline run.

**Can I schedule it?** Yes. Reuse the same selected-city scope on an Apify schedule.

### 🔗 Other actors

- [England Planning Application Monitor](https://github.com/Devansh-365/actorstack/tree/main/actors/england-planning-application-monitor)
- [Multistate Contractor License Verifier](https://github.com/Devansh-365/actorstack/tree/main/actors/multistate-contractor-license-verifier)
- [US Licensed Contractor Directory](https://github.com/Devansh-365/actorstack/tree/main/actors/us-licensed-contractor-directory)
- [SAM.gov Contract Monitor](https://github.com/Devansh-365/actorstack/tree/main/actors/sam-gov-contract-monitor)

# Actor input Schema

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

Select one or more official public permit datasets: Chicago, New York City, or Austin.

## `dateFrom` (type: `string`):

Optional ISO date lower bound for the city dataset issue date.

## `dateTo` (type: `string`):

Optional ISO date upper bound for the city dataset issue date.

## `permitTypes` (type: `array`):

Optional source permit type labels. Values are matched against the selected city adapter.

## `keywords` (type: `string`):

Optional keyword matched against the adapter's public description field.

## `mode` (type: `string`):

Full returns the current snapshot. Changes only compares a complete city scope with the saved baseline.

## `pageSize` (type: `integer`):

Rows requested from each Socrata page, plus one probe row to detect a cap.

## `maxPages` (type: `integer`):

Maximum pages requested per city. A capped scan cannot update comparison state.

## `maxRecords` (type: `integer`):

Maximum rows written across the selected cities.

## Actor input object example

```json
{
  "cities": [
    "chicago"
  ],
  "dateFrom": "",
  "dateTo": "",
  "permitTypes": [],
  "keywords": "",
  "mode": "changesOnly",
  "pageSize": 15,
  "maxPages": 1,
  "maxRecords": 15
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

## `comparisonState` (type: `string`):

No description

# 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 = {
    "cities": [
        "chicago"
    ],
    "dateFrom": "",
    "dateTo": "",
    "permitTypes": [],
    "keywords": "",
    "mode": "changesOnly",
    "pageSize": 15,
    "maxPages": 1,
    "maxRecords": 15
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/construction-permit-lead-monitor").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 = {
    "cities": ["chicago"],
    "dateFrom": "",
    "dateTo": "",
    "permitTypes": [],
    "keywords": "",
    "mode": "changesOnly",
    "pageSize": 15,
    "maxPages": 1,
    "maxRecords": 15,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/construction-permit-lead-monitor").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 '{
  "cities": [
    "chicago"
  ],
  "dateFrom": "",
  "dateTo": "",
  "permitTypes": [],
  "keywords": "",
  "mode": "changesOnly",
  "pageSize": 15,
  "maxPages": 1,
  "maxRecords": 15
}' |
apify call getascraper/construction-permit-lead-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=getascraper/construction-permit-lead-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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