SearchCoveragePricingBlog SupportDocs Solar & EnergyReal EstateInsuranceContractors Sign In / Dashboard Get Free 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, 39 million permits

PermitStack aggregates building permit data from 165 active U.S. jurisdictions (plus 19 historical archive sources) into a single, normalized REST API. Every permit is classified into one of 19 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 (19 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 39 million building permits across 165 active U.S. jurisdictions, plus 19 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. Developer ($49/month) gives you 10,000 requests per day. Startup ($149/month) gives you 100,000 requests per day with webhook alerts. Growth ($499/month) gives you 500,000 requests per day, and Enterprise plans cover custom needs.

Start building with permit data today

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

Get Free API Key