# HomeAdvisor Scraper \[Only $3] | Contractor Leads (`ahmed_jasarevic/homeadvisor-scraper`) Actor

Extract US home service professionals from HomeAdvisor/Angi by trade and location. Get company name, rating, reviews, Elite badges, services, and profile URLs - structured JSON via Angi internal API. Built for lead generation, market research, and CRM enrichment.

- **URL**: https://apify.com/ahmed\_jasarevic/homeadvisor-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.97 / 1,000 pro scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## HomeAdvisor / Angi Scraper — US Contractor Lead Generation

Extract **home service professionals** from [HomeAdvisor.com](https://www.homeadvisor.com) by service type and location. Get company name, rating, review count, review text, Screened & Approved / Elite badges, services, service areas, project cost data, and profile URLs — all structured JSON via Angi's internal API, no browser required.

### Build Contractor Lead Databases Without Official API Access

HomeAdvisor has no public API (Supergood grades it **F**). This actor calls Angi's internal pro-search endpoint directly and returns clean structured data for every contractor found.

### Key Use Cases

- **Lead generation** — build targeted lists of contractors by trade + geography for outreach campaigns
- **Competitive intelligence** — compare ratings, review counts, and Elite badges across providers in a metro area
- **Market research** — analyze service coverage, pricing patterns, and review sentiment by city
- **CRM enrichment** — append verified contractor data (name, address, rating, services) to existing contact databases
- **Franchise development** — identify top-performing pros in expansion markets
- **Insurance & supplier outreach** — find licensed, well-reviewed contractors for partnerships

### How It Works

1. You provide **service types** (plumbing, HVAC, roofing, electrical, etc.) and **locations** (Houston TX, Denver CO, etc.)
2. The actor calls Angi's internal JSON API (`api.angi.com/api/lpfe/proxy/landing/api/v4/pro-profiles`) with the same headers the website uses
3. It paginates through results (20 pros per page) up to your configured max
4. Each professional profile is normalized into a clean dataset row with ratings, badges, services, hours, amenities, and photos

No Cloudflare scraping, no browser rendering, no fragile DOM parsing.

### Extract Real Estate & Home Service Listings for Market Research

#### Input

| Field | Type | Required | Default | Notes |
|-------|------|----------|---------|-------|
| `serviceTypes` | string\[] | Yes | `["plumbing"]` | Lowercase slugs: `plumbing`, `hvac`, `roofing`, `electrical`, `painting`, `landscaping`, `flooring`, `carpentry`, `handyman`, `pest-control`, `cleaning`, `fencing`, `tree-service`, `concrete`, `water-heater-repair`, `garage-door`, `drywall`, `kitchen-remodel`, `bathroom-remodel`, `deck-building`, `window-replacement`, `siding-installation` |
| `locations` | string\[] | Yes | `["Houston, TX"]` | City, State pairs. Built-in ZIP maps for: Houston, Dallas, New York, Denver, Chicago, Los Angeles, Phoenix, Austin, Miami, Atlanta, Seattle, San Francisco, Boston, Nashville, San Antonio |
| `maxResults` | integer | No | `50` | Max professionals per service+location (1–500) |
| `includeReviews` | boolean | No | `true` | Store individual customer reviews in a separate reviews dataset |
| `maxReviewsPerPro` | integer | No | `10` | Reserved for future use (0–100) |
| `maxPagesPerSearch` | integer | No | `10` | Max API pages per search (each page = 20 results) |
| `useApifyProxy` | boolean | No | `true` | Use Apify proxy for requests |
| `apifyProxyGroups` | string\[] | No | `["RESIDENTIAL"]` | Proxy groups (RESIDENTIAL recommended) |

#### Output

Each dataset item contains:

| Field | Description |
|-------|-------------|
| `companyName` | Professional/company name |
| `legacyId` | HomeAdvisor legacy ID |
| `profileUrl` | Direct link to the HA profile page |
| `averageRating` | Overall rating (0–5) |
| `reviewCount` | Total number of reviews |
| `recommendedRate` | Percentage of customers who recommend |
| `averageRatings` | Per-dimension breakdown: professionalism, punctuality, responsiveness, quality, value |
| `bestReview` | Highest-rated review with comment text and date |
| `awards` | Super Service Awards and Elite badge status |
| `isSponsored` | Whether the pro is a sponsored listing |
| `eliteService` | Whether the pro has Elite/Super Service status |
| `services` | List of services offered |
| `yearsInBusiness` | Years operating |
| `businessDescription` | Pro's self-description |
| `streetAddress`, `city`, `state`, `postalCode` | Full address |
| `serviceHours` | Weekly schedule with open/close times |
| `responseRate` | Percentage of inquiries responded to |
| `freeEstimates`, `emergencyServices` | Amenity flags |
| `logoPhotoUrl`, `proSuppliedPhotos` | Logo and project photos |
| `serviceType`, `searchedLocation` | Search context metadata |
| `scrapedAt` | Run timestamp |

#### Example Input

```json
{
  "serviceTypes": ["plumbing", "hvac", "roofing"],
  "locations": ["Houston, TX", "Denver, CO", "Dallas, TX"],
  "maxResults": 100,
  "includeReviews": true,
  "maxPagesPerSearch": 10,
  "useApifyProxy": true,
  "apifyProxyGroups": ["RESIDENTIAL"]
}
```

#### Example Output

```json
{
  "companyName": "Show Plumbing LLC",
  "legacyId": "158986471",
  "profileUrl": "https://www.homeadvisor.com/rated.showplumbingllc.158986471.html",
  "businessType": "LEADS",
  "city": "Houston",
  "state": "TX",
  "postalCode": "77008",
  "streetAddress": "1420 North Durham Drive",
  "averageRating": 4.58,
  "reviewCount": 492,
  "recommendedRate": 95,
  "averageRatings": {
    "PROFESSIONALISM": 5,
    "PUNCTUALITY": 4.92,
    "OVERALL": 4.85,
    "RESPONSIVENESS": 4.88,
    "QUALITY": 4.89,
    "VALUE": 4.58
  },
  "bestReview": {
    "reviewId": "...",
    "comment": "Excellent service, showed up on time...",
    "createdOn": "2022-10-25T09:03:47Z"
  },
  "eliteService": true,
  "awards": [{ "name": "Super Service Award 2025" }],
  "services": ["Faucets, Fixtures and Pipes", "Water Heater Install"],
  "yearsInBusiness": 47,
  "freeEstimates": true,
  "emergencyServices": false,
  "serviceType": "plumbing",
  "searchedLocation": "Houston, TX",
  "scrapedAt": "2026-09-10T11:26:49.439Z"
}
```

### Integrations & Automation

- **Webhooks** — get notified when new contractors appear in a search
- **Zapier / Make** — pipe results into your CRM, Google Sheets, or outreach tool
- **API** — access results programmatically via the Apify API

**Recommended schedule:** Run daily or weekly to monitor new contractors entering a market, track rating changes, and detect new Elite/Super Service Award winners.

### Related Actors

- [Angi Scraper by igolaizola](https://apify.com/igolaizola/angi-scraper) — Angi contractor profiles with phone numbers
- [HomeAdvisor Search Page Scraper](https://apify.com/ovaimerali/homeadvisor-search-page-scraper) — Full profiles including phone/website
- [Google Maps Scraper](https://apify.com/apify/google-maps-scraper) — Supplement contractor data with Google Maps reviews and contact info
- [Outscraper Google Maps API](https://apify.com/outscraper/google-maps-scraper) — Enterprise-grade location data
- [LinkedIn Profile Scraper](https://apify.com/apify/linkedin-scraper) — Cross-reference contractor owners on LinkedIn

### FAQ

#### Why use this actor instead of the official API?

HomeAdvisor has **no public API** — the Supergood API Report Card gives it an **F grade**. Only a one-way webhook exists for pro accounts. This actor calls the same internal JSON endpoint the website uses, giving you programmatic access to contractor search results without browser automation.

#### What are the alternatives to HomeAdvisor for contractor data?

- **Thumbtack** — similar contractor marketplace, different data fields
- **Houzz** — design-focused professionals
- **Porch** — home services platform
- **BuildZoom** — permit-based contractor data
- **Google Maps** — general business listings with reviews

Traditional databases like Apollo and ZoomInfo [miss 80–90% of licensed contractors](https://www.useorigami.com) according to 2026 research, making HomeAdvisor/Angi one of the richest sources for this niche.

#### How many results can I get per search?

Each API page returns 20 pros. With `maxPagesPerSearch: 100` and `maxResults: 500`, you can extract up to 500 professionals per service+location combination.

#### Can I scrape cities beyond the built-in ZIP map?

Yes — pass any `City, ST` pair. The built-in ZIP override map improves ranking for 15 major metros; unknown cities use the locality slug alone (results still return, but with fewer ZIP overrides).

#### Is this legal?

This actor retrieves publicly available business listing data from HomeAdvisor/Angi. Users are responsible for compliance with applicable Terms of Service and data protection regulations. Do not use scraped data for unsolicited communications without proper consent.

### SEO Keywords

homeadvisor scraper, angi scraper, homeadvisor api alternative, contractor lead generation, home services data extraction, plumber lead generation, hvac contractor database, contractor database building, home service professionals list, homeadvisor reviews scraping, angi contractor data, home services lead generation, roofing contractor database, plumbing contractor directory, hvac company list by state, homeadvisor vs thumbtack, home improvement contractor list, contractor contact data, scrape homeadvisor ratings, homeadvisor data export, angi pro scraper, home services professionals scraping

### For AI Agents & LLM Apps

**Purpose:** Extract US home service professionals from HomeAdvisor/Angi by service type and location, returning structured contractor profiles with ratings, reviews, badges, services, and contact information.

**Minimal working input:**

```json
{
  "serviceTypes": ["plumbing"],
  "locations": ["Houston, TX"],
  "maxResults": 50
}
```

**Output fields:** companyName, legacyId, profileUrl, averageRating, reviewCount, recommendedRate, averageRatings, bestReview, eliteService, awards, services, yearsInBusiness, businessDescription, streetAddress, city, state, postalCode, serviceHours, responseRate, freeEstimates, emergencyServices, logoPhotoUrl, proSuppliedPhotos, serviceType, searchedLocation, scrapedAt

**Behaviors an agent should know:**

- `serviceTypes` accepts lowercase slugs (e.g. `plumbing`, `hvac`) — not display names
- `locations` uses `City, ST` format — built-in ZIP maps exist for 15 major US metros
- `maxResults` caps per service+location combination, not total
- `maxPagesPerSearch` controls pagination depth (each page = 20 results)
- Reviews are fetched on a best-effort basis — the list API always returns a summary row
- The actor uses Apify Residential proxy by default — disable only if your plan lacks the add-on

**Billing model:** Pay-per-event ($0.003 per professional, $0.001 per review, $0.0005 per actor start)

### Legal & Compliance Disclaimer

This actor is independent and not affiliated with, endorsed by, or sponsored by Angi Inc. or HomeAdvisor. It accesses only publicly available business listing pages on HomeAdvisor.com — no login bypass, no CAPTCHA solving, no private API exploitation. Users are responsible for their own compliance with HomeAdvisor's Terms of Service and applicable data-protection law. Do not use scraped data for unsolicited commercial outreach in violation of applicable law (e.g. CAN-SPAM, TCPA).

# Actor input Schema

## `serviceTypes` (type: `array`):

HomeAdvisor service categories to search. Use lowercase slugs: plumbing, hvac, roofing, electrical, painting, landscaping, flooring, carpentry, handyman, pest-control, cleaning, fencing, tree-service, concrete, water-heater-repair, garage-door, drywall, kitchen-remodel, bathroom-remodel, deck-building, window-replacement, siding-installation.

## `locations` (type: `array`):

City, State pairs to search. Use format 'City, ST' e.g. 'Houston, TX', 'Denver, CO', 'New York, NY'.

## `maxResults` (type: `integer`):

Maximum number of professionals to extract per service+location combination.

## `includeReviews` (type: `boolean`):

Store reviews in a separate 'reviews' dataset. A summary row (rating, review count, average breakdown, best review) is always saved per professional; when enabled, individual customer reviews are also fetched from each pro's profile page on a best-effort basis.

## `maxReviewsPerPro` (type: `integer`):

Maximum number of individual reviews to save per professional (applies to the best-effort profile page fetch).

## `proxyConfiguration` (type: `object`):

Select proxies to be used by your crawler, or choose to not use a proxy.

## Actor input object example

```json
{
  "serviceTypes": [
    "plumbing"
  ],
  "locations": [
    "Houston, TX"
  ],
  "maxResults": 50,
  "includeReviews": true,
  "maxReviewsPerPro": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "serviceTypes": [
        "plumbing"
    ],
    "locations": [
        "Houston, TX"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/homeadvisor-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "serviceTypes": ["plumbing"],
    "locations": ["Houston, TX"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/homeadvisor-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "serviceTypes": [
    "plumbing"
  ],
  "locations": [
    "Houston, TX"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call ahmed_jasarevic/homeadvisor-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/homeadvisor-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/HLkK5jYOPpyS3tk8k/builds/BhXt23G6Zh6fOSSZy/openapi.json
