GovData Labs — US Building Permits Feed avatar

GovData Labs — US Building Permits Feed

Pricing

Pay per event

Go to Apify Store
GovData Labs — US Building Permits Feed

GovData Labs — US Building Permits Feed

GovData Labs normalizes building permits from official US city, county, and state open-data APIs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

GovData Labs

GovData Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Share

A normalized building-permit feed from official US open-data APIs. Version 1 ships 26 verified sources (cities, two counties, and New Jersey's statewide construction file). Each source is a config object: endpoint, date field, and a mapper into one schema. Adding a city is a new config, not a new Actor.

For contractors, suppliers, and lead products that want solar, roofing, HVAC, electrical, and other trade signals without learning 26 column layouts.

What you get

  • city, state, permit_number
  • issued_on, applied_on, status, permit_type
  • work_description
  • trade_tags from a keyword classifier: solar, roofing, hvac, electrical, plumbing, new construction, demolition, pool, windows, siding, fence, addition, ev charger, fire protection
  • valuation
  • address, latitude, longitude when the source publishes them
  • contractor_name and contractor_license when the source publishes them
  • owner_name and applicant_name when those fields are public
  • source_id, source_url, fetched_at

Rows with no published valuation are kept unless you set minValuation. A keyword filter matches the type, the description, and the tags, so solar catches both the word and the tag.

Who it is for

  • Trade contractors who want last week's permits in a few cities
  • A nightly "new since last run" job that only pays for new or changed permits
  • Anyone who needs Chicago, Seattle, Dallas, Los Angeles, and the other sources below in one schema

How a run works

Pick city ids, a date range, optional permit-type substrings, trade keywords, and a minimum valuation. If you omit dates, the run uses the last 7 days through today. If you omit cities, it uses Chicago, Seattle, Dallas, Austin, and Cincinnati. all includes every source, including the large New Jersey file.

Each source is queried with the date pushed into SoQL, CKAN SQL, or Carto SQL. Pages stop at 1,000 rows. A source stops after 20 pages so a wide query cannot scan an entire historical file. maxResults (default 100) stops the run across cities.

"Only changes since last run" keeps one snapshot per city. The first run stores a baseline. Later runs re-read from the day before the watermark and emit only new or changed permits.

Pricing

Pay per event. You pay only for what a run returns:

EventPriceWhen
actor-start$0.010Once per valid run
permit-result$0.005Each output row
change-detected$0.005Each new or changed row after that city's baseline

One hundred permits, the default cap, cost about $0.51. One thousand permits are about $5.01. A typical thousand-row pull is a few minutes at 512 MB, well under $0.02 of Apify platform compute, billed separately.

Example input

{
"cities": ["chicago", "seattle", "austin"],
"dateFrom": "2026-10-01",
"dateTo": "2026-10-31",
"tradeKeywords": ["solar", "roofing"],
"minValuation": 5000,
"maxResults": 100
}

Example output

Chicago row retrieved live on 31 October 2026. Descriptions and costs change every day.

{
"city": "Chicago",
"state": "IL",
"permit_number": "B200517587",
"issued_on": "2026-10-29",
"permit_type": "PERMIT – EXPRESS PERMIT PROGRAM",
"work_description": "LINE VOLTAGE ELECTRICAL WORK. NEW PERMANENT 200 AMP SERVICE...",
"trade_tags": ["electrical"],
"valuation": 10511,
"address": "2500 W FARWELL AVE, Chicago, IL",
"latitude": 42.00599,
"longitude": -87.69265,
"contractor_name": null,
"source_id": "chicago",
"source_url": "https://data.cityofchicago.org/d/ydr8-5enu",
"fetched_at": "2026-10-31T00:00:00.000Z"
}

Chicago's building-permits dataset does not include a contractor name. Seattle, Austin, Dallas, Cincinnati, and several other sources do.

Verified sources

Checked live on 31 October 2026. A source is listed only if a sample row came back with usable columns.

IdPlaceAPIDataset
chicagoChicago, ILSocrataydr8-5enu
seattleSeattle, WASocrata76t5-zqzr (also on cos-data.seattle.gov)
dallasDallas, TXSocratae7gq-4sah
los-angelesLos Angeles, CASocratapi9x-tg5x
cincinnatiCincinnati, OHSocratauhjb-xac9
austinAustin, TXSocrata3syk-w9eu
san-franciscoSan Francisco, CASocratai98e-djp9
new-yorkNew York, NYSocrataDOB permit issuance ipu4-2q9a
new-york-dob-nowNew York, NYSocrataDOB NOW approved permits rbx6-tga4
new-orleansNew Orleans, LASocrata72f9-bi28
mesaMesa, AZSocratadzpk-hxfb
marin-countyMarin County, CASocratamkbn-caye
baton-rougeBaton Rouge, LASocrata7fq7-8j7r
bostonBoston, MACKAN SQLApproved Building Permits resource 6ddcd912-32a0-43df-9908-63574f8c7e77
philadelphiaPhiladelphia, PACarto SQLpermits on phl.carto.com
montgomery-residentialMontgomery County, MDSocratam88u-pqki
montgomery-commercialMontgomery County, MDSocratai26v-w6bd
cambridgeCambridge, MASocrataalterations qu2z-8suj
cambridge-newCambridge, MASocratanew construction 9qm7-wbdc
kansas-cityKansas City, MOSocratantw8-aacc
coronaCorona, CASocrata2agx-camz
gainesvilleGainesville, FLSocratap798-x3nx
honoluluHonolulu, HISocrata4vab-c87q static through 2025-06-30
new-jerseyNew Jersey municipalitiesSocrataw9se-dmra
collin-countyCollin County, TXSocrata82ee-gbj5
somervilleSomerville, MASocratanneb-s3f7 filtered to Permitting

Dropped after a live check

  • Los Angeles yv23-pmwf returned HTTP 403. pi9x-tg5x (2020 onward) is used instead.
  • Boston Socrata id msk6-43c6 is gone (HTTP 404). The CKAN resource above replaces it.
  • Dallas on the host without www 404s. www.dallasopendata.com works.
  • Seattle mags-97de 404s. 76t5-zqzr is the live building-permits set.
  • New York xfyi-uyt5 returned HTTP 403. DOB issuance and DOB NOW are both included.
  • Denver Building Permits FeatureServer responded but every layer query returned zero features on 31 October 2026, so it is not enabled. queryArcGis() is in the source for the day that layer has rows again.
  • Nashville 3h5w-q8b7 and several other guessed portal ids (Hartford, Raleigh, Louisville, Sacramento, Fort Worth) returned portal HTML rather than SODA JSON. They are not included.
  • A handful of hosts failed DNS (Las Vegas, Salt Lake City, Santa Monica, Glendale, Madison). They are not included.

Mesa filters on opened_date because that portal does not publish an issue date; the value is stored as applied_on. Philadelphia's permits table includes zoning permits as well as building permits. Honolulu will return nothing for "last 7 days" because the file stops at 30 June 2025.

Each row's source_url points at the portal dataset or, when the city publishes one, the permit deep link. Data is published as public open data by the named city, county, or state. Confirm that portal's terms before you redistribute an extract.

Limits

  • Default 100 results, hard cap 20,000.
  • 20 pages of 1,000 rows scanned per source per run.
  • 200 ms between SODA calls to the same host, with retry and backoff.
  • Optional Socrata app token. It does not apply to Boston (CKAN) or Philadelphia (Carto).
  • Per-city snapshots keep at most 2,000 hashes.

Disclaimer

Data comes from official public sources and may lag the permitting office. It is not a permit, a permission to build, or a statement by the city. Confirm the job with the building department before you treat a row as a lead you can rely on.