All guides

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.

Example input
{
  "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.

Illustrative output — these rows are examples, not collected records.
permitNumberpermitTypestatus
DEMO-001RoofingIssued
DEMO-002SolarIn review
DEMO-003RoofingIn review
Download example CSV

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