Roofing Contractor Lead Scraper — Verified Emails
Pricing
from $35.00 / 1,000 roofing contractor leads
Roofing Contractor Lead Scraper — Verified Emails
Find roofing contractors by niche and location. Extract phones, websites, services, socials, and public emails with conservative DNS, SMTP, and catch-all checks. Free-plan runs return at most 5 records; paid plans can request up to 200.
Pricing
from $35.00 / 1,000 roofing contractor leads
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Find roofing contractors by city, state, ZIP code, or custom niche query. The Actor searches live Google Maps listings, visits each contractor's public website, extracts business contact details and roofing services, and checks email deliverability using DNS, SMTP recipient acceptance, and catch-all detection.
Free-plan limit: Apify free-plan users receive at most 5 records per run. Upgrade to an Apify paid plan to request up to 200 records per run.
Use the dataset for roofing software sales, material supplier outreach, recruiting, territory planning, agency prospecting, insurance vendor research, and local market analysis. Results are available as JSON, CSV, Excel, XML, RSS, or through the Apify API and integrations.
What you get
Each result can include:
- Business name, Maps category, address, phone, website, hours, rating, review count, coordinates, Maps URL, and place identifier
- Public email addresses with the exact source page where each address was found
- A conservative email verification result:
smtp_verified,catch_all,mx_only,smtp_rejected,invalid_domain,unknown, ornot_checked - Detected roofing services, including residential, commercial, repair, replacement, shingles, metal, flat/TPO/EPDM, tile, and new-roof installation
- Public Facebook, Instagram, LinkedIn, and X/Twitter links found on the company website
The Actor never sends an email. It only performs mail-routing and SMTP handshake checks when verification is enabled.
Input
| Field | Type | Default | Description |
|---|---|---|---|
businessType | string | Roofing Contractor | Roofing niche or Custom |
location | string | Dallas, TX | City, state, postal code, neighborhood, or region |
searchQuery | string | empty | Exact Maps query when businessType is Custom |
maxResults | integer | 25 | Maximum leads to deliver, from 1 to 200; free-plan runs are capped at 5 |
enrichEmails | boolean | true | Find public business emails on contractor websites |
verifyEmails | boolean | true | Run DNS, SMTP, and catch-all checks |
emailRequirement | string | any | Keep any contractor, only leads with a found email, or only smtp_verified emails |
enrichSocials | boolean | true | Find public social profile links |
proxyConfiguration | object | Apify Proxy | Network settings for Maps requests |
The Console prefill requests only 3 results so you can inspect quality and cost before scaling.
Example input
{"businessType": "Storm Damage Roofer","location": "Denver, CO","maxResults": 25,"enrichEmails": true,"verifyEmails": true,"emailRequirement": "smtp_verified","enrichSocials": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Example output
{"business_name": "Example Roofing & Exteriors","business_type": "Storm Damage Roofer","category": "Roofing contractor","services": ["Roof Repair", "Roof Replacement", "Storm Damage"],"phone": "+1 303-555-0142","email": "estimates@example-roofing.com","email_verified": true,"email_verification_status": "smtp_verified","email_verification_note": "SMTP accepted this mailbox and rejected a random mailbox","email_source_url": "https://example-roofing.com/contact","all_emails": [{"address": "estimates@example-roofing.com","verified": true,"status": "smtp_verified","verificationNote": "SMTP accepted this mailbox and rejected a random mailbox","sourceUrl": "https://example-roofing.com/contact"}],"website": "https://example-roofing.com/","address": "100 Main St, Denver, CO 80202","rating": 4.8,"review_count": 214,"hours": "Open · Closes 5 PM","facebook": "https://facebook.com/example-roofing","instagram": null,"linkedin": null,"twitter": null,"google_maps_url": "https://www.google.com/maps/place/example","place_id": "0x123:0x456","latitude": 39.7392,"longitude": -104.9903,"scraped_at": "2026-09-12T12:00:00.000Z","source_url": "https://www.google.com/maps/search/storm%20damage%20roofing%20contractor%20in%20Denver%2C%20CO?hl=en"}
Understanding email verification
Email verification is deliberately conservative:
smtp_verified: the receiving server accepted the discovered mailbox and rejected a generated random mailbox on the same domain.catch_all: the server accepts random recipients, so the specific mailbox cannot be confirmed.mx_only: the domain has mail routing, but SMTP probing was blocked, timed out, or remained inconclusive.smtp_rejected: the receiving server definitively rejected the mailbox.invalid_domain: invalid syntax or no MX records.not_checked: verification was disabled.
An SMTP result is a point-in-time signal, not a guarantee that future mail will be delivered. Mail servers may greylist, block verification traffic, or accept mail before rejecting it later. Always follow applicable privacy, marketing, anti-spam, and data-protection laws.
Pricing
Pay per event keeps cost predictable:
-
Apify free-plan users can receive up to 5 saved records per run. Paid-plan users can request up to 200.
-
Actor start:
$0.00005per automatically calculated start event -
Roofing contractor lead:
$0.035per saved dataset record
Approximate event prices are $0.35 for 10 leads, $1.75 for 50 leads, and $3.50 for 100 leads, plus the small start event. The Actor saves each result before charging its lead event and stops cleanly when the run's maximum charge is reached.
API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('muhammadafzal/roofing-contractor-lead-scraper').call({businessType: 'Commercial Roofer',location: 'Houston, TX',maxResults: 20,enrichEmails: true,verifyEmails: true});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Reliability and limits
- Google Maps and contractor websites change and may rate-limit automated access. Apify residential proxies are recommended for production.
- Some listings do not include a website, and some websites publish only a contact form or phone number. In those cases email fields are
nullor empty; the Actor does not invent addresses. - Websites are limited to the home page plus up to two same-domain contact, about, team, service, estimate, or roofing pages.
- SMTP port 25 may be filtered by a network or receiving server, producing the honest
mx_onlyresult. emailRequirement=smtp_verifiedis intentionally strict and may return zero leads when mail servers block probes or use catch-all routing.- Google Maps result availability varies by geography and query. Run separate locations for broader coverage.
- Diagnostics and outcome classification are saved in the
OUTPUTkey-value record. A run distinguishesDATA,EMPTY,BLOCKED,REJECTED, andFAILEDoutcomes.
Responsible use
Collect and use only lawful public business information. Respect website terms, robots policies where applicable, opt-outs, applicable privacy laws, and email-marketing rules such as CAN-SPAM, CASL, PECR, and GDPR. Do not use this Actor to harass individuals, send deceptive messages, or build sensitive-person profiles.