New Homeowner & Business Leads (Certificates of Occupancy)
Pricing
from $6.00 / 1,000 permit records
New Homeowner & Business Leads (Certificates of Occupancy)
New homeowner and new business leads: certificates of occupancy from Accela Citizen Access cities, one row per newly finished home or business premises.
Pricing
from $6.00 / 1,000 permit records
Rating
0.0
(0)
Developer
Final Dynamics
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
A certificate of occupancy is the record a building department issues when a new or renovated building is cleared to be lived in or opened for business. This actor turns those records into new homeowner and new mover leads from any city or county that runs Accela Citizen Access, the permitting portal used by hundreds of US jurisdictions. Give it an agency and a date range; get one row per certificate with the address, record type, status, date and a link to the public record.
Built for people who sell to households and businesses in their first weeks at a new address: movers, furniture and appliance retailers, security and alarm companies, insurance agents, landscapers, signage and point-of-sale vendors, commercial cleaners, and the lead sellers and brokers who supply them. A certificate of occupancy usually lands days before the move-in or the grand opening, which is earlier than any change-of-address or business directory picks it up.
What you get
One row per record. Every field is flat, so the dataset drops straight into Google Sheets, Airtable or a CRM.
| Field | Example |
|---|---|
permitNumber | COO-2026-00152 |
permitType | Certificate of Occupancy, Temporary Certificate of Occupancy, Occupancy Permit |
status | Issued, Plan Review, In Progress |
appliedDate | 2026-09-14 |
addressFull, street, addressCity, addressState, zip | 975 E BIRCH St, B, BREA CA 92821 |
description | Project description as published |
detailUrl | Direct link to the public record, when one exists |
declaredValuationUsd, parcelId, issuedDate, finalDate | From the record page, with includeDetails |
contractorName, contractorLicense, contractorPhone | From the record page, with includeDetails |
agencyKey, agencyName, city, state, module | Which portal the row came from |
isNewSinceLastRun, previousStatus, statusChanged | Set by the incremental and monitoring modes |
scrapedAt | UTC timestamp |
Anything the portal does not publish is null. Owner names are off by default because owners are
usually private individuals; turn on includeOwnerName together with includeDetails if you need
them and your use allows it.
How to use it
Pick an agency, choose how far back to look, run. The default filter keeps every record whose type contains the word "occupancy", which covers certificates of occupancy, temporary certificates of occupancy and occupancy permits on every portal checked so far.
{"agency": "BREA","lastDays": 7,"permitTypeContains": ["occupancy"],"maxResults": 200}
lastDays is prefilled at 7: the last 7 calendar days ending today (UTC), including today, so a
saved task stays current. For a fixed window, set lastDays to 0 and give dateFrom and
dateTo; both dates are inclusive. A run that gives neither also searches the last 7 days.
maxResults caps the rows you pay for.
Most Accela portals let you pick a record type on their own search form, and the actor uses that: it
reads the agency's record-type list, finds the types whose names match permitTypeContains, and
asks the portal for those types only. On Hillsborough County a 90-day occupancy search reads about a
dozen result pages that way instead of several hundred. When the agency publishes no list, or
nothing on it matches your filter, the actor reads the whole date range and filters the rows itself,
and the run log says which of the two it did.
To choose the types yourself, set recordTypes to names copied from the portal's Record Type
menu, such as "Commercial Temp Certificate of Occupancy" and "Residential Temp Certificate of
Occupancy" on Hillsborough County. A name the agency does not offer stops the run and lists what it
does offer.
maxPages (60 by default) is the ceiling on result pages one run reads, across all record types. A
run that hits it stops and says so; raise maxPages, narrow the dates, or set recordTypes. What
you keep from a run that stops early depends on the mode:
- A run without
includeDetailsor a status monitor saves rows page by page as they are found, so a run that is aborted or times out keeps everything except the page it was reading. - With
includeDetails, rows are saved at the end. A details run that is aborted or times out before then saves no rows, so give it enough time. - A status monitor saves all or nothing: an incomplete run delivers no rows and leaves the saved
statuses as they were.
statusMonitorMaxPagesalso limits monitors, and the lower of it andmaxPagesapplies. - An incomplete run never moves the
sinceLastRunmarker forward, so nothing is skipped; rows it did deliver may come again, and be charged again, on the next run.
New certificates every week: keep lastDays: 7 and schedule the task weekly. The window moves
automatically on every run, overriding dateFrom and dateTo. Use a window no wider than the
schedule so consecutive runs do not overlap.
Know when a certificate is actually issued: many portals open the record at application and
change its status to Issued or Final when the building is cleared. Create a key-value store in
Apify Console, select it as statusStateStoreId, and schedule the task. The first complete run
delivers every matching record and stores its status (you pay for those rows once); later runs
deliver only records whose status changed, with previousStatus filled in. That status change is
the move-in signal.
Homes only, or businesses only: narrow the filter to the portal's wording, for example
["residential certificate of occupancy"] or ["non-residential"] on Monterey Park. A record is
kept when its type contains any one of the listed phrases as a whole, case-insensitive.
Contractor and valuation: set includeDetails: true to open each record page and add the
contractor's name, licence and phone, the parcel number and the declared valuation where the portal
publishes them.
Any other Accela portal on aca-prod.accela.com: set agency to the portal's agency code and
portalUrl to its base address, for example https://aca-prod.accela.com/CITYNAME/. Portals a city
hosts on its own domain are not supported yet.
Quick start
No code needed; about two minutes from input to spreadsheet. For a longer walkthrough with example output, read the guide Research occupancy records and track approvals.
- Open the example "Certificates of occupancy, Brea CA, last 30 days" on this actor's page, or paste one of the inputs above into the input form.
- Click Start and wait until the run shows Succeeded.
- Open the Output tab to see the certificates as a table.
- Click Export, choose CSV or Excel, and download the file.
- In Google Sheets, choose File > Import > Upload and select the file.
Automate it
A weekly lead pull: keep lastDays in the task (for example 7 or 30) so the date window moves
with every run. Click Save as a new task, then add a schedule for that task under Schedules
in Apify Console (for example every Monday at 07:00). To get only certificates you have not received
before, turn on sinceLastRun and select a key-value store as stateStoreId.
Into Google Sheets with n8n: add the Apify node with the On new Apify Event trigger,
choose your task and the succeeded event, then add an Apify node with Get Dataset Items
using the run's defaultDatasetId, and finish with a Google Sheets node that appends the rows.
Every scheduled run then adds its certificates to the same sheet. Make and Zapier have Apify
integrations that work the same way.
Pricing
Pay per event. There are no platform usage charges on top.
| Event | Price | When |
|---|---|---|
actor-start | $0.01 | Once per run |
permit-record | $0.006 | Per row delivered |
contractor-detail-page | $0.004 | Per record page fetched, only when includeDetails is on |
Examples: 50 certificates without details cost $0.31. Fifty with contractor details cost $0.51. A run that finds nothing costs $0.01. You pay for the rows that match the filter, not for the permits the actor reads and discards on the way.
Set a maximum charge on the run if you want a hard ceiling; the actor stops cleanly at the cap.
Coverage
These bundled portals publish certificates of occupancy as their own record type in the Building search, so the default filter returns rows. Checked live on 2026-09-16.
| Agency key | Jurisdiction | State | What the portal calls them |
|---|---|---|---|
BREA | Brea | CA | Certificate of Occupancy, Temporary Certificate of Occupancy |
CRYSTALLAKE | Crystal Lake | IL | Occupancy Permit (rare: about one a week) |
HCFL | Hillsborough County | FL | Commercial and Residential Temp Certificate of Occupancy |
MILWAUKEE | Milwaukee | WI | Occupancy, Conditional Occupancy, Temporary Occupancy |
MONTEREYPARK | Monterey Park | CA | Residential and Non-Residential Certificate of Occupancy, plus temporary |
TAMPA | Tampa | FL | Temporary Certificate of Occupancy, Residential Temp Certificate of Occupancy |
The other bundled portals work with this actor but do not label certificates of occupancy as a
separate record type in their Building search, so the default filter finds nothing there: Anaheim
(ANAHEIM), Culver City (CULVERCITY), DeLand (DELAND), Downey (DOWNEY), Fontana (FONTANA),
Goodyear (GOODYEAR), Hartford (HARTFORD), Hermosa Beach (HERMOSABEACH), Loveland (LOVELAND),
Manteca (MANTECA), Missoula (MISSOULA), Palo Alto (PALOALTO), Reno (RENO), Sacramento
(SACRAMENTO), Stockton (STOCKTON), Thurston County (THURSTONCO) and Visalia (VISALIA). On
those portals the certificate is a step inside the building permit; clear permitTypeContains to
get every permit, or use the Building Permit Scraper (Accela cities) by the same publisher with the
status monitor to catch permits reaching Final. Atlanta (ATLANTA_GA) has only a "Historical
Certificate of Occupancy" type, an archive record rather than a new certificate, so the default
filter returns old records there.
Any other portal on aca-prod.accela.com works with portalUrl. Run it once with a short window to
see what that agency calls its occupancy records.
Good to know
- When the actor has to read every permit in the date window (see above), busy portals take longer: two weeks of all permits on Tampa or Hillsborough County is about a hundred result pages and takes a few minutes. Narrow the window or schedule smaller runs if that matters.
- Record pages differ by portal. Brea's certificate pages carry no parcel, valuation or contractor,
so leave
includeDetailsoff there; Milwaukee's records that still have a temporary number have no record page yet. - Temporary certificates count. A temporary certificate of occupancy means the building is in use while final items are finished, which is still a move-in.
- Public records only. If a portal blocks access, the run fails with a clear message rather than returning an empty result.
- Dates are the portal's local calendar dates. A record's applied date is what the agency shows in its search results; on some portals that is the last update date.
- The actor is not affiliated with Accela or with any listed agency. Public records can be incomplete or corrected later.
FAQ
Where do new homeowner leads come from here?
From certificates of occupancy: a city issues one when a new or renovated home or commercial space is cleared for people to move in or a business to open.
Can I search certificates of occupancy by city?
Yes, for cities and counties that run Accela Citizen Access and publish occupancy as its own record type. The Coverage table lists the ones checked live.
Does it include the new owner's name?
Only when the portal shows it and you turn on includeOwnerName. Many portals show the address and
contractor but not the buyer.
Related actors
- Florida Deed Transfers & New Owner Leads: recorded sales with the new owner's mailing address.
- Building Permit Scraper (Accela cities): building permits with contractor details from Accela cities and counties.
- Florida Business Leads by Industry: Florida businesses by NAICS code and county.
Questions or a portal that misbehaves? Open an issue on the actor page and include the agency and date range.