# New Opening Permit Lead Radar (`zinin/new-opening-permit-lead-radar`) Actor

Detect commercial permit and license openings from five fixed Socrata datasets and return evidence-backed signals.

- **URL**: https://apify.com/zinin/new-opening-permit-lead-radar.md
- **Developed by:** [Tim Zinin](https://apify.com/zinin) (community)
- **Categories:** MCP servers, Lead generation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## New Opening Permit Lead Radar

Find recent commercial opening signals in five fixed public city datasets and return ranked permit or business-license leads with source IDs, addresses, dates, scores, and observed source-field evidence. The actor is bounded, deterministic, and designed for scheduled lead research.

### What you get

- Commercial permit and license signals from Chicago, New York City, Los Angeles, Seattle, and Austin.
- Stable dedupe keys, deterministic ranks, recency and opening scores, and source metrics.
- Evidence for the observed business, address, event date, description, and status fields.
- Bounded pagination, retries, redirects, request replay protection, and compact OUTPUT metadata.
- Dataset rows are billed only after linked result delivery succeeds.
- Runs on Apify: schedule it, monitor it, call it from the API, and export JSON, CSV, or Excel.

### How to run it

1. Click Try for free and open the Input tab.
2. Set schemaVersion to 1.0 and optionally choose lookbackDays, maxResults, and freshnessMinutes.
3. Click Start, then read useful rows from the Dataset and the compact envelope from the OUTPUT key-value record.

### Pricing

Pay-per-event: $0.005 per run start + $0.03 per useful result. No monthly seat. Empty, invalid, unavailable, budget-stopped, and undelivered results are not charged as useful rows. Ten useful rows cost $0.30 in result events, plus the start event.

### Input

```
{"schemaVersion":"1.0","requestId":"permit-demo-001","maxResults":10,"freshnessMinutes":60,"detailLevel":"compact","lookbackDays":30}
```

### Output

```
{"schemaVersion":"1.0","requestId":"permit-demo-001","status":"ok","results":[{"dedupeKey":"stable-key","rank":1,"score":91}],"errors":[],"metadata":{"resultCount":1,"datasetWriteCount":1,"billedResultCount":1}}
```

Useful Dataset rows include sourceId, sourceRecordId, businessName, address, eventDate, commercialScore, openingScore, signalScore, evidence, and sourceMetrics.

#### Related tools

Related tools for adjacent workflows in operational gap-lead generation.

| Actor | What it does |
|---|---|
| [EU Accessibility Privacy Lead Scanner](https://apify.com/zinin/eu-accessibility-privacy-lead-scanner) | Pair it in the operational gap-lead generation workflow: BYOD compliance scanner for observed accessibility and privacy exposure signals on a submitted URL.... |
| [EU AI Act Transparency Lead Scanner](https://apify.com/zinin/eu-ai-act-transparency-lead-scanner) | Pair it in the operational gap-lead generation workflow: BYOD compliance scanner for observed AI transparency signals on a submitted URL. Deterministic,... |
| [Clinic Reception Gap Lead Finder](https://apify.com/zinin/clinic-reception-gap-lead-finder) | Pair it in the operational gap-lead generation workflow: Analyze submitted clinic websites for reception-channel gaps with exact BYOD crawling and no discovery |
| [Restaurant Booking Gap Lead Finder](https://apify.com/zinin/restaurant-booking-gap-lead-finder) | Pair it in the operational gap-lead generation workflow: Analyze submitted restaurant websites for booking-channel gaps with exact BYOD crawling and no discovery |

### FAQ / Limitations

**Does it discover businesses?** No. It reads only the five fixed public datasets and does not accept source URLs.

**Why can a recent row be absent?** A row needs a valid source identity, address, event date, commercial signal, active/opening signal, and a date inside the requested lookback.

**What is this not?** It is not a permit approval, legal, construction, or investment decision service. Verify important records with the issuing authority.

**How is duplicate work controlled?** Cloud runs use the named RequestQueue unique key; local storage tests verify persistence, while local RequestQueue concurrency remains a platform-specific residual.

**Need help?** Check the run log and OUTPUT errors first, then report the request ID and source ID on the Actor page.

# Actor input Schema

## `schemaVersion` (type: `string`):

Input schema version.

## `requestId` (type: `string`):

Correlation key for this run.

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

Maximum useful rows to bill and return.

## `freshnessMinutes` (type: `integer`):

Cache freshness window in minutes.

## `detailLevel` (type: `string`):

Compact or evidence-rich output.

## `lookbackDays` (type: `integer`):

Maximum permit age in days.

## Actor input object example

```json
{
  "schemaVersion": "1.0",
  "requestId": "permit-daily-prefill-001",
  "maxResults": 10,
  "freshnessMinutes": 60,
  "detailLevel": "compact",
  "lookbackDays": 30
}
```

# Actor output Schema

## `OUTPUT` (type: `string`):

JSON-encoded compact OUTPUT envelope.

# 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 = {
    "requestId": "permit-daily-prefill-001"
};

// Run the Actor and wait for it to finish
const run = await client.actor("zinin/new-opening-permit-lead-radar").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 = { "requestId": "permit-daily-prefill-001" }

# Run the Actor and wait for it to finish
run = client.actor("zinin/new-opening-permit-lead-radar").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 '{
  "requestId": "permit-daily-prefill-001"
}' |
apify call zinin/new-opening-permit-lead-radar --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/OOkTDl1sXc2K3QUkq/builds/mPO9SWgv6Akr3ADqs/openapi.json
