ASHI Home Inspectors · Emails & Phones by State
Pricing
from $2.49 / 1,000 inspector with emails
ASHI Home Inspectors · Emails & Phones by State
Export ASHI home inspectors — name, company, email, phone, website, state. Filter by US state or paste profile URLs. One row per inspector. Public directory. No login.
Pricing
from $2.49 / 1,000 inspector with emails
Rating
0.0
(0)
Developer
Corentin Robert
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Export public ASHI inspector profiles as a spreadsheet — name, company, email, phone, website, and US state. Filter by state or paste profile URLs.
No login. No API key. No ASHI account.
Who is this for?
| You are… | Typical goal | Suggested setup |
|---|---|---|
| Solar / roofing / HVAC sales | Inspectors who already talk to homebuyers | Florida or California · Only rows with email or phone |
| Home-warranty or insurance BD | Territory list with a real mailbox | One state · 20-row first run · then raise Max inspectors |
| Agency / SDR | CRM import, one row per inspector | Dataset view Outreach CRM |
| Market research | How many certified inspectors per state | Empty states = nationwide · contacts optional |
| Ops / data | Enrich ASHI URLs you already have | Paste Profile URLs |
What you get by default: identity, company, membership when published, US state, profile URL. Email and phone only when ASHI prints them on the public profile — never invented.
City and ZIP are not on the public profile. Filter by US state, or paste URLs.
How to use
- Open this Actor in Apify Console.
- Keep Florida (or pick another state). Leave states empty for nationwide.
- Leave Only rows with email or phone on for a CRM-ready first export.
- Click Start.
- Download JSON / CSV / Excel — views: Overview, Outreach CRM, Services.
Max inspectors = 0 → no Actor-side ceiling (Free plan still stops at 20 / run).
Standby lookup (HTTP)
Console Start is unchanged: fill Input, run, download the dataset.
Need one inspector (or a few) in n8n, Make, or your own app? Use the Standby tab hostname. Authenticate with Authorization: Bearer <APIFY_TOKEN> (or ?token=).
| Method | Path | Request | Response |
|---|---|---|---|
GET / POST | /lookup | profileUrl or state + maxItems (1–5) | { items, count, cap, … } |
GET | / | Header x-apify-container-server-readiness-probe | OK |
Hard cap: 5 inspectors per request (1 if you pass a profile URL). Bulk scrapes belong on Start. Same PPE as a dataset row. First byte timeout: 5 minutes.
curl -H "Authorization: Bearer $APIFY_TOKEN" \"https://<user>--ashi-homeinspector-scraper.apify.actor/lookup?profileUrl=https://www.homeinspector.org/profile/john-ghent/"
curl -H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"state":"FL","maxItems":3,"onlyWithContact":true}' \"https://<user>--ashi-homeinspector-scraper.apify.actor/lookup"
{ "items": [{ "name": "John Ghent", "email": "…", "phone": "…", "state": "CT" }], "count": 1, "cap": 5 }
Standby memory 512 MB, idle 60 s (Console → Actor → Standby).
Ready-made examples (published tasks)
Saved presets (publish in Console to get Store landing pages):
| Example | Best for |
|---|---|
| Florida inspectors with emails | Home-services outreach in FL |
| California inspectors with emails | West Coast territory |
| Inspectors from profile URLs | Enrich a short list you already have |
| Nationwide CRM sample | 20-row Try, contacts only |
What it extracts
| Category | Fields |
|---|---|
| Identity | name, firstName, lastName, companyName, membershipLevel, memberSince |
| Contact | email, emails, phone, phones, website |
| Location | state, states |
| Services | propertyTypes, additionalServices |
| Profile | profileUrl, slug, profileId, hasEmail, hasPhone, scrapedAt |
ASHI headquarters phone (847-759-2820) and @homeinspector.org / @ashi.org mailboxes are dropped. A “Contact me today” form can sit on the page — contacts are still copied from the public HTML when present.
Typical fill (Florida, 8 contact-only rows, Aug 2026): 8/8 email and phone. Company and website fill when the inspector published them. Membership year and badge are missing on some cards. City / ZIP: never on the public profile.
How it works
- Read the public ASHI directory for the states you picked (or nationwide).
- Open each inspector profile page.
- Copy name, company, email, phone, and website when they are printed.
- Write one row immediately — the Dataset fills as the run goes.
How much does it cost to scrape ASHI?
HTTP-only (no browser). Pay-per-event on each exported inspector, plus a ~$0.00005 start. Compute on 512 MB is typically cents.
| Free | Bronze | Silver | Gold | Platinum | Diamond | |
|---|---|---|---|---|---|---|
| Inspector with email | $0.00399 | $0.00349 | $0.00299 | $0.00249 | $0.00249 | $0.00249 |
| Inspector with phone only | $0.00249 | $0.00219 | $0.00189 | $0.00169 | $0.00169 | $0.00169 |
| Inspector without contact | $0.00149 | $0.00129 | $0.00109 | $0.00099 | $0.00099 | $0.00099 |
| 20 emails (Try) | $0.08 | $0.07 | $0.06 | $0.05 | $0.05 | $0.05 |
| 1,000 with email | $3.99 | $3.49 | $2.99 | $2.49 | $2.49 | $2.49 |
| ~1,900 nationwide, mix of tiers | ~$3–8 | lower | lower | lower | lower | lower |
Free Apify plan: 20 inspectors per run. Paid plans follow your max charge.
Is it legal to scrape ASHI?
This Actor only copies data ASHI publishes on public inspector profile pages. Names, emails and phones are personal data — make sure your use complies with GDPR, CAN-SPAM, TCPA and any rules that apply to you. This is not legal advice.
Is scraping ASHI free?
ASHI does not charge to view public profiles. You still pay Apify PPE (and a little compute). There is no high-volume free path.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
states | array | ["FL"] prefill | US states. Empty = nationwide. |
onlyWithContact | boolean | false (true in Try) | Keep rows with published email and/or phone. |
profileUrls | array | — | Public profile URLs. When set, states are ignored. |
maxItems | integer | 20 | 0 = no numerical cap. Free plan: 20 / run. |
verboseLogs | boolean | false | Extra debug lines for support. |
API-only: maxConcurrency (default 16), proxyConfiguration ({ "useApifyProxy": true } on the platform).
{"states": ["FL"],"onlyWithContact": true,"maxItems": 20}
{"profileUrls": ["https://www.homeinspector.org/profile/john-ghent/"],"maxItems": 1}
Output example
{"profileId": "65565","slug": "william-mcgarigle","name": "William McGarigle","firstName": "William","lastName": "McGarigle","companyName": "South Walton Home Inspections, LLC.","membershipLevel": null,"memberSince": null,"email": "will@southwaltonhomeinspections.com","emails": ["will@southwaltonhomeinspections.com"],"phone": "(850) 797-7555","phones": ["(850) 797-7555"],"website": "https://southwaltonhomeinspections.com","state": "FL","states": ["FL"],"propertyTypes": ["Single-Family Homes", "New Construction Inspections"],"additionalServices": ["Insurance Inspections", "Wind Mitigation Survey"],"profileUrl": "https://www.homeinspector.org/profile/william-mcgarigle/","hasEmail": true,"hasPhone": true,"scrapedAt": "2026-08-26T13:43:29.029Z"}
Download JSON, CSV, Excel, or HTML from the Dataset tab.
Also available
InvestorLift Scraper — US wholesale deals with optional seller website email and phone. No login.
Local development
cd ashi-homeinspector-scrapernpm installcp .actor/INPUT.json storage/key_value_stores/default/INPUT.jsonapify run --purge
Use apify run (not npm start). Default INPUT.json must include required schema fields (or pass --input-file). Local storage/ is not synced to Apify Console. Root input.json is merged locally; CLI KV input wins on key collision.
npm test runs parser unit tests (no network).
FAQ
Does every row have an email? No. The Actor never invents a mailbox. Turn Only rows with email or phone on to skip empty cards.
Why no city or ZIP? ASHI does not print them on the public profile. State comes from the directory listing.
InterNACHI? Not this Actor. nachi.org is behind a bot wall.
Will a 20-row Try finish in 5 minutes? Yes — HTTP-only, typically under a minute for a single state.
Does Standby replace Start? No. Start = batch dataset. Standby = small JSON lookup. First HTTP byte timeout is 5 minutes.
Support
Questions, custom scrapers, or integrations: corentin@outreacher.fr.
Ready? Pick a state, keep contacts on, and click Start.