TX Austin Building Permits avatar

TX Austin Building Permits

Pricing

from $0.08 / 1,000 permit records

Go to Apify Store
TX Austin Building Permits

TX Austin Building Permits

Austin, TX building permits (public open data, 2.37M records) - the city's full consolidated permit file (electrical/plumbing/building/mechanical) with the contractor behind each job plus valuation, housing units and status. Filter by office/contractor/valuation or aggregate.

Pricing

from $0.08 / 1,000 permit records

Rating

0.0

(0)

Developer

Wenhao Yang

Wenhao Yang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Categories

Share

TX Austin Building Permits - the City's Full Consolidated Permit File

The City of Austin publishes its entire building-permit file - every permit issued since 1921 across the five offices the city consolidates into one register - as open data. This actor turns that register into a charged-per-record lookup and filter tool that carries what the national building-permit aggregators don't: the contractor behind each job.

Built for: construction lead-gen (which contractor is pulling work where - and how to reach them), homebuilder & development research, property diligence, and permitting-activity analysis by council district or office.

What it covers

~2.38M permits - the complete consolidated file, active and historical:

OfficePermits
Electrical687,175
Plumbing545,459
Building519,982
Mechanical505,238
Driveway / sidewalks116,511

Each permit carries the job's depth - the contractor company, contact name, phone, address and city (populated on about half the file - 1.19M records with a real contractor company, and the reason this actor exists), plus:

  • total job valuation - a real numeric column, so you can range-filter it: ~492k permits are valued at $50k+, ~22.7k at $1M+
  • housing units (77% covered) - ~32.5k building permits carry more than one unit = the multifamily signal
  • number of floors, condominium flag, existing / new / remodel square footage
  • permit class (residential vs commercial), work class (new / remodel / repair / addition...), council district (91%), jurisdiction - Austin full-purpose vs the ETJ / extraterritorial belt
  • the applied / issued / status / expires / completed date chain, street address + latitude/longitude, and the work description

Status & live work

Statuses are the city's own words, and they're mostly terminal: Final (2,004,536 - completed) / Expired (169,150) / VOID (153,260) / Active (28,085) / Withdrawn / Cancelled. The long tail mixes office notes ("Cancelled - Contractor Required", "Inactive Pending Revision") that a naive parser trips on.

Live work has its own lane: the city flags every permit issued in its last-30-days window - the recent mode hands you that exact fresh slice (~4,981 permits right now), so you can watch what's being pulled this month without dumping 2.4M rows.

Typical questions

  • "Every permit D R Horton / KB Home pulled in Austin - current and historical."
  • "Show recent building permits valued over $1M with the contractor's phone."
  • "Where are the multifamily projects (5+ units) going in, by council district?"
  • "What did each office issue last month?"
  • "Every permit on this address."
  • "Aggregate the register by office or council district."

Inputs

InputWhat it does
moderows (default) / recent (last-30-days live work) / aggregate
permitTypeoffice: electrical / plumbing / building / mechanical / driveway
contractorcontractor company or contact name (fuzzy)
statusActive / Final / Expired / VOID / Withdrawn / ... Blank = any
permitClass / workClassresidential/commercial + new/remodel/repair...
address / councilDistrictwhere the work is
valuationMin / valuationMaxtotal job valuation range (numeric)
housingUnitsMinminimum housing units (multifamily finder)
issuedFrom/To / appliedFrom/Todate-range filters
groupByaggregate over office / class / status / council district / work class / year
maxResultscap records (default 50)

Default run = the 50 most recently issued permits - fast for the daily auto-test. For a targeted query add a filter; for a broad view use aggregate (a handful of summary rows, not a 2.4M-row dump).

Example inputs

A contractor's file - contractor matches the company name or the contact name (fuzzy).

{ "mode": "rows", "contractor": "Lugo", "maxResults": 5 }

Live work in one office right now - mode=recent is the city's own last-30-days window, and permitType names the office.

{ "mode": "recent", "permitType": "building", "maxResults": 5 }

Multifamily projects - housingUnitsMin finds the permits carrying five or more housing units.

{ "mode": "rows", "housingUnitsMin": 5, "maxResults": 5 }

The register by office - mode=aggregate returns one count row per group instead of the permits.

{ "mode": "aggregate", "groupBy": "permitTypeDescription" }

Example output

mode=rows, contractor=Lugo - one permit from that contractor's file, carrying the job's valuation, units and contact details:

{
"platform": "tx-austin-building-permits",
"source": "austin-building-permits",
"mode": "rows",
"groupKey": "",
"groupCount": "",
"groupBy": "",
"permitNumber": "2026-115314 PP",
"permitType": "PP",
"permitTypeDescription": "Plumbing Permit",
"permitClass": "Residential",
"permitClassMapped": "Residential",
"workClass": "Repair",
"status": "Active",
"description": "Replacing angle stop supply water valve with new compression valves x6",
"appliedDate": "2026-09-02",
"issuedDate": "2026-09-12",
"statusDate": "2026-09-12",
"expiresDate": "2027-03-11",
"completedDate": "",
"calendarYearIssued": "2026",
"fiscalYearIssued": "2026",
"issuedInLast30Days": "Yes",
"issueMethod": "Permit Center",
"totalJobValuation": "",
"totalValuationRemodel": "",
"housingUnits": "1",
"numberOfFloors": "0",
"condominium": "No",
"totalExistingBldgSqft": "",
"remodelRepairSqft": "1",
"totalNewAddSqft": "",
"totalLotSqFt": "",
"certificateOfOccupancy": "No",
"councilDistrict": "5",
"jurisdiction": "AUSTIN FULL PURPOSE",
"projectId": "13766025",
"masterPermitNum": "",
"contractorCompany": "Lugo's Plumbing Service",
"contractorName": "Salvador Lugo",
"contractorPhone": "5125074677",
"contractorAddress1": "",
"contractorAddress2": "500 N Avenue",
"contractorCity": "Elgin",
"contractorZip": "78621",
"applicantName": "",
"applicantOrg": "",
"applicantPhone": "",
"address": "2704 ACOPIO BND",
"city": "AUSTIN",
"state": "TX",
"zipcode": "78745",
"permitLocation": "2704 ACOPIO BND",
"latitude": "",
"longitude": ""
}

mode=aggregate, groupBy=permitTypeDescription - the register by office:

Electrical Permit 687,175
Plumbing Permit 545,459
Building Permit 519,982
Mechanical Permit 505,238
Driveway / Sidewalks 116,511

Low cost

From $0.0001 per record, down to $0.00008 at Gold - billed only for the rows you use, at the low end of the store. Cost scales with what you pull, not with the size of the register - and each record is metered individually.

Austin's permit file is a "just download the CSV" dataset that hides real traps: the status column mixes terminal words and office notes (Final vs "Cancelled - Contractor Required" vs "Inactive Pending Revision") so a substring filter drags in the wrong records; the contractor and valuation fields are filled on only part of the file and there is no honest way to know which rows carry them without counting every column; the five offices each assign their own permit numbers (so the register is not one clean sequence); and the city publishes no daily refresh marker, so "what changed today" has to be read off the issue-date stream, not a delta column. Normalizing that into a register where a contractor / valuation / recent query returns exactly the permits you mean is the actual product. Every pull is integrity-checked against the feed's known shape, so a degraded source fails loudly instead of returning bad rows.

Source