Dallas Building Permits Scraper avatar

Dallas Building Permits Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Dallas Building Permits Scraper

Dallas Building Permits Scraper

Scrape City of Dallas building permit records from the official Dallas Open Data portal (dallasopendata.com). Filter by permit type, land use, ZIP code, issued-date range, contractor, work description, and permit value/area. Lookup exact permits by permit number. No auth, no proxy required.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Scrape building permit records for the City of Dallas, Texas directly from the official Dallas Open Data portal (dallasopendata.com). Browse and filter permits by type, land use, ZIP code, issued-date range, contractor, work description, and declared value/area — or look up exact permits by permit number. HTTP-only via the public Socrata Open Data API. No auth, no proxy, no cookies.

What this actor does

  • Two modes: search (filtered browse) and byPermitNumbers (exact lookup)
  • Filters: permit type, land use, ZIP code, work-description keyword, street-address keyword, contractor keyword, Mapsco grid-reference keyword, issued-date range, min/max permit value, min/max area
  • Sorting: by permit value, area (high-to-low / low-to-high), or issued date (newest/oldest first)
  • Curated dropdowns for the most common permit types, land uses, and Dallas ZIP codes, plus free-text "contains" overrides for anything not in the curated list
  • Empty fields are omitted — a record only contains fields the source actually had data for

Output per permit

  • permitNumber — Dallas permit number
  • permitType — e.g. Building (BU) Single Family New Construction
  • issuedDate — ISO date (YYYY-MM-DD)
  • workDescription — free-text description of the work performed
  • landUse — zoning/land-use classification
  • streetAddress, zipCode
  • value — declared permit value in USD (omitted when not recorded)
  • area — declared area in square feet (omitted when not recorded)
  • contractor — contractor name, address, and phone as filed
  • contractorPhone — phone number extracted from contractor, when present
  • mapsco — Dallas Mapsco grid reference
  • sourceUrl — direct link to the permit's record in the Dallas Open Data API
  • recordType: "buildingPermit", scrapedAt

Input

FieldTypeDefaultDescription
modestringsearchsearch / byPermitNumbers
permitTypestring (select)Filter to one exact permit type (mode=search)
permitTypeCustomstringFree-text "contains" override for permit type
landUsestring (select)Filter to one exact land-use classification
landUseCustomstringFree-text "contains" override for land use
zipCodestring (select)Filter to one Dallas ZIP code
workDescriptionKeywordstringOnly permits whose work description contains this text
streetAddressKeywordstringOnly permits whose street address contains this text
contractorKeywordstringOnly permits whose contractor field contains this text
mapscoKeywordstringOnly permits whose Mapsco grid reference contains this text
issuedDateFromstringOnly permits issued on/after this date (YYYY-MM-DD)
issuedDateTostringOnly permits issued on/before this date (YYYY-MM-DD)
minValue / maxValueintDeclared permit value range (USD)
minArea / maxAreaintDeclared area range (sq ft)
sortBystring (select)defaultdefault / valueHighToLow / valueLowToHigh / areaHighToLow / areaLowToHigh / issuedDateNewestFirst / issuedDateOldestFirst. valueLowToHigh/areaLowToHigh implicitly require a positive value/area (permits with no recorded value/area are excluded — see FAQ) so ascending sort never returns pages of "not recorded" rows instead of real ones
permitNumbersarrayExact permit numbers to look up (mode=byPermitNumbers)
maxItemsint50Hard cap on emitted records (1–5000)

Example: recent single-family new construction

{
"mode": "search",
"permitType": "Building (BU) Single Family New Construction",
"maxItems": 50
}

Example: permits over $500k in a ZIP code

{
"mode": "search",
"zipCode": "75201",
"minValue": 500000,
"sortBy": "valueHighToLow",
"maxItems": 100
}

Example: keyword + date range

{
"mode": "search",
"workDescriptionKeyword": "swimming pool",
"issuedDateFrom": "2019-06-01",
"issuedDateTo": "2019-08-31",
"maxItems": 100
}

Example: most recently issued permits

{
"mode": "search",
"sortBy": "issuedDateNewestFirst",
"maxItems": 50
}

Example: lookup by permit number

{
"mode": "byPermitNumbers",
"permitNumbers": ["2003133024", "1904171125"]
}

Use cases

  • Real estate research — track new construction and renovation activity in a neighborhood or ZIP code
  • Contractor lead generation — find recently permitted projects and the contractors who filed them
  • Market analysis — measure building activity trends by permit type, land use, or declared value
  • Insurance & lending — verify permitted work history for a property or address
  • Journalism & civic research — analyze development patterns across Dallas

FAQ

What is the data source? The City of Dallas's official Open Data portal (dallasopendata.com), specifically the "Building Permits" dataset (e7gq-4sah), published via the Socrata Open Data API.

How current is the data? This dataset covers permits issued between January 2018 and August 2020. The City of Dallas has since migrated active permit tracking to its Accela Citizen Access portal and no longer updates this historical dataset — the records themselves, however, are complete and unchanged real permit filings.

Why do some permits have no value or area? Not every permit type requires a declared dollar value or square footage (e.g. many electrical or plumbing alteration permits). Those fields are simply omitted rather than shown as 0.

How does sortBy: issuedDateNewestFirst/issuedDateOldestFirst sort chronologically if issued_date is stored as free text? The source stores issued_date as MM/DD/YY text, so a naive alphabetical sort on that column would order by month/day, not by year. Because every date in the dataset follows the same zero-padded format and the dataset only spans 2018–2020, this actor reorders the year, month, and day components before sorting so results come back in genuine chronological order, not lexical order.

Why does sortBy: valueLowToHigh / areaLowToHigh not just sort the raw source order ascending? 24% of permits have no recorded value and 61% have no recorded area (stored upstream as 0, which this actor treats as "not recorded" and omits — see above). A naive ascending sort would put that entire not-recorded bucket first, so every returned record would be missing the very field you asked to sort by. Ascending sort therefore implicitly requires a positive value/area so you always get real, populated numbers back. valueHighToLow/areaHighToLow don't need this — the not-recorded rows already sort to the bottom on their own.

Why do some permits have no contractor? Owner-built or self-filed permits often have no contractor on file in the source system; this actor omits the field rather than showing blank/placeholder text.

What's the difference between permitType/landUse and their Custom counterparts? The dropdown lists the most common values for each field (45 of 137 permit types, 45 of 189 land uses, ranked by how many permits use them). If the value you need isn't in the dropdown, use the matching Custom field to match any value containing your text.

Why is zipCode a full dropdown but permitType/landUse/mapsco are not? The source data contains only 71 distinct ZIP codes, so every one of them fits in the dropdown — no free-text override is needed there. Permit type (137 values) and land use (189 values) are curated to their most-common ~45 for usability, with a Custom contains-match field for the rest. Mapsco grid reference has 3,000+ distinct values (a fine-grained map-grid code, not a bounded category), so it is contains-match only, with no dropdown.

Is this affiliated with the City of Dallas? No — this is an independent, third-party actor that queries the City of Dallas's public open-data API. It is not affiliated with or endorsed by the City of Dallas.

Does this actor cover current/live permit activity? No — the source dataset only covers permits issued between January 2018 and August 2020 (see "How current is the data?" above). There is no newer permits dataset published on dallasopendata.com to switch to.

Why is there no map/location field in the output? The source data has no latitude/longitude or geocoded-point column — only a text streetAddress, zipCode, and mapsco grid reference — so there's nothing reliable to populate a map field with.