HomeStars.ca Scraper avatar

HomeStars.ca Scraper

Pricing

from $5.60 / 1,000 business profiles

Go to Apify Store
HomeStars.ca Scraper

HomeStars.ca Scraper

Scrape Canadian home-service business listings and profiles from HomeStars.ca.

Pricing

from $5.60 / 1,000 business profiles

Rating

5.0

(2)

Developer

Scrapers Delight

Scrapers Delight

Maintained by Community

Actor stats

1

Bookmarked

12

Total users

3

Monthly active users

2 days ago

Last modified

Share

Scrape Canadian home-service businesses — plumbers, HVAC, electricians, roofers, contractors — from HomeStars.ca, Canada's largest home-services review platform.

Why this actor exists

Google Maps Scraper is the default tool for harvesting local business leads, but Google Maps' coverage of Canadian home services is uneven: the bigger, more review-rich pros often live on HomeStars instead of (or in addition to) Maps. HomeStars's own sitemap lists 29,947 pro profiles across 564,101 city+trade directory pages (7,325 cities × 7,401 trade slugs, snapshot 2026-08-26). If your TAM is "Canadian homeowners who hire trades," this is the cleanest single source.

This actor pulls phone number, social links, website, full company bio, ratings, review counts, HomeStars badges, professions, locality, and verification status for every pro in the directory.

Quick start

{
"mode": "all_listings",
"cities": ["toronto", "kitchener"],
"professions": ["plumber-pros", "hvac-pros"],
"maxListings": 0, // 0 = every matching directory page
"maxPagesPerListing": 0, // 0 = paginate each one to the end
"maxProfilesPerListing": 0,// 0 = fetch every pro on every page
"maxConcurrency": 5,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "CA"
}
}

This fetches every plumber and HVAC profile in Toronto and Kitchener.

The three caps default to small numbers (3 directory pages, 1 page of pagination each, 5 profiles per page) so that pressing Start with nothing configured returns a sample for a few cents instead of walking all 564,101 directory pages. Set a cap to 0 to remove it, as above. This is the one input you should always look at before a real run.

Modes

ModeWhat it doesCost driver
all_listings (default)Walks listing sitemap, paginates each directory, fetches every profile. Most complete output.Per-profile + per-listing-card charges
listings_onlySame crawl, but stops at listing cards. Output is the card snippet only — name, slug, city/province, trade slug, rating, review count, badges, verifications, logo, bio, and the latest review — but no phone, website or social links, which exist only on the profile page. ~3.7× cheaper per business.Per-listing-card charges only
profiles_onlySkips directories. Hits the service_pros sitemap directly and pulls every pro's profile in one pass. Fastest path to a full national dataset. The cities filter is ignored in this mode — profile URLs carry no location info; filter post-hoc on the city field of the output.Per-profile charges only

Example output (profile record)

Real data from Local Heating And Cooling, a 5-star Kitchener HVAC contractor, 122 reviews, BEST_OF_AWARD winner 2026:

{
"slug": "2913450-local-heating-and-cooling",
"profileUrl": "https://www.homestars.com/profile/2913450-local-heating-and-cooling",
"companyName": "Local Heating And Cooling",
"phone": "+15198848888",
"websiteUrl": "https://localheatingcooling.com",
"facebookUrl": "https://www.facebook.com/localheatingandcooling/",
"instagramUrl": "https://instagram.com/local_heating_and_cooling?igshid=YmMyMTA2M2Y=",
"linkedinUrl": null,
"youtubeUrl": null,
"rating": 10,
"ratingOutOfFive": 5,
"reviewsCount": 122,
"locality": "Kitchener, Ontario",
"city": "Kitchener",
"province": "Ontario",
"professions": [
"HVAC contractor", "Electrician", "Handyman", "Plumber", "Cleaning company",
"Appliance repair specialist", "Excavation Specialist", "Refrigeration specialist",
"Renewable Energy Specialist", "Home Electronics Specialist",
"Fireplace and BBQ Specialist"
],
"verifications": ["VALID_ID", "VERIFIED_LICENSE"],
"badges": [
{ "badgeType": "VERIFICATION_BADGE", "winningYear": 2022, "winCount": 1 },
{ "badgeType": "BEST_OF_THE_BEST_AWARD","winningYear": 2025, "winCount": 1 },
{ "badgeType": "BEST_OF_AWARD", "winningYear": 2026, "winCount": 7 }
],
"logoUrl": "https://www.homestars.com/images/sp/thumbnail_medium/6a8a78d0-eb98-5777-ad14-ba009463f852.jpg",
"companyBio": "Visit our local showroom! 47 Bridge St E Unit 10 Kitchener. Whether you need a new furnace…",
"isApproved": true,
"warrantyIsProvided": false,
"ableToInteract": true,
"firstAbleToInteractAt": "2018-08-20T00:00:00+00:00",
"sourceListingUrl": "https://www.homestars.com/heating-and-cooling/hvac-pros/kitchener-ontario",
"scrapedAt": "2026-05-12T01:06:11.147Z"
}

Pricing

This actor uses pay-per-event pricing — you only pay for results, not compute time.

EventPriceWhen it fires
profile_scraped$0.008One per profile pushed to the dataset (modes: all_listings, profiles_only)
listing_business_scraped$0.003One per business card on a listing page (all modes)

Worked examples:

Directory pages carry 16 business cards each. Worked examples, using live counts read from HomeStars on 2026-08-29:

  • One directory page, cards only (the default-ish sample run): 16 × $0.003 = $0.05
  • Every plumber in Toronto, cards only (3,935 pros over 246 pages): 3,935 × $0.003 = $11.81
  • Every plumber in Toronto, full profiles (all_listings): 3,935 × $0.011 = $43.29
  • National profiles-only sweep (29,947 pros in the sitemap): 29,947 × $0.008 = $239.58

Apify proxy traffic and platform usage are billed separately on Apify's side, as with any actor.

Filters

  • cities — Lowercased city slugs as they appear in HomeStars URLs (e.g. kitchener-ontario, toronto-ontario). Match is substring; pass toronto to match toronto-ontario, north-york-toronto, etc. Ignored in profiles_only mode.
  • professions — Lowercased profession slugs (e.g. plumber-pros, hvac-pros, electrician-pros, roofer-pros).
  • maxListings (default 3) — how many distinct directory pages to crawl. 0 = all 564,101.
  • maxPagesPerListing (default 1) — how deep to paginate each one. A busy city+trade reports 250+ pages. 0 = to the end.
  • maxProfilesPerListing (default 5) — how many of the ~16 pros on a page to open. 0 = all of them.

The defaults are deliberately small; they bound a first run, not a real harvest. Raise or zero them once you know the scope you want.

What's not included

  • Email addresses. HomeStars hides business email behind a lead-gen form; it isn't exposed in their public page state. We confirmed this against multiple profile dumps. Use the phone number and website to reach the business.
  • Full review text. Each profile carries the latest 5 reviews in its Apollo cache, but we don't extract them — they don't have a stable per-business uplift and bloat the dataset. If you need them, file a feature request.
  • Project / portfolio photos. HomeStars loads these client-side from a separate endpoint, so capturing them would mean a second request per profile. Out of scope for v0.1; ask if you need it.
  • Email-reveal simulation. This actor does not impersonate consumer accounts to trigger HomeStars's "Send message" flow.

How it compares

NeedUse thisOr
Canadian home-service leads with HomeStars-verified ratingsHomeStars Scraper
Generic local-business directory with Maps presenceGoogle Maps Scraperthis actor for HomeStars-exclusive pros
US home servicesYelp Scraper

HomeStars is the only large directory where HVAC, plumbing, roofing, and renovation pros submit verified-license documentation to get a VERIFIED_LICENSE badge — that field doesn't exist anywhere else in the Canadian directory landscape.

Notes / known quirks

  • Pagination format. HomeStars's listing pagination uses ?page=N query parameters — verified working on 2026-08-29. The path-based /page/N/ variant returns 404 today; the actor keeps it only as an automatic fallback in case they switch back, and logs Pagination drift detected if it ever fires.
  • Cloudflare, honestly. HomeStars is fronted by Cloudflare with a managed challenge, and it does refuse a share of requests from Apify's shared proxy pool — including residential CA. The actor retries with a fresh session and most pages get through, but on a large run you should expect some to be refused. Bring your own residential proxy if you need every page on the first pass.
  • A refused page is never reported as an empty market. If Cloudflare blocks a directory page, the actor logs BLOCKED (not empty) and counts it; if a page loads but its business block has moved, it logs NO DIRECTORY PAYLOAD (not empty). Either way the run finishes with a status message telling you how many pages it could not read, so "0 businesses" always means the directory genuinely listed nobody — not that we never saw it.
  • The same business appears under several city slugs. HomeStars runs overlapping directories — plumber-pros/toronto and plumber-pros/toronto-toronto return largely the same pros. Every record carries slug and listingUrl, so dedupe on slug if you crawl neighbouring cities and want one row per business.
  • Rating scale. The rating field is on a 0–10 scale (matching HomeStars's internal Apollo cache). ratingOutOfFive is rating / 2 for convenience — that's what HomeStars displays publicly.