Contractor Leads Scraper — Contractor List from Google Maps avatar

Contractor Leads Scraper — Contractor List from Google Maps

Pricing

from $35.00 / 1,000 enriched contractor leads

Go to Apify Store
Contractor Leads Scraper — Contractor List from Google Maps

Contractor Leads Scraper — Contractor List from Google Maps

Build contractor leads from Google Maps by trade and city: HVAC, plumbers, roofers, electricians. Name, phone, website, rating. USD 50 per 1,000 leads.

Pricing

from $35.00 / 1,000 enriched contractor leads

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

2

Monthly active users

5 days ago

Last modified

Share

Contractor Leads Scraper builds contractor leads from Google Maps: pick a trade such as HVAC, plumbing, roofing or electrical, enter a city, and it returns each business with its name, category, phone, website, full address, rating, review count, weekly hours, coordinates and Maps link, then checks the contractor's website for emails and social profiles. It is built for suppliers, software vendors, insurers and agencies that sell to contractors, and it costs USD 50 per 1,000 leads on the FREE tier (USD 35 per 1,000 on GOLD).

These are leads of contractors for B2B outreach. If you are a contractor looking for homeowner jobs, this Actor is not that kind of lead source.

What data does Contractor Leads Scraper return?

Each lead is one dataset row. With the default full output format:

FieldWhat it contains
business_nameBusiness name from the Google Maps result
business_typeThe trade you searched, for example HVAC Company
categoryGoogle Maps primary category, for example HVAC contractor
phone, website, addressFrom the Google Maps result; address is the full address, such as 9201 Forest Ln, Dallas, TX 75243
rating, review_count, hoursStar rating, number of Google reviews, and weekly hours such as Monday: 7 AM–7 PM; …
email, all_emailsFirst email found on the contractor's website, and up to 5 emails with a check result each
email_verified, email_verification_status, email_verification_noteMail-server check of the first email: smtp_verified, dns_only, unverified or unknown
facebook, instagram, linkedin, twitterSocial profile links found on the website
google_maps_url, place_idMaps place link and the Google place ID
latitude, longitudeCoordinates of the place
scraped_at, source_urlCollection time and the Maps search URL

Every field except business_name, scraped_at and source_url can be null.

Current coverage, measured on 2026-10-27. The Console example (HVAC companies in Dallas, TX, 3 leads) returned 3 leads in the cloud, all with phone, website, full address, rating, review count and hours; one had an email and two had a Facebook page. In a 40-lead local check for handymen in Lubbock, TX, 39 leads had a phone or website. Emails depend on each contractor's website, so check a small run before you buy a large one.

How do I build a contractor list for a trade and city?

Choose a trade, type one location, and set a small Max Results first.

  1. Business Type: HVAC Company, Plumber, Roofer, Electrician, General Contractor, Landscaper, Painter, Pest Control, or Custom.
  2. Location: one city, state or ZIP code, for example Dallas, TX. The search becomes "HVAC company in Dallas, TX".
  3. Max Results: 1 to 500 (default 50). One Google Maps search shows about 120 places at most, so run once per city for wider coverage.
  4. Output Format: full, hubspot or salesforce.

Plumbers in Phoenix, ready for HubSpot import:

{
"businessType": "Plumber",
"location": "Phoenix, AZ",
"maxResults": 25,
"outputFormat": "hubspot"
}

A trade that is not in the list. With Custom, the query is used exactly as written and Location is ignored:

{
"businessType": "Custom",
"searchQuery": "concrete contractors in Denver, CO",
"maxResults": 10,
"enrichSocials": false
}

Does it find contractor emails?

It tries, but only when the Maps result has a website. The Actor reads the home page plus up to two contact, about or service pages, collects email addresses, mailto: links and protected addresses written into the page, and keeps up to 5 per lead. With Verify Email Deliverability on, it looks up the domain's mail servers and asks the first server whether the mailbox exists, without sending mail. Many servers refuse these checks; that result is unknown, not invalid. Many contractors publish only a contact form or a phone number, and those leads have no email.

When should I use it, and when not?

Use it when you need a fresh list of contractor businesses in one city and trade, with phones and websites where Maps shows them, for calls, CRM import or territory research.

Use another Actor when:

How do I run it from code?

JavaScript with apify-client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/contractor-lead-scraper').call({
businessType: 'Roofer',
location: 'Tampa, FL',
maxResults: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const lead of items) console.log(lead.business_name, lead.phone, lead.website);

Python with apify-client:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("muhammadafzal/contractor-lead-scraper").call(run_input={
"businessType": "Electrician",
"location": "Columbus, OH",
"maxResults": 20,
})
for lead in client.dataset(run.default_dataset_id).iterate_items():
print(lead["business_name"], lead.get("phone"), lead.get("email"))

Use it from an AI assistant

Contractor Leads Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add the single-tool URL https://mcp.apify.com/?tools=muhammadafzal/contractor-lead-scraper and ask, for example: "Find 10 roofing companies in Tampa, Florida with their phone numbers and websites." Each lead is charged at the prices below, so include a result limit in your request.

What does the output look like?

A lead from a cloud run of the Console example on 2026-10-27 (full format):

{
"business_name": "The Chill Brothers",
"business_type": "HVAC Company",
"category": "HVAC contractor",
"phone": "(844) 512-4455",
"email": "hello@thechillbrothers.com",
"email_verified": null,
"email_verification_status": "unknown",
"all_emails": [
{
"address": "hello@thechillbrothers.com",
"verified": null,
"status": "unknown",
"verificationNote": "SMTP verification timed out"
}
],
"website": "https://thechillbrothers.com/hvac-services-in-dallas-tx/",
"address": "8131 Lyndon B Johnson Fwy Ste 790, Dallas, TX 75251",
"rating": 4.6,
"review_count": 535,
"hours": "Tuesday: 7 AM–9 PM; Wednesday: 7 AM–9 PM; Thursday: 7 AM–9 PM; Friday: 7 AM–9 PM; Saturday: 8 AM–9 PM; Sunday: 8 AM–9 PM; Monday: 7 AM–9 PM",
"facebook": "https://facebook.com/thechillbrothers",
"instagram": "https://instagram.com/thechillbrothers/",
"linkedin": "https://linkedin.com/company/thechillbrothers/",
"twitter": null,
"google_maps_url": "https://www.google.com/maps/place/?q=place_id:ChIJ601XadIhTIYRvO4eGG9HB84",
"place_id": "ChIJ601XadIhTIYRvO4eGG9HB84",
"latitude": 32.925714899999996,
"longitude": -96.7656291,
"scraped_at": "2026-10-27T08:39:01.736Z",
"source_url": "https://www.google.com/maps/search/HVAC%20company%20in%20Dallas%2C%20TX"
}

hubspot returns Company Name, Industry, Phone Number, Email, Website, Street Address, City, State/Region, Zip Code, Google Maps URL, Rating, Business Category, social columns and Email Verified. salesforce returns Account Name, Phone, Website, billing address columns, Email__c, Rating__c, Place_ID__c, social columns and LeadSource set to Google Maps Scraper. City, state and ZIP are split from the full address.

Pricing: how much do contractor leads cost?

The Actor uses pay-per-event pricing, and platform usage is included in the event prices.

EventFREEBRONZESILVERGOLDPLATINUM / DIAMOND
Enriched contractor lead (one dataset row)USD 0.05USD 0.045USD 0.04USD 0.035USD 0.035
Actor start (per started GB of allocated memory)USD 0.00005USD 0.00005USD 0.00005USD 0.00005USD 0.00005

Worked totals on the FREE tier at the default 512 MB memory (one start event):

  • 3 leads: 3 × USD 0.05 + USD 0.00005 = USD 0.15005
  • 50 leads: 50 × USD 0.05 + USD 0.00005 = USD 2.50005

A lead is charged only when it has a phone, website or email. A lead with only a name and Maps link is saved but not charged, and each lead is saved before it is charged. A search that finds nothing charges only the start events. Apify requires a maximum cost per run of at least USD 1.00 for this Actor; a lower limit is rejected before the run starts.

Limits and reliability

  • One search per run: one trade and one location, up to about 120 Maps places; duplicates are removed by Google place ID.
  • Speed: the 3-lead Console example took about 14 seconds in the cloud on 2026-10-27, website checks included.
  • Fields come from Google Maps' own search results data, which carries phone, website, address, rating, review count, hours and coordinates for each place. A few places publish no phone or website.
  • No results: the run ends without data and without lead charges.

FAQ

Why does a lead have no phone or website?

The business did not publish one on Google Maps. Such leads are rare (1 of 40 in the 2026-10-27 check) and are not charged when they also have no email.

Am I charged for a lead without an email?

Yes, when it has a phone or website. A lead with no phone, website or email is saved but not charged.

Is there a free contractor leads list?

No. Each lead costs USD 0.05 on the FREE tier, and USD 0.035 on GOLD.

Can I search several cities in one run?

No. Run the Actor once per city or ZIP code and merge the datasets.

How reliable is smtp_verified?

It means the recipient's mail server accepted the mailbox during the check. Servers that refuse checks return unknown, and a domain with only an A record returns dns_only.

Does it work outside the United States?

The location and custom query accept any text Google Maps understands. Runs on record use US cities.

The Actor reads public Google Maps results and public pages of contractor websites. It does not log in or bypass access controls. Business contacts can include personal data such as owner names and direct emails: use them lawfully and follow CAN-SPAM, TCPA, Do Not Call and anti-spam rules for outreach. This tool is not affiliated with Google, and this is not legal advice.

Last verified: 2026-10-27