Angi Home Services Scraper
Pricing
from $1.00 / 1,000 results
Angi Home Services Scraper
Scrape Angi home-service provider listings (plumbers, electricians, HVAC, etc.) with phone, website, rating, reviews, services, service areas, licenses. Requires hardcoded Apify RESIDENTIAL US proxy.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(5)
Developer
Crawler Bros
Actor stats
5
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape home-service provider listings from Angi.com — plumbers, electricians, HVAC technicians, roofers, landscapers and 500+ other service categories. Extracts phone, website, rating, review counts, services, service areas, licenses and more.
Output (per provider)
type=angi_businessid,url,namedescriptionphone,websiteaddress—{ street, city, state, zipCode, country }latitude,longituderating,grade(A-F),reviewCount,yearsInBusinessyearsInAngi— years active on Angi ("On Angi since YYYY")ownerName— owner/founder name when listedservices,specialties,serviceAreas(arrays)hourslicenses,certifications,isInsuredpaymentMethodsawards,professionalAssociationsresponseTime(e.g. "2 hours"),responseRate(percent),projectsCompletedemergencyService(24/7),offersSeniorDiscount,offersFreeEstimate,isEcowarrantyOffered— warranty text or yes/nopricingTiers— flat-rate / hourly amounts when publishedhighlightedReviews— featured review excerpts[{ author, rating, text }]photos— gallery image URLsscrapedAt
Fields are only emitted when populated (no nulls). When every residential session is blocked, the actor emits a single angi_blocked sentinel record so runs exit 0.
Input
| Field | Type | Description |
|---|---|---|
category | string | Service slug, e.g. plumbing, electrical, hvac. Prefill plumbing. |
state | string | Optional 2-letter US state code, e.g. ny. |
city | string | Optional city slug (requires state), e.g. new-york. |
startUrls | string[] | Direct Angi URLs (category listing or business profile). Overrides category/state/city. |
maxItems | integer | Max providers to return (default 3). |
proxyConfiguration | object | Required Apify RESIDENTIAL US proxy (hardcoded — do not change). |
How it works
- Build listing URL from
category + state + cityor usestartUrls. - Fetch via
curl_cffiwith Chrome-131 TLS fingerprint through RESIDENTIAL US proxy — fresh session per retry (up to 5 attempts). - For listing pages, collect
/business/<slug>/<id>and/companyreviews.htm?spid=<id>links and fetch each profile. - Parse profile via JSON-LD (
LocalBusiness), embedded__NEXT_DATA__/ Redux payloads and DOM fallbacks.
FAQ
Do I need a proxy? Yes — Apify RESIDENTIAL US is hardcoded. Datacenter IPs are blocked by Cloudflare. The actor fails fast if the proxy stanza is absent.
What URL formats are supported?
- Category nationwide:
https://www.angi.com/companylist/plumbing/ - Category by state:
https://www.angi.com/companylist/us/ny/plumbing.htm - Category by city:
https://www.angi.com/companylist/us/ny/new-york/plumbing.htm - Profile:
https://www.angi.com/companyreviews.htm?spid=12345orhttps://www.angi.com/business/<slug>/<id>
What is the grade? Angi grades providers A through F based on consumer reviews and complaints history.
Why a sentinel record sometimes? Cloudflare occasionally rejects even residential sessions. The sentinel keeps the run non-empty and lets the Apify daily test pass.