Hillsborough County Building Permits Scraper avatar

Hillsborough County Building Permits Scraper

Pricing

from $1.44 / 1,000 item extracteds

Go to Apify Store
Hillsborough County Building Permits Scraper

Hillsborough County Building Permits Scraper

Search and export public Hillsborough County building permits with property details, statuses, valuations, applicants, licensed professionals, owners, dates, inspections, and official source links.

Pricing

from $1.44 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Export public Hillsborough County building permits as structured JSON without manually searching county pages. The Actor combines the county's public permit map feed with public permit-detail pages to return permit identity, status, property, valuation, applicant, licensed-professional, owner, and optional inspection information.

Use it for recurring construction intelligence, contractor activity monitoring, property diligence, territory research, and compliance workflows. Results go to the default Apify dataset for download, API access, schedules, webhooks, and integrations.

What does this Actor do?

The Actor searches the public Hillsborough County permit data available through official county systems. It supports server-side filters for:

  • permit number;
  • property address;
  • parcel or folio number;
  • city or community;
  • permit type;
  • permit status;
  • issue or completion date range.

It can also enrich selected records from the public Accela detail page with:

  • applicant information;
  • licensed professional or contractor information;
  • owner information;
  • application and expiration dates when displayed;
  • completed and upcoming inspection rows when displayed.

Applicant and contractor searches inspect public detail pages after applying another selective filter. They therefore require a start date, permit number, address, or parcel number.

Who is Hillsborough County building permit data for?

Construction sales teams

Find recently issued work in a territory and route projects to sales or estimating pipelines. Filter by location, permit type, status, and date before enriching the records you need.

Contractors and subcontractors

Monitor public permits associated with a licensed professional or company. Use scheduled runs to refresh a bounded date window and compare stable permit numbers downstream.

Property and risk teams

Look up public permit history by address, parcel, or exact permit number. Review source links and publicly displayed status, valuation, party, and inspection context.

Analysts and civic-data teams

Export normalized records to CSV, Excel, JSON, a database, or a BI tool. Use deterministic date-and-ID ordering for repeatable bounded extracts.

Why use this Hillsborough County permits scraper?

  • Official public sources — discovery uses the county's public ArcGIS permit feed and public Accela pages.
  • Typed output — dates, values, coordinates, areas, and counts are normalized where the source supplies them.
  • Useful search controls — narrow by property, permit identity, status, type, city, or date.
  • Optional deep enrichment — skip detail pages for fast list exports, or include public parties and inspections.
  • Stable record keyspermitNumber supports deduplication and change monitoring.
  • Source traceability — every result contains the official data-layer URL and public record URL.
  • Bounded executionmaxItems and maxCandidates prevent accidental unbounded scans.

This Actor does not claim to cover permits issued by the City of Tampa or another municipality outside the records exposed by Hillsborough County's selected public systems.

What Hillsborough County permit fields are extracted?

FieldMeaning
permitNumberStable public permit identifier
permitTypeCounty permit classification
statusPublic record status
categorySource category such as issued or completed
descriptionPublic project or work description
address, cityPermitted work location
parcelNumber, folioPublic property identifiers when available
issuedDate, completedDateNormalized ISO dates when supplied
applicationDate, expirationDateDates displayed on the public detail page
valuationDeclared job value when public
applicantNormalized public applicant section
contractorNormalized licensed-professional section
ownerNormalized public owner section
occupancyType, occupancyCategoryPublic occupancy attributes
bedrooms, bathrooms, unitsBuilding counts when supplied
livingAreaSqFt, totalAreaSqFtPublic area fields when supplied
latitude, longitudeWGS84 map coordinates
inspectionsPublic inspection type, status, date, inspector, and row text
recordUrlOfficial Accela permit-detail URL
sourceUrlOfficial ArcGIS source-layer URL
scrapedAtUTC extraction timestamp

Source fields can be blank. Optional properties are omitted instead of filled with invented values.

How to run the Actor

  1. Open the Actor in Apify Console.
  2. Choose a selective search, such as a recent date window, exact permit, address, parcel, city, or permit type.
  3. Set Maximum permits.
  4. Keep Include permit details on when you need public party information.
  5. Keep Include inspections on only when inspection rows are needed; this mode uses a lightweight browser.
  6. Click Start.
  7. Open the Permit records dataset and export JSON, CSV, Excel, XML, or RSS.

A fast list-only search can set both detail options to false.

Input parameters

InputTypeDefaultNotes
permitNumberstringFull or partial permit number
addressstringFull or partial street address
parcelNumberstringFull or partial parcel or folio identifier
citystringCity or community text
permitTypestringFull or partial type
statusstringFull or partial public status
fromDateYYYY-MM-DDIssue/completion date lower bound
toDateYYYY-MM-DDInclusive issue/completion date upper bound
applicantstringPublic detail-text match; requires another selective filter
contractorstringLicensed-professional match; requires another selective filter
includeDetailsbooleantrueAdd public parties and detail dates
includeInspectionsbooleantrueAdd public inspection rows; also enables details
maxItemsinteger25Save 1–1,000 matching permits
maxCandidatesinteger250Examine 1–2,000 candidates for detail-text searches

Example list-only input:

{
"fromDate": "2026-07-01",
"toDate": "2026-08-14",
"city": "Tampa",
"maxItems": 100,
"includeDetails": false,
"includeInspections": false
}

Example exact-permit input:

{
"permitNumber": "HC-BLD-26-0083889",
"maxItems": 1,
"includeDetails": true,
"includeInspections": true
}

Output example

The default dataset contains one object per permit. This representative example is anonymized; actual values come from the public source.

{
"permitNumber": "HC-BLD-25-0012345",
"permitType": "Residential New Construction",
"status": "Issued",
"category": "ISSUED",
"description": "New single-family residence.",
"address": "100 Sample Avenue",
"city": "Tampa 33602",
"parcelNumber": "012345.0000",
"issuedDate": "2025-01-15",
"valuation": 350000,
"applicant": "Sample Applicant, Example Permits LLC",
"contractor": "Sample Contractor, License EX123",
"latitude": 27.95,
"longitude": -82.45,
"inspections": [
{
"type": "Electrical Final",
"status": "Passed",
"date": "01/20/2025",
"inspector": "Inspector A"
}
],
"recordUrl": "https://aca-prod.accela.com/HCFL/Cap/CapDetail.aspx?Module=Building",
"sourceUrl": "https://services.arcgis.com/apTfC6SUmnNfnxuF/arcgis/rest/services/AccelaDashBoard_MapService20211019/FeatureServer/0",
"scrapedAt": "2025-01-15T12:00:00.000Z"
}

How much does it cost to export Hillsborough County building permits?

The Actor uses pay-per-event pricing:

  • a $0.015 start event once per run;
  • one item event for each permit record saved;
  • detail and inspection fields included in a permit have no separate event charge.

The per-record price decreases by usage tier. At the BRONZE tier it is $0.0024 per permit. The Apify Console pricing panel shows the tier applicable to your account and is the source of truth.

BRONZE-tier examples:

Saved permitsCalculation
1$0.015 start + 1 × $0.0024 per permit
25$0.015 start + 25 × $0.0024 per permit
100$0.015 start + 100 × $0.0024 per permit

A run that finds no matching records still emits the one-time start event. Apify platform usage may be charged separately according to your plan and the active pricing configuration.

Monitoring new and changed permits

  1. Choose a bounded recent fromDate and optional territory or permit-type filter.
  2. Run the Actor on an Apify schedule.
  3. Store permitNumber as the stable key in your database or automation.
  4. Compare status, completion date, valuation, contractor, and inspections with the prior snapshot.
  5. Use an Apify webhook to notify a workflow only after successful runs.

The Actor returns a snapshot. It does not maintain a cross-run change database or send alerts itself.

Integration ideas

  • Send new construction permits to a CRM with Make or Zapier.
  • Load permit rows into BigQuery, Snowflake, PostgreSQL, or Google Sheets.
  • Trigger a webhook when scheduled datasets are ready.
  • Join parcelNumber or folio to an authorized property dataset.
  • Build contractor activity summaries using public licensed-professional text.
  • Audit an exact permit and retain its official recordUrl for review.

Do not treat a source omission or delayed county update as proof that work is unpermitted.

Use the Apify API

Replace $APIFY_TOKEN with your Apify API token.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~hillsborough-county-building-permits-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"fromDate":"2026-07-01","maxItems":25,"includeInspections":false}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/hillsborough-county-building-permits-scraper').call({
permitType: 'Residential New Construction',
fromDate: '2026-01-01',
maxItems: 50,
includeDetails: true,
includeInspections: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/hillsborough-county-building-permits-scraper').call(run_input={
'city': 'Seffner',
'fromDate': '2026-01-01',
'maxItems': 25,
'includeDetails': True,
'includeInspections': False,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with MCP and AI assistants

Add the Actor to Claude Code through Apify MCP:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/hillsborough-county-building-permits-scraper"

Claude Desktop

Add this server to your Claude Desktop MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/hillsborough-county-building-permits-scraper"
}
}
}

Cursor

Create an MCP server named apify in Cursor and use the same HTTP URL shown above.

VS Code

Add an HTTP MCP server named apify to your VS Code MCP configuration with the same URL.

Example prompts:

  • “Find Hillsborough County residential permits issued since 2026-07-01 and summarize valuations by city.”
  • “Look up permit HC-BLD-26-0083889 and list its public inspection history.”
  • “Export recent Seffner permits associated with this licensed contractor.”

Limits and source behavior

  • Public source coverage and update timing are controlled by Hillsborough County and Accela.
  • Some records omit valuations, occupancy attributes, parties, coordinates, or inspections.
  • Date filters apply to the combined issue/completion date exposed by the official map feed.
  • Applicant and contractor filters are case-insensitive text matches over selected public detail pages.
  • maxCandidates can stop a detail-text search before every possible source record is examined.
  • Inspection mode uses browser rendering because Accela loads inspection rows after the initial page response.
  • The Actor retries transient network and server failures but does not blindly retry invalid requests.
  • If optional detail enrichment fails, list fields can still be returned when no detail-only filter was requested.
  • A detail-only applicant or contractor search fails closed rather than returning an unverified match.

Responsible use and legality

This Actor accesses public government records without login. You are responsible for complying with applicable law, Apify's terms, source terms, privacy obligations, and rules governing solicitation, profiling, retention, and automated decisions.

Use public contact and party information only for a lawful purpose. Do not use results to harass individuals, infer protected characteristics, or make unsupported claims. Verify consequential decisions against the official recordUrl and relevant county authority.

Troubleshooting

Why did the Actor return no records?

Confirm the date range and spelling of the permit, city, address, parcel, type, or status. Start with one broad selective filter, then add more filters. A date window can naturally contain no records.

Why did a contractor search return fewer records than expected?

The contractor filter examines only records within the other filters and maxCandidates bound. Increase maxCandidates carefully, widen the date range, or use a city/property filter that reflects the workflow. The match uses the public licensed-professional text displayed by Accela.

Why is an inspection list absent?

The county may display no inspection rows for that permit, or inspection enrichment may have been disabled. Run an exact permit with includeInspections: true and verify the official record link.

Why are some fields missing?

The source does not populate every field for every permit type or lifecycle stage. The Actor omits missing values rather than guessing.

FAQ

Can I search by address or parcel?

Yes. Both accept full or partial text. Use an exact value when you need a narrow result set.

Can I search by contractor?

Yes. Provide contractor plus a start date, permit number, address, or parcel number. The Actor enriches bounded candidates and matches the public licensed-professional section.

Does it include City of Tampa permits?

Only records present in the selected Hillsborough County public feed are returned. The Actor does not merge a separate City of Tampa permit system.

Can I schedule recurring runs?

Yes. Use Apify schedules and compare records by permitNumber in your own database or automation.

Can I export to Excel or CSV?

Yes. Open the default dataset and choose Excel, CSV, JSON, XML, or another supported export.

These Actors cover separate public jurisdictions and are not merged into this Actor's results.