HVAC Leads Scraper — Emails & Business Data avatar

HVAC Leads Scraper — Emails & Business Data

Pricing

from $50.00 / 1,000 enriched hvac leads

Go to Apify Store
HVAC Leads Scraper — Emails & Business Data

HVAC Leads Scraper — Emails & Business Data

Find HVAC contractor leads with verified emails, phones, websites, services, locations, ratings, and structured business data for outreach.

Pricing

from $50.00 / 1,000 enriched hvac leads

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Scrape HVAC, AC repair, heating & air conditioning contractor leads from Google Maps with verified emails, phones, detected services, and 24/7 emergency service flag. Real-time data from HVAC contractor websites. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.

Use Cases

  • Home services SaaS sales — Build targeted prospect lists of HVAC contractors using your CRM software (dispatch, invoicing, field service management tools).
  • HVAC equipment suppliers — Find local HVAC companies to sell furnaces, condensers, mini-splits, refrigerants, and parts to.
  • Marketing agencies — Build Facebook Custom Audiences and email lists for HVAC clients' lead-gen campaigns.
  • Insurance & warranty companies — Identify certified HVAC contractors for repair networks and home warranty programs.
  • Recruiting & staffing — Source HVAC technicians and companies hiring in specific markets.
  • Market research — Analyze HVAC market density, service offerings, and emergency coverage by city.
  • Lead generation — Build fresh, verified HVAC contractor lead lists for cold email and outbound calling.

Features

  • 9 HVAC sub-niches — HVAC Company, AC Repair Service, Heating Contractor, Air Conditioning Contractor, Furnace Repair Service, Duct Cleaning Service, Commercial HVAC Contractor, Refrigeration Service, Indoor Air Quality Company, plus Custom search.
  • Google Maps search — Real-time data directly from Google Maps listings (business name, phone, address, website, rating, hours, coordinates).
  • Email extraction — Crawls each HVAC contractor's website (home, contact, about, service pages) to find real email addresses.
  • Email verification — DNS MX lookup + SMTP handshake confirms the mailbox exists and can receive mail — without sending any message.
  • HVAC services detection — Automatically detects services from website content: AC Installation, AC Repair, Heating Repair, Furnace Installation/Repair, Boiler Repair, Heat Pump Service, Duct Cleaning, Ductwork, Indoor Air Quality, Refrigeration, Commercial HVAC, Residential HVAC, Preventive Maintenance, 24/7 Emergency Service, Thermostat Installation, Ventilation.
  • 24/7 emergency service flag — Identifies contractors offering 24/7 emergency HVAC service.
  • Social media links — Finds Facebook, Instagram, LinkedIn, and Twitter/X profiles from the contractor's website.
  • CRM-ready export — One-click export to HubSpot, Salesforce, or full JSON/CSV.
  • Real-time data — Every run scrapes live Google Maps results — no stale database.
  • Deduplication — No duplicate businesses within a single run.
  • No coding required — Just enter a business type and location, click Start.

How It Works

  1. Search Google Maps — The actor searches Google Maps for your selected HVAC business type in your target location.
  2. Extract listing data — Business name, phone, address, website, rating, hours, and coordinates are extracted from each listing.
  3. Enrich from website — The actor visits each HVAC contractor's website and scans contact, about, and service pages to extract emails, social links, detected HVAC services, and 24/7 emergency service availability.
  4. Verify email deliverability — Each extracted email is checked via DNS MX lookup and SMTP handshake to confirm the mailbox exists and can receive mail.
  5. Format and export — Leads are formatted for your chosen output (Full, HubSpot, or Salesforce) and saved to the Apify dataset, downloadable as CSV, JSON, or Excel.

Input Parameters

ParameterTypeDefaultRequiredDescription
businessTypeselectHVAC CompanyNo*HVAC sub-niche to search (9 options + Custom)
locationstringDallas, TXNo*City, state, or ZIP code to search in
searchQuerystringNoCustom Google Maps query (only when businessType = Custom)
maxResultsinteger50 (prefill 3)NoMax HVAC leads to return (1–500)
enrichEmailsbooleantrueNoCrawl contractor websites to find email addresses
verifyEmailsbooleantrueNoVerify emails via DNS MX + SMTP handshake
enrichSocialsbooleantrueNoFind Facebook, Instagram, LinkedIn, Twitter/X links
outputFormatselectfullNofull, hubspot, or salesforce
proxyUrlstringNoCustom HTTP proxy URL (optional)

* location is required unless businessType is Custom. When businessType is Custom, searchQuery is required.

Output Data

FieldTypeDescription
business_namestringHVAC business name from Google Maps
business_typestring|nullThe HVAC sub-niche used for the search
categorystring|nullGoogle Maps business category
servicesarray|nullDetected HVAC services (AC Repair, Furnace Installation, Duct Cleaning, etc.)
phonestring|nullPrimary phone number
emergency_serviceboolean|nulltrue if 24/7 emergency service is advertised
emailstring|nullPrimary verified email address
email_verifiedboolean|nulltrue if email passed DNS MX + SMTP verification
email_verification_statusstring|nullsmtp_verified, dns_only, unverified, or unknown
email_verification_notestring|nullHuman-readable verification result
all_emailsarray|nullAll emails found, each with verification status
websitestring|nullHVAC contractor website URL
addressstring|nullFull street address
ratingnumber|nullGoogle Maps star rating (0–5)
review_countinteger|nullTotal Google Maps reviews
hoursstring|nullOperating hours summary
facebookstring|nullFacebook page URL
instagramstring|nullInstagram profile URL
linkedinstring|nullLinkedIn company page URL
twitterstring|nullTwitter/X profile URL
google_maps_urlstring|nullDirect link to Google Maps listing
place_idstring|nullGoogle Places API unique identifier
latitudenumber|nullGeographic latitude
longitudenumber|nullGeographic longitude
scraped_atstringISO 8601 timestamp of collection
source_urlstringGoogle Maps search URL this lead came from

Sample Output

{
"business_name": "Comfort Air Solutions",
"business_type": "HVAC Company",
"category": "HVAC contractor",
"services": ["AC Repair", "Furnace Installation", "Duct Cleaning", "24/7 Emergency Service"],
"phone": "(214) 555-0192",
"emergency_service": true,
"email": "service@comfortairsolutions.com",
"email_verified": true,
"email_verification_status": "smtp_verified",
"email_verification_note": "Verified via SMTP",
"all_emails": [
{
"address": "service@comfortairsolutions.com",
"verified": true,
"status": "smtp_verified",
"verificationNote": "Verified via SMTP"
}
],
"website": "https://comfortairsolutions.com",
"address": "4521 Maple Ave, Dallas, TX 75219",
"rating": 4.7,
"review_count": 312,
"hours": "Open 24 hours",
"facebook": "https://facebook.com/comfortairsolutions",
"instagram": null,
"linkedin": "https://linkedin.com/company/comfort-air-solutions",
"twitter": null,
"google_maps_url": "https://www.google.com/maps/place/Comfort+Air+Solutions/@32.8032,-96.8067,17z",
"place_id": "ChIJb5xK7wLQIYURxjM",
"latitude": 32.8032,
"longitude": -96.8067,
"scraped_at": "2026-07-01T12:00:00.000Z",
"source_url": "https://www.google.com/maps/search/HVAC+company+in+Dallas"
}

Pricing

This actor uses pay-per-event pricing — you only pay for the enriched HVAC leads it delivers.

# LeadsCost
10$0.50
50$2.50
100$5.00
200$10.00

Plus a small actor-start fee of $0.00005 per run (billed once per GB of memory used).

Code Examples

JavaScript (Apify SDK)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('muhammadafzal/hvac-lead-scraper').call({
businessType: 'HVAC Company',
location: 'Dallas, TX',
maxResults: 50,
enrichEmails: true,
verifyEmails: true,
enrichSocials: true,
outputFormat: 'full',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} HVAC leads`);

Apify CLI

# Run with defaults (HVAC Company in Dallas, TX)
apify run muhammadafzal/hvac-lead-scraper
# Run with custom input
echo '{"businessType":"AC Repair Service","location":"Phoenix, AZ","maxResults":100}' | apify run muhammadafzal/hvac-lead-scraper
# Schedule a daily run
apify schedule create --actor muhammadafzal/hvac-lead-scraper --cron "0 9 * * *" --run-input '{"businessType":"HVAC Company","location":"Dallas, TX","maxResults":50}'

HubSpot Import

  1. Run the actor with outputFormat: "hubspot".
  2. Download the dataset as CSV from Apify.
  3. In HubSpot: Contacts → Import → CSV → map columns (the output already uses HubSpot property names).

Salesforce Import

  1. Run the actor with outputFormat: "salesforce".
  2. Download the dataset as CSV from Apify.
  3. In Salesforce: Setup → Data Import Wizard → Leads → upload CSV (fields use __c custom field naming).

FAQ

Why are some email fields null? Not every HVAC contractor publishes an email on their website — many rely on phone contact or contact forms. The email field is null when no email was found. The enrichEmails option must be enabled (it's on by default).

How does email verification work? The actor performs a DNS MX lookup on the email's domain to find the mail server, then opens an SMTP connection and issues a RCPT TO command to check if the mailbox exists — without sending any message. Status smtp_verified means the mailbox accepted the recipient; dns_only means the domain has mail records but SMTP was not probed; unverified means the mailbox was rejected.

Can I search multiple cities at once? This actor searches one location per run. For multi-city coverage, run the actor once per location and merge the datasets. You can schedule multiple runs via the Apify Scheduler.

What HVAC business types are supported? HVAC Company, AC Repair Service, Heating Contractor, Air Conditioning Contractor, Furnace Repair Service, Duct Cleaning Service, Commercial HVAC Contractor, Refrigeration Service, Indoor Air Quality Company, and Custom (any Google Maps query).

Does it work outside the USA? Yes — the actor searches Google Maps globally. Enter any city worldwide in the location field. However, it's optimized for US-based HVAC contractor websites (English content, US phone formats).

How does the 24/7 emergency service detection work? The actor scans each contractor's website for phrases like "24/7 emergency service", "emergency HVAC repair", "emergency service available". The emergency_service field is true when detected, null when not found.

Technical Details

  • Crawler: PlaywrightCrawler (headless Chromium) for Google Maps + contractor websites
  • Proxy: Apify residential proxies by default; custom HTTP proxy supported via proxyUrl
  • Email verification: DNS MX lookup + SMTP RCPT TO handshake (port 25, 8s timeout)
  • Deduplication: By business name within each run
  • Resource blocking: Images, media, fonts, and analytics scripts are blocked for faster crawling
  • Session pool: 5 concurrent sessions with automatic rotation
  • Anti-bot: Randomized viewport, consent cookie injection, stealth browser args
  • HVAC service detection: Pattern matching against 17 known HVAC service categories
  • Emergency service detection: Regex-based detection of 24/7 emergency service language

Limitations

  • Google Maps caps at ~120 results per search — use multiple locations for larger datasets.
  • Email extraction depends on the contractor having a website with contact information.
  • SMTP verification may be blocked by some mail servers (returns unknown status).
  • Google Maps CSS selectors can change — the actor uses multiple fallback selectors.
  • HVAC service detection is based on website content and may miss services not listed online.
  • The review_count field is null in the search results list view (only available on the detail page).

Changelog

v1.0 — Initial release

  • 9 HVAC business types + Custom search
  • Google Maps scraping with Playwright
  • Website email extraction + DNS/SMTP verification
  • HVAC services detection (17 service categories)
  • 24/7 emergency service flag
  • Social media link extraction
  • HubSpot, Salesforce, and Full output formats

What is HVAC Leads Scraper?

HVAC Leads Scraper turns the target data into structured, reusable results on Apify. Use it when you need repeatable collection for sales teams, agencies, recruiters, market researchers, and data-enrichment workflows without maintaining a custom scraper or one-off integration. Run it manually, schedule recurring jobs, call it through the Apify API, or connect it to an AI agent through the Apify MCP server.

The Actor stores results in an Apify dataset, where they can be previewed and exported as JSON, CSV, Excel, XML, or RSS. Availability and completeness depend on the source, supplied inputs, public visibility, authentication requirements, and upstream rate limits.

Use cases for HVAC Leads Scraper

  • Build structured datasets for research, reporting, enrichment, or monitoring.
  • Automate repetitive collection with schedules, webhooks, and API calls.
  • Feed clean records into spreadsheets, databases, CRMs, BI tools, AI agents, or RAG pipelines.
  • Track changes over time by running the same validated input on a schedule.
  • Replace fragile manual copy-and-paste work with a reproducible Apify workflow.

How to use HVAC Leads Scraper

  1. Open the Actor input page and choose a focused, valid target.
  2. Set a conservative result limit for the first run.
  3. Start the Actor and inspect the dataset for coverage and field availability.
  4. Export the results or connect the dataset to your downstream system.
  5. Scale gradually and use scheduling, pagination, or proxies when supported.

Important input options

  • businessType — Select the HVAC sub-niche to search on Google Maps. The actor builds the query automatically — e.g., 'HVAC Company' finds full-service heating, cooling, and air conditioning contractors; 'AC
  • location — The city, state, or ZIP code to search for HVAC contractors in. Use 'City, ST' format for best results (e.g., 'Dallas, TX', 'Phoenix, AZ', 'Chicago, IL'). ZIP codes and neighborhoods also wo
  • searchQuery — A raw Google Maps search query — only used when Business Type is set to 'Custom'. Use this to target HVAC niches not in the dropdown, such as 'commercial HVAC contractors in Denver, CO', 'mi
  • maxResults — Maximum number of HVAC leads to return. The prefill is 3 for a quick quality test — increase to 50–200 for production prospecting. Google Maps caps at ~120 results per search; run multiple l
  • enrichEmails — When enabled, the actor visits each HVAC contractor's website and scans contact pages, footers, and service pages to extract email addresses. Disable if you only need phone numbers and addre
  • verifyEmails — When enabled, each extracted email is checked via DNS/MX lookup and SMTP handshake to confirm the mailbox exists and can receive mail — without sending any actual message. Adds ~1 minute per
  • enrichSocials — When enabled, the actor scans each HVAC website for social media profile links: Facebook, Instagram, LinkedIn, and Twitter/X. Useful for multi-channel outreach, ad targeting (Facebook Custom
  • outputFormat — Controls the structure of the output dataset. 'Full' returns all fields for custom pipelines. 'HubSpot Import' maps columns to HubSpot Contact and Company import properties for direct CSV up

API and automation example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/hvac-lead-scraper').call({
// Add the same input fields you use in the Apify Console.
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Use these dedicated tools when a neighboring data source or workflow is a better match:

Frequently asked questions

How many results can I scrape with HVAC Leads Scraper?

The practical total depends on the source, input limits, pagination, available records, run timeout, and upstream restrictions. Start with a small run, verify the output, and increase the limit gradually.

Can I integrate HVAC Leads Scraper with other apps?

Yes. Use Apify integrations, webhooks, schedules, dataset exports, Make, Zapier, Google Sheets, cloud storage, or your own application.

Can I use HVAC Leads Scraper with the Apify API?

Yes. Start runs with the Apify REST API or an official Apify client, then retrieve records from the run's default dataset. Keep your API token in a secret or environment variable.

Can I use HVAC Leads Scraper through an MCP Server?

Yes. The Apify MCP server can expose the Actor to compatible AI clients and agents. Review the input and expected cost before allowing an autonomous workflow to run it at scale.

Do I need proxies?

It depends on the source and volume. Use the default configuration first. For larger or geographically sensitive jobs, select an appropriate proxy configuration only when the Actor supports it.

Scraping rules vary by source, jurisdiction, data type, and intended use. Collect only data you are authorized to access, respect applicable terms and privacy laws, and avoid restricted or personal data misuse. This documentation is not legal advice.

Your feedback

If a field is missing, a source layout has changed, or you need a supported use case documented, open an issue on the Actor page with a reproducible input and run ID.