PermitIQ — Building Permit API
Pricing
from $10.00 / 1,000 permit records
PermitIQ — Building Permit API
ZIP-level market trends + urgency-scored contractor leads from Chicago, Austin, NYC, LA & SF. The only permit actor with hotspot scoring and month-over-month analysis. Official Socrata APIs — no scraping. MCP-ready for AI agents.
Pricing
from $10.00 / 1,000 permit records
Rating
0.0
(0)
Developer
Jim Giganti
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
8 days ago
Last modified
Categories
Share
PermitIQ — US Building Permit Intelligence API
PermitIQ is the only building permit actor with ZIP-level market trend analysis and month-over-month hotspot scoring. Query official government APIs across Chicago, Austin, NYC, Los Angeles, and San Francisco — get urgency-scored contractor leads, market trend data by ZIP code, or raw permit records for AI pipelines. No scraping, no browser automation, no proxies. Direct Socrata API access. MCP-ready for Claude, Cursor, and any AI agent.
What it does
PermitIQ returns structured building permit data in three output modes tuned for different buyers:
| Mode | Use case | Output |
|---|---|---|
leads | Contractor outreach, sales prospecting | Urgency-scored permits sorted by opportunity value |
trends | Market research, territory planning | ZIP-level hotspot scores + month-over-month volume delta |
raw | Data pipelines, AI agents, custom analysis | Normalized records with explicit nulls, MCP-ready |
Quick start
Input
| Parameter | Required | Description |
|---|---|---|
cities | ✅ | chicago, austin, nyc, los_angeles, san_francisco |
outputMode | — | leads (default), trends, or raw |
permitType | — | all (default), roofing, hvac, plumbing, electrical, new_construction, remodel, solar, adu |
daysBack | — | Days of history to retrieve (default: 30, max: 365) |
maxResults | — | Record cap (default: 100) |
minEstimatedCost | — | Filter by minimum project value in USD |
zipCode | — | Restrict to a single ZIP code |
budgetUsd | — | Spend cap based on $0.01/record PPE pricing |
Example: roofing leads in Chicago, last 7 days
{"cities": ["chicago"],"outputMode": "leads","permitType": "roofing","daysBack": 7,"maxResults": 50}
Example: ADU permits in Los Angeles and San Francisco
{"cities": ["los_angeles", "san_francisco"],"outputMode": "leads","permitType": "adu","daysBack": 30}
Example: market trend analysis across California cities
{"cities": ["los_angeles", "san_francisco"],"outputMode": "trends","daysBack": 90}
Example: all 5 cities, raw mode for AI pipeline
{"cities": ["chicago", "austin", "nyc", "los_angeles", "san_francisco"],"outputMode": "raw","daysBack": 7,"maxResults": 500}
Output fields
Leads mode
permitId,cityId,issueDate,address,zip,lat,lngnormalizedType— normalized category (roofing, hvac, solar, adu, etc.)description— original permit work descriptionpermitStatus— issued | pending | approved | expired | voidestimatedCost— project value in USD (seecostType)contractor,contractorConfidenceurgencyScore(1–100) — recency + value + type demandurgencyLabel— hot | warm | cool | low
Trends mode
zipCode,city,permitCount,totalEstimatedValuehotspotScore(0–100) — volume + value + growth compositemomDelta— month-over-month % change in permit volume
Raw mode
All fields above plus rawPermitType, applicationDate, expirationDate, costType, propertyType. Explicit null on missing fields (no undefined).
ADU opportunity — California 2026
Los Angeles and San Francisco are the highest-volume ADU markets in the US. New 2026 California laws (SB 79, AB 462, SB 543) mandate faster ADU approvals statewide. San Francisco's dataset includes a native adu boolean field — the most reliable ADU signal available anywhere.
Target buyers: ADU contractors and builders, solar installers, permit expediting firms, real estate investors tracking density.
Pricing
Pay-per-result: $0.01 per record. Set budgetUsd to cap spend. No monthly subscription.
Use with AI agents (MCP)
PermitIQ is available as a tool through the Apify MCP server at https://mcp.apify.com. Any MCP-compatible AI agent (Claude, Cursor, VS Code Copilot, custom LangGraph agents) can call PermitIQ directly without writing API code.
Dedicated tool URL (recommended)
https://mcp.apify.com?tools=actors,Midwest_United/permitiq
Connect from Claude Desktop
Add to your claude_desktop_config.json:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com","headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}
Then ask Claude:
"Use PermitIQ to find hot roofing leads in Chicago from the last 7 days"
"Show me ZIP-level permit trends in Los Angeles for the last 90 days"
"Find ADU permits in San Francisco and Los Angeles from the last 30 days"
"Get raw permit records for NYC electrical permits this month"
Connect from Cursor or VS Code
Add to .cursor/mcp.json or your VS Code MCP settings:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com","headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}
Call via Apify API
const response = await fetch('https://api.apify.com/v2/acts/Midwest_United~permitiq/run-sync-get-dataset-items',{method: 'POST',headers: {'Content-Type': 'application/json','Authorization': 'Bearer YOUR_APIFY_TOKEN'},body: JSON.stringify({cities: ['los_angeles', 'san_francisco'],outputMode: 'leads',permitType: 'adu',daysBack: 30})});const leads = await response.json();
Use in an AI pipeline
The raw output mode is designed for AI pipeline ingestion:
- All fields present with explicit
null— no undefined surprises - Consistent schema across all five cities
normalizedTypeis always a normalized enum, never free textissueDateis always ISO 8601 or null — no date parsing needed
Technical notes
Data sources. All data comes from official city Socrata open data portals:
- Chicago:
data.cityofchicago.org(datasetydr8-5enu) — daily - Austin:
data.austintexas.gov(dataset3syk-w9eu) — daily - NYC:
data.cityofnewyork.us— merged from DOB NOW + historical datasets, daily - Los Angeles:
data.lacity.org(datasetpi9x-tg5x) — daily - San Francisco:
data.sfgov.org(dataseti98e-djp9) — weekly
NYC dataset merge. NYC building permits are split across two Socrata datasets. PermitIQ fetches both and merges by permit number so you get complete records.
SF update frequency. San Francisco's DBI uploads permit data weekly. Use daysBack: 30 or greater for SF to ensure records are returned.
SF native ADU field. San Francisco's dataset includes a dedicated adu boolean field. PermitIQ uses this as a high-confidence override — SF ADU permits are the most reliably identified of any city.
Date validation. All dates are validated with UTC round-trip checking. Invalid dates are rejected rather than silently rolled forward.
SoQL query building. Query strings are built manually (no URLSearchParams) to preserve Socrata's $ prefixed operators ($where, $limit, etc.).
Budget cap. If budgetUsd is set, the actor estimates spend before pushing records and exits cleanly if the cap would be exceeded.
Supported cities
| City | Dataset | Update frequency | Coordinates | Contractor |
|---|---|---|---|---|
| Chicago, IL | Socrata ydr8-5enu | Daily | ❌ | Via contact scan |
| Austin, TX | Socrata 3syk-w9eu | Daily | ✅ | Direct field |
| New York City, NY | Socrata (2 datasets merged) | Daily | Partial | Low confidence |
| Los Angeles, CA | Socrata pi9x-tg5x | Daily | ✅ | ❌ Not in dataset |
| San Francisco, CA | Socrata i98e-djp9 | Weekly | ✅ | ❌ Separate dataset |
Want your city added? Open an issue — any city publishing permits on a Socrata open data portal can be added.