Build a Florida business list by industry and county
Pick counties and NAICS codes, export the businesses on the county tax roll with their location and mailing addresses, and keep a list you can refresh when a new roll is published.
What you’ll make
A spreadsheet with one row per business location, including the account name, the NAICS code and its title, location and mailing addresses, declared equipment value, and source information. You’ll need an Apify account and a spreadsheet app. The actor reads the tangible personal property rolls that the Florida Department of Revenue publishes for your selected counties.
Florida taxes the equipment and fixtures a business uses, so each county keeps a roll of business accounts coded by industry. Very small and home-based businesses can be missing, and a business with several locations can appear once per location. The export contains names and addresses, with no phone numbers, email addresses, or owner names beyond the account name.
1. Try one county and one trade
Open Florida Business Leads by Industry (NAICS, Tax Roll) on Apify and paste this into the JSON input.
{
"counties": [
"Hillsborough"
],
"roll": "latest",
"naicsCodes": [
"238160"
],
"maxResults": 20
}238160 is the NAICS code for roofing contractors. naicsCodes accepts the start of a code, from 2 to 6 digits: 722 selects all food service and drinking places, 7225 restaurants, and 722511 full-service restaurants. The sector ranges 31-33, 44-45, and 48-49 work as written. Look codes up at census.gov/naics. The code on a row is whatever the county has on the account, and the roll does not say who assigned it.
Check the actor’s current pricing and set a maximum charge before starting. A small maxResults limits delivered rows; it does not make a sample a complete county export. Check the run log for limits and incomplete results.
2. Narrow by place and size
After checking the sample, add zipCodes or physicalCities. zipCodes takes full ZIP codes or their first 3 or 4 digits, and city names must be spelled as the roll spells them. Both filters use the business location, not the mailing address.
minEquipmentValue and maxEquipmentValue bound the declared value of the furniture, fixtures, equipment, and leasehold improvements at that location. An account with no declared value does not match an active bound. The figure is a tax-roll value, not revenue or headcount.
requirePhysicalAddress is on by default and drops accounts with no location on the roll, such as utilities that report equipment for a whole county. excludeGovernment is also on by default. businessNameContains and businessNameExcludes match text in the account name. ownerLocation checks the mailing state: an out-of-state match is an account billed to an address outside Florida, and a missing mailing state matches neither location filter.
3. Export and check the fields
When the run finishes, open its output dataset and inspect a few rows. Choose CSV or Excel from the export options. In Google Sheets, use File → Import → Upload. Keep account IDs, NAICS codes, and ZIP codes as text so leading zeros survive the import.
| county | naicsCode | businessName | physicalCity |
|---|---|---|---|
| Hillsborough | 238160 | DEMO ROOFING CO | TAMPA |
| Hillsborough | 238160 | EXAMPLE ROOF REPAIR LLC | BRANDON |
Keep county, accountId, businessName, naicsCode, naicsTitle, the physicalAddress, physicalCity, and physicalZip location fields, and the mailingAddress, mailingCity, mailingState, and mailingZip fields. businessName is the account name, which is sometimes the owner company’s legal name and differs from the name on the storefront. The fiduciary fields name whoever receives the tax bill when that is not the business, and are often null.
Retain rollYear, rollType, sourceFile, and sourceUrl alongside your research. Blank source values become null. Names, codes, and values are what the county property appraiser submitted, abbreviations and typos included.
4. Check a business before contacting it
Look up selected accounts in the county property appraiser’s tangible personal property search, and check the company’s status with the Florida Division of Corporations. The roll is a snapshot as of January 1: a business that opened later is not on this year’s roll, and some that closed still are. Keep separate spreadsheet columns for your checked date, source link, and research notes so your conclusions remain distinct from the published roll.
For a broader run, list more counties or use "counties": ["all"]. Counties run in order and share one result cap, so an early county can fill the limit before later counties are read.
5. Refresh when the roll changes
Save the input as an Apify task. Each year the preliminary roll arrives in July and the final roll from October, so a monthly schedule is enough, and repeating a run against the same roll returns the same snapshot. Use roll: "latest" to follow the newest available roll, or choose preliminary or final with a rollYear to reproduce a particular published set.
Keep each dated export. For a current working sheet, match rows by county and account ID and update them instead of appending duplicates. For history, retain the roll year and type as well. A business missing from a capped or differently filtered run is not evidence that it closed.
If the export is empty
Try a shorter NAICS prefix first, such as 2381 in place of 238160. Then remove the city, ZIP, and value filters, and check that city names match the roll’s spelling. Confirm the chosen county and roll are available. Review the log for download failures and limits; a missing source file is different from a completed search with no matching businesses.
Start with a small export.
Check the sample against its source before expanding or scheduling your search.
Open the actor on Apify