Build a permit research spreadsheet
Collect a small set of building permits from an Accela portal, then organize the results into a sheet you can filter and revisit.
What you’ll make
A spreadsheet of recent roofing and solar permits from one agency. You can use it to research construction activity, group projects by type, or review the status of a permit without reopening every record.
You’ll need an Apify account and a spreadsheet app. The example uses Sacramento. Source fields vary by portal, so start with a small run and inspect what that agency publishes.
1. Choose the records
Open the Accela Building Permit Scraper on Apify. Use these values in its input form, or switch to the JSON input and paste the configuration below.
{
"agency": "SACRAMENTO",
"module": "Building",
"lastDays": 14,
"permitTypeContains": [
"roof",
"solar"
],
"includeDetails": true,
"maxResults": 20
}lastDays searches the last 14 calendar days, including today in UTC. The permit-type filter matches either “roof” or “solar.” maxResults limits this first run to 20 rows.
includeDetails fetches available information from each permit page, such as valuation and contractor details. Leave it off if you only need the search results. Review the actor’s current pricing before starting, and set a maximum charge in Apify if you want a spending limit.
2. Run and inspect the output
Start the actor on Apify. When it finishes, open the dataset and check the permit type, date, and agency before you export. An empty dataset can mean no records match your filters; widen the date range or remove the type filter and try a small run again.
Export the dataset as CSV and import it into your spreadsheet app. In Google Sheets, use File → Import → Upload and select the CSV.
| permitNumber | permitType | status |
|---|---|---|
| DEMO-001 | Roofing | Issued |
| DEMO-002 | Solar | In review |
| DEMO-003 | Roofing | In review |
3. Make the sheet useful
Keep permitNumber, permitTypeNormalized, status, appliedDate, addressFull, and detailUrl visible. Enable filters so you can narrow the view by project type or status.
Sort by applied date to review the newest records first. Keep the source link: it is the quickest way to check a record before acting on it. A missing value means the source did not provide that field; it does not mean zero.
4. Repeat without losing context
Save the configuration as an Apify task if you plan to repeat it. The rolling date window moves forward on each run. If you append exports to the same sheet, compare agencyKey and permitNumber together to identify repeated records.
For incremental delivery or status-change monitoring, follow the actor’s documentation for persistent state stores. Those modes use saved state between runs; simply scheduling the example above does not remove duplicates.
Try it with your own agency.
Start small, inspect the fields, and keep the source links in your final sheet.
Open the Accela Building Permit Scraper