Building Permits Feed: New US City Permits Daily
Pricing
from $0.90 / 1,000 permit returneds
Building Permits Feed: New US City Permits Daily
New building permits from 23 US city and county open-data feeds (NYC, LA, Chicago, SF, Austin, Seattle, DC and more) in one normalized schema, with a new-since-last-run mode and filters for trade (solar, roofing, HVAC, pool), valuation and contractor.
Pricing
from $0.90 / 1,000 permit returneds
Rating
0.0
(0)
Developer
Todd Handler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Building Permits Feed: new permits from 22 US cities and counties, daily, in one schema
Get every new building permit from the largest US cities that publish permits as open data (New York, Los Angeles, Chicago, San Francisco, Austin, Seattle, Washington DC, Miami-Dade and more) in one clean schema. Schedule it in New mode and each run returns only the permits issued since your last run.
- 23 city and county feeds, one schema. Permit number, type, work description, trade tags, valuation, address, ZIP, coordinates, contractor, dates and a link to the permit on the city's own portal.
- New since last run. Daily new permits without diffing anything yourself. Late-published permits are still caught.
- Trade filters that work across cities. Solar, battery storage, EV chargers, roofing, HVAC, pools, ADUs, new construction, demolition and 15 more, detected from each city's own wording.
- Valuation, contractor, ZIP and property-use filters. Only $50k+ jobs, only residential, only your service area, or only a competitor's permits.
- Monitored sources. Every run checks each city's dataset for renames, removed columns and stale data, and reports it.
- Cheap. $1.50 per 1,000 permits, less on higher Apify plans.
Who uses it
- Contractors and home-service companies (solar, roofing, HVAC, pools, windows) finding homeowners who just pulled a permit
- Suppliers and distributors selling to the contractors named on permits
- Lenders, insurers and proptech watching renovation and new-construction activity by ZIP
- Market researchers and journalists tracking construction trends
- AI agents that need fresh, structured permit data (see "For AI agents")
Cities
| City | Platform | Permits per week (approx.) | Valuation | Contractor | Coordinates | License |
|---|---|---|---|---|---|---|
| New York, NY | Socrata | 2,900 | Yes | Yes | Yes | NYC Open Data Law (no use restrictions) |
| Los Angeles, CA | Socrata | 750 | Yes | No | Yes | City of Los Angeles Open Data terms |
| Chicago, IL | Socrata | 600 | Yes | Yes | Yes | City of Chicago Data Terms of Use |
| San Francisco, CA | Socrata | 250 | Yes | No | Yes | ODC PDDL (public domain) |
| Austin, TX | Socrata | 1,000 | Partial | Yes | Yes | Public domain |
| Seattle, WA | Socrata | 120 | Yes | No | Yes | Public domain |
| New Orleans, LA | Socrata | 260 | Yes | Yes | Yes | CC0 |
| Cincinnati, OH | Socrata | 140 | Yes | Yes | Partial | Public domain |
| Baton Rouge (parish), LA | Socrata | 120 | Yes | Partial | Yes | Public domain |
| Norfolk, VA | Socrata | 220 | Yes | No | Yes | City of Norfolk Open Data terms |
| Montgomery County, MD (residential and commercial) | Socrata | 130 | Yes | No | Yes | Public domain |
| Mesa, AZ | Socrata | 60 | Yes | Partial | Yes | City of Mesa Open Data Terms of Use |
| Kansas City, MO | Socrata | 100 | No | No | No | Open Data KC Terms of Use |
| Marin County, CA | Socrata | 90 | Yes | Yes | Yes | ODbL |
| Nashville, TN | ArcGIS | 220 | Yes | Yes | Yes | Metro Nashville Open Data policy |
| Columbus, OH | ArcGIS | 680 | Partial | No | Yes | CC0 |
| Fort Worth, TX | ArcGIS | 1,100 | Partial | No | No | City of Fort Worth Data Terms of Use |
| Baltimore, MD | ArcGIS | 530 | Yes | No | Yes | Open Baltimore terms |
| Cleveland, OH | ArcGIS | 160 | Yes | Yes | Yes | ODbL |
| Detroit, MI | ArcGIS | 150 | Yes | No | Yes | City of Detroit Open Data terms |
| Miami-Dade County, FL | ArcGIS | 1,000 | Yes | Yes | No | Miami-Dade County open data |
| Washington, DC | ArcGIS | 300 | No | No | Yes | CC BY 4.0 |
Notes:
- Fort Worth publishes filing dates, not issue dates, so its rows are new applications (
date_basis: filed). - Kansas City refreshes weekly. Los Angeles, Cleveland and DC publish a few days behind. The default 7-day window absorbs the lag, so nothing is missed in New mode.
- "Contractor" means the city publishes a contractor or permit-holder business name. Austin, Mesa and Miami-Dade also publish a contractor phone.
Want another city? Open an issue with the portal link. Cities on Socrata or ArcGIS are quick to add.
Quick start
- Pick your Cities (leave empty for all of them).
- Optional: pick Trades, set a Minimum valuation, or add ZIP codes.
- Click Start. Results appear in the Permits table and export as JSON, CSV or Excel.
Get new permits every day (recommended)
- Set Mode to New since last run and keep Lookback window at 7 days.
- Create a daily schedule under Schedules in Apify Console.
- Send results to Google Sheets, Slack, email, a CRM, a webhook, Make or n8n with Apify integrations.
The first run returns every matching permit in the window (turn off Return the window on the first New-mode run to start silent). After that you get only permits you have not received before, marked change_type: new. Each run rechecks the whole window, so a permit the city publishes three days late still reaches you once.
The saved state is keyed to your filters, so changing a filter starts a fresh baseline. Set State key to give it a fixed name.
Filters
| Filter | What it does |
|---|---|
| Trades (any) | solar, battery_storage, ev_charger, generator, roofing, hvac, pool, electrical, plumbing, gas, new_construction, addition, remodel, adu, demolition, fence, sign, fire_protection, windows_doors, siding, foundation, deck_patio, elevator, grading_site, mechanical |
| Permit categories (any) | building, electrical, plumbing, mechanical, demolition, fire, sign, elevator, grading, other |
| Permit type contains | Words matched against the city's own type, subtype and work class |
| Keywords and exclude keywords | Words matched against the description and type, for example tesla or generator |
| Minimum and maximum valuation | Declared job value in USD. Permits with no value are dropped when either is set |
| Property use | residential or commercial, where the city publishes it |
| Contractor or applicant contains | Track one company's permits, or a competitor's |
| Only permits that name a contractor | Drop permits with no contractor |
| ZIP codes | Exact ZIPs or prefixes, for example 787 for central Austin |
| Max permits per city | Snapshot mode only, keeps the newest |
Trade tags come from the permit type and the work description together, so a re-roof with a solar install gets both roofing and solar. Where a city has its own flags (Los Angeles solar and EV, San Francisco re-roof and ADU), those are used too.
Output
One row per permit. A real example:
{"permit_id": "cleveland:BRE26-043897","source_id": "cleveland","city": "Cleveland","state": "OH","permit_number": "BRE26-043897","permit_type": "Construction Project","permit_subtype": "Building Permits","work_class": "Residential Electrical","description": "5.785 kW Roof-Mount Solar System Installation. BUILDING PERMIT NO. BRB26-040076","category": "electrical","trade_tags": ["solar", "electrical"],"property_use": "residential","status": "Inspection Pending","applied_date": "2026-10-09","issued_date": "2026-10-15","date_basis": "issued","valuation": 4698.0,"square_feet": null,"housing_units": null,"address": "2501 SCRANTON RD, CLEVELAND, OH, 44113","zip": "44113","latitude": 41.478103,"longitude": -81.694522,"parcel_id": "00411011","contractor_name": "YELLOWLITE, INC","contractor_license": "ELECT20-001512","contractor_phone": null,"applicant_name": null,"record_url": "https://aca-prod.accela.com/COC/Cap/CapDetail.aspx?Module=BuildingHousing&...","source_url": "https://data.clevelandohio.gov/datasets/c08ddeaf2d1e41679a03103ff4e9fe17","license": "ODbL 1.0 (attribution, share-alike)","change_type": null,"fetched_at": "2026-10-22T01:10:33Z","raw": null}
Field notes
- Fields a city does not publish are
null. Valuations of $0 or $1 are placeholders in most cities and come through asnull. permit_idis stable across runs: the city ID plus the permit number (New York adds the filing sequence, so a renewal is a new row).issued_dateis the city's local date.date_basisisfiledfor Fort Worth.record_urllinks to the permit on the city's own permit system, where the city provides one (Austin, Seattle, Cincinnati, Columbus, Cleveland).source_urlandlicensename the dataset each row came from. Keep them if you republish the data. Some datasets (Cleveland and Marin County, ODbL; DC, CC BY) ask for attribution.- Turn on Include the original record to get every field the city publishes under
raw. - Owner names are not in the normalized fields. Where a city publishes them, they are in
raw.
Source health
Each run writes a SUMMARY record to the key-value store with one entry per city:
| Status | Meaning | Rows delivered? |
|---|---|---|
OK | Dataset found, columns as expected, data is fresh | Yes |
RENAMED | The dataset title changed | Yes |
SCHEMA_CHANGED | A column the mapping reads is gone; those output fields are empty | Yes |
STALE | The newest record is older than expected for that city | Yes, if any |
MISSING | The dataset ID no longer resolves (moved or retired) | No |
BROKEN | The date or permit-number column is gone | No |
ERROR | The portal failed after retries | No |
The run status message lists any city that is not OK. One city failing never stops the others. The maintainer runs the same check on a schedule and updates a city's mapping when a portal changes.
Pricing
Pay per event. You only pay for what the run delivers.
| Event | Price (Free and Starter plans) |
|---|---|
| Permit returned | $0.0015 ($1.50 per 1,000) |
| City checked (one per city per run) | $0.0005 |
Higher Apify plans get lower per-permit prices. A daily New-mode run over 5 cities filtered to roofing costs about $0.0025 for the checks plus about 4 cents for the permits, roughly $1.50 a month. Set a maximum cost per run in the run options and the Actor stops cleanly at that limit. In New mode, a city cut off by the limit is not marked as delivered, so the next run sends it.
For AI agents
- Input:
cities(array of city IDs from the table, empty for all),mode(snapshotornew),daysBack, and the optional filters above (trades,minValuation,zipCodes,contractors,propertyUse). - Output: one row per permit; the
SUMMARYkey-value record holds per-city health. - Cost: $0.0015 per permit plus $0.0005 per city. Use
trades,zipCodesormaxPermitsPerCityto keep runs small. - City IDs:
new-york-city,los-angeles,chicago,san-francisco,austin,seattle,new-orleans,cincinnati,baton-rouge,norfolk,montgomery-county-md-residential,montgomery-county-md-commercial,mesa,kansas-city,marin-county,nashville,columbus,fort-worth,baltimore,cleveland,detroit,miami-dade-county,washington-dc.
Limits and good practice
- The Actor reads public open-data APIs (Socrata and ArcGIS REST) that cities provide for reuse. It does not log in or scrape permit-system web pages.
- Requests are rate-limited per portal and retried on temporary errors.
- Each city provides its data as is and makes no warranty about it. This Actor is not affiliated with or endorsed by any city.
- Data is as accurate as each city's publication. Trade tags are keyword based and occasionally miss or over-tag unusual wording.
- Contractor phones are business lines as the city publishes them. Follow the rules that apply to your outreach (for example, do-not-call rules for phone marketing).
Data sources and required notices
All permit data comes from the cities' and counties' own open-data portals. Each row's source_url and license name the dataset it came from. Data from the City of Mesa, Arizona is credited to the City of Mesa. Each city provides its data as is, makes no warranty about it, and has not endorsed this Actor.
The following notices are required by the cities' terms of use:
- City of Chicago: "This site provides applications using data that has been modified for use from its original source, www.cityofchicago.org, the official website of the City of Chicago. The City of Chicago makes no claims as to the content, accuracy, timeliness, or completeness of any of the data provided at this site. The data provided at this site is subject to change at any time. It is understood that the data provided at this site is being used at one's own risk."
- City of Kansas City: "This site provides applications using data that has been modified for use from its original source, www.data.kcmo.gov, the official open data website of the City of Kansas City. The City of Kansas City makes no claims as to the content, accuracy, timeliness, or completeness of any of the data provided at this site. The data provided at this site is subject to change at any time. It is understood that the data provided at this site is being used at one's own risk."
- City of Fort Worth: the City of Fort Worth does not warrant the data in any way and makes each of the disclaimers in its Data Disclaimer and Terms of Use.
Support
Open an issue on the Actor page. Issues are answered within one business day. If the Actor saves you time, a rating helps other people find it.