Find contractors

Find home services companies by trade, region, and crew

The owner of a six-truck plumbing company answers his own phone and reads email twice a week. Build the list for that reality or it will not convert.

try

Trade first, area second, size third. That order matters because a roofing company and an electrician in the same zip code share nothing except a service area. A sales motion built on geography alone ends up pitching four different businesses the same way.

Listings do most of the work here. Serper's maps search returns the business, its category, phone, rating, and review volume, and a second query under a neighbouring category catches the ones filed oddly or trading under a second name. People Data Labs adds a company layer where one exists, which for a family firm is often nothing at all.

Then the contact question. A work email needs the firm to own a domain, and Blitz API heads the email column only for owners with a LinkedIn profile. Expect fewer emails than numbers. ClearoutPhone grades every number so the call list is clean before anyone picks up a handset.

Example searches

Ask for it the way you'd say it

Each example is a request in plain words, with what it returns underneath.

  • One trade, one metro

    roofing contractors in atlanta and marietta, excluding general handyman listings

    Trade comes from the listing category and the site, so a handyman advertising roofing does not land in a roofing campaign.

  • Crew size proxies

    hvac companies with multiple service vehicles and a large review count in the same metro

    Review volume and staff count act as size proxies, each in its own column, so you can see which one carried the row.

  • Reachable by phone

    give me a direct number for each contractor and flag the ones that are mobiles

    Numbers are graded before dialing, which matters in a trade where the mobile on the listing is usually the owner's own.

Plays

Three motions you can run this week

Each one is a chain of OXYGEN primitives: the same hosted objects your workspace already has, composed.

  • Trade-by-trade territory sweep

    A clean table per trade in one metro, deduped and ready to work.

    1. 1Sweep the metro once per trade, dedupe on domain, then on the phone number, so a firm trading under two names collapses into one row.
    2. 2Promote only the trades you serve, leaving the rest in the working table.
    oxygen search run
  • Call list that is worth dialing

    Every row on the call sheet has a graded number and a reason to be there.

    1. 1Run the phone column on owners you have named, with line-type checks on, and drop numbers that fail validation.
    2. 2Sort by size proxy so the biggest firms in the metro get dialed first.
    oxygen enrich-column run --capability mobile_phone --verify-phone
  • Multi-branch firms get a different pitch

    Regional operators hear an operations message instead of an owner-operator one.

    1. 1Flag firms with more than one location and resolve an operations or GM title.
    2. 2Enroll those rows in their own sequence and leave the branch listings out of the enrollment.
    oxygen sequences enroll

Who you can reach

Roles you can find at home services and trade contractors

Reachability is per channel: a role marked for mobile is one the phone waterfall usually resolves, not a guarantee for every record.

RoleSeniorityReachable by
Owner or operatorOwner/FounderMobileWork email
General managerManagerWork emailMobile
Service managerManagerWork emailMobile
Office managerManagerWork email
Operations director at a multi-branch firmDirectorWork emailLinkedIn
Sales leadManagerWork emailMobile

Filters you can search on

  • Trade or service category
  • City or metro named in the search
  • Review count and rating band
  • Estimated crew or vehicle count
  • Single location or multi-branch
  • Website present or missing
  • Emergency or after-hours service offered

Listings, categories, phone numbers, and review volume resolve for nearly every trade business with a storefront or service-area listing. Company records thin out fast below ten staff, which is most of this market, so headcount is often blank and email often does not resolve. Plan the phone lane first and treat a found email as a bonus.

Data sources

Data sources and CRM connections

  • Serper

    Trade listings from Google Maps with category, phone, rating, and review count for a whole service area.

  • People Data Labs

    Adds a company layer for the minority of firms large enough to carry a corporate record.

  • Blitz API

    Heads the work-email column for owners with a LinkedIn profile. A contractor with no domain of its own has no work email to find.

  • ClearoutPhone

    Validates and grades each number so the call sheet is not full of dead switchboards.

Use managed credits where available, or connect a supported provider key on an eligible paid plan. Your provider bills its calls; OXYGEN adds a per-call platform fee. Signed-in CRM connections such as HubSpot have no per-call fee. Connected sending accounts reserve monthly credits. See pricing and supported integrations.

Limits

Where this stops

  • Many trade businesses have no corporate record at all. Expect a listing, a phone number, and a rating, and expect headcount and work email to be empty on a large share of the rows.

FAQ

Questions people ask first

Is email even the right channel for contractors?
Often it is not. Owner-operated firms answer the phone and ignore the inbox, so build the phone lane first and use email for the multi-branch firms that actually staff an office.
How do I estimate crew size?
Review volume, listed staff, and vehicle mentions on the site, each kept as its own column. None is exact, but together they sort a two-truck operation from a twenty-truck one.
Can I search a radius rather than a city?
Not by an exact distance. You name a city, metro, or area in plain words, and Google Maps returns the listings it finds there. Each row keeps its address, latitude, and longitude, so you can see where a listing sits before anyone calls. To reach further out, run the same trade for the next town into the same table.
How do I avoid dialing the same owner twice?
Dedupe on domain first, then on the phone number. Trade businesses routinely run several listings under different names from one yard, and the shared number is what gives them away. A fuzzy match on the name only catches spellings of one name, not a second trading name. The domain key only catches the ones that share a site.
What if a contractor has no website?
The row stays with the missing site flagged. It will not resolve an email, so route it straight into the call lane instead of spending on an enrichment attempt that cannot succeed.
What about a contractor covering three metros with one crew?
If it is one Google listing and the sweeps land in the same table, they share its Maps listing ID and it stays one row. If it runs a listing per metro, dedupe on the phone number and keep the metros it covers as a column. The row then shows real coverage instead of inflating your market count.

Build your home services and trade contractors list

Start with a search, preview the cost before anything is spent, and keep the rows, sources, and runs in a workspace you own.