Platform
Search Coverage Property History Alerts
Solutions
Solar & Energy Solar Permit Data Real Estate Insurance Contractors
Company
Pricing API Docs Blog Sign In Get API Key
April 9, 2026Guide8 min read

How to Get Building Permit Data via API in 2026

Building permit data has been locked away in thousands of municipal portals, each with different formats, schemas, and access methods. Until now, getting permit data programmatically meant scraping government websites or paying enterprise prices. Here's the easier way.

Why building permit data matters

Every time someone builds, renovates, installs solar panels, or replaces a roof in the United States, they need a building permit. That permit becomes a public record containing the property address, work description, estimated value, contractor name, and project timeline.

This data is a goldmine for solar companies (finding homeowners with new roofs), real estate investors (spotting renovation waves), insurance underwriters (verifying property conditions), contractors (generating leads), and proptech startups (enriching property profiles). The problem has always been access.

The old way: scraping 20,000 municipal portals

The U.S. has over 20,000 permitting jurisdictions. Each city publishes permit data differently. New York uses Socrata. Some cities use ArcGIS. Others publish CSVs. Many still require phone calls to the county clerk. Even the cities with APIs have completely different field names, date formats, and permit type taxonomies.

Building a permit data pipeline from scratch means writing custom connectors for each city, normalizing wildly inconsistent schemas, classifying free-text descriptions into usable categories, and maintaining it all as city portals change. It's months of engineering work before you get a single useful query.

The new way: one API, 64 million permits

PermitStack aggregates building permit data from 7,000+ U.S. cities in all 50 states — 613 active data sources including 129 counties and 9 statewide feeds, plus 67 historical archive sources — into a single, normalized REST API. Every permit is classified into one of 20 categories (solar, roofing, HVAC, electrical, new construction, etc.), geocoded with latitude and longitude, and searchable by dozens of filters.

Get an API key in 30 seconds and start querying immediately.

Quick start: your first API call

Step 1: Get your free API key

Visit permit-stack.com and click "Get API Key." Enter your name and email, verify with the code we send, and you'll have a key instantly. The free tier gives you 100 requests per day.

Step 2: Search permits with curl

# Find solar permits in Austin, TX
curl "https://api.permit-stack.com/v1/permits/search?city=Austin&state=TX&category=solar" \
  -H "X-API-Key: pk_your_key_here"

Step 3: Parse the response

{
  "total": 13604,
  "page": 1,
  "per_page": 20,
  "results": [{
    "permit_number": "2026-040187 EP",
    "category": "SOLAR",
    "address_street": "2900 PECAN SPRINGS RD",
    "address_city": "AUSTIN",
    "address_zip": "78723",
    "description_raw": "Install new 5.76 kW rooftop solar system...",
    "latitude": 30.3009,
    "longitude": -97.6846
  }]
}

Python example

import requests

API_KEY = "pk_your_key_here"
headers = {"X-API-Key": API_KEY}

# Search for new construction permits in Chicago
response = requests.get(
    "https://api.permit-stack.com/v1/permits/search",
    headers=headers,
    params={
        "city": "Chicago",
        "category": "new_construction",
        "min_value": 500000,
        "per_page": 50
    }
)

data = response.json()
print(f"Found {data['total']} permits")

for permit in data["results"]:
    print(f"  {permit['address_street']} - ${permit.get('estimated_value', 'N/A')}")

JavaScript example

const API_KEY = "pk_your_key_here";

const response = await fetch(
  "https://api.permit-stack.com/v1/permits/search?city=Seattle&category=roofing",
  { headers: { "X-API-Key": API_KEY } }
);

const data = await response.json();
console.log(`Found ${data.total} roofing permits in Seattle`);

Available filters

PermitStack supports filtering by city, state, ZIP code, permit category (20 types including solar, roofing, HVAC, electrical, plumbing, new construction, demolition, and more), status, date ranges (filed after/before, issued after/before), estimated value range, contractor name, and full-text search across descriptions.

You can also look up individual permits by ID, search by street address, and query contractor profiles with their permit history.

Which cities are covered?

PermitStack currently indexes more than 64 million building permits across 7,000+ U.S. cities in all 50 states — 613 active data sources, plus 67 historical archive sources for older coverage: Chicago, Philadelphia, San Francisco, Boston, Baltimore, Columbus, Cleveland, Detroit, Pittsburgh, Minneapolis, San Antonio, Orlando, Buffalo, Cincinnati, Mesa, Norfolk, Raleigh, Hartford, Baton Rouge and dozens more. Active sources refresh daily from official city open data portals; archive sources are clearly labeled when their upstream feeds have gone dark.

Pricing

The free tier includes 100 requests per day with access to all endpoints. Paid plans scale up from there: Indie ($19/month) and Hobbyist ($29/month) add higher rate limits and full historical data. Developer ($49/month) gives you 10,000 requests per day and unlocks webhook alerts. Need higher volume? Enterprise plans are available with custom limits — just reach out.

Start building with permit data today

Get your free API key in 30 seconds. No credit card required.

Get Free API Key