Angi Scraper with Contacts | $4 / 1k
Pricing
$3.99 / 1,000 results
Angi Scraper with Contacts | $4 / 1k
Extract structured Angi contractor profiles including business details, email addresses, phone numbers, websites, social accounts, ratings, reviews, licensing signals, and service categories. Built for contractor sourcing, market intelligence, and automated CRM or analytics pipelines.
Pricing
$3.99 / 1,000 results
Rating
0.0
(0)
Developer

Fatih Tahta
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Angi Scraper with Contacts
Slug: fatihtahta/angi-scraper-with-contacts
Overview
This actor is built upon the ValidatedMails.com architecture for email enrichment workflows.
Angi Scraper with Contacts collects structured contractor and business profile data from Angi, including company identity, profile details, service categories, ratings, reviews, operational details, and contact information when available. It supports both direct page collection and search-driven discovery so you can gather records across specific cities, states, and service categories in a consistent format. Angi is a major U.S. marketplace for home services, making it a valuable source for local market mapping, provider benchmarking, and outreach preparation. The actor automates repetitive collection workflows and standardizes output for reliable downstream use. This reduces manual research time and helps teams move faster from raw pages to analysis-ready datasets.
Why Use This Actor
- Market research and analytics teams: Build local service-market snapshots, compare provider density across regions, and analyze review/ratings patterns by category.
- Product and content teams: Identify high-demand service areas, evaluate listing quality trends, and prioritize location/category content opportunities.
- Developers and data engineers: Feed structured contractor records into ETL jobs, BI dashboards, and internal data products with minimal transformation.
- Lead generation and enrichment teams: Build contractor prospect lists and enrich business records with contact attributes for targeted outreach workflows.
- Monitoring and competitive tracking teams: Re-run focused inputs over time to detect profile updates, changes in review volume, or shifts in category coverage.
Input Parameters
Provide any combination of URLs, queries, and filters to control discovery breadth and output depth.
| Parameter | Type | Description | Default |
|---|---|---|---|
startUrls | string[] | One or more Angi URLs to scrape directly. Supports company list pages, service/category result pages, and individual contractor profile pages. | – |
queries | string[] | Search phrases for discovery (for example: city + service intent). Useful when exploring opportunities and letting the actor find relevant listing pages. | – |
state | string | U.S. state filter used for location-based searches. Allowed values: al, ak, az, ar, ca, co, ct, de, dc, fl, ga, hi, id, il, in, ia, ks, ky, la, me, md, ma, mi, mn, ms, mo, mt, ne, nv, nh, nj, nm, ny, nc, nd, oh, ok, or, pa, ri, sc, sd, tn, tx, ut, vt, va, wa, wv, wi, wy. | – |
city | string | City name/slug to narrow collection to a specific local market (for example, albuquerque). | – |
service | string | Service category slug to target a category page (for example, garage-builders, roofers, plumbers). | – |
getContacts | boolean | When enabled, includes available contact enrichment fields such as email, phone numbers, and social profiles. | false |
limit | integer | Maximum listings to save per query. Use smaller values for sampling and larger values for broader coverage. Minimum: 10. | 50000 |
proxyConfiguration | object | Optional connection settings for run stability at scale. Default is Apify Proxy with residential group selected. | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
Example Input
{"startUrls": ["https://www.angi.com/companylist/us/tx/austin/roofers.htm"],"queries": ["austin roof repair","san antonio kitchen remodeling"],"state": "tx","city": "austin","service": "roofers","getContacts": true,"limit": 1500}
Output
6.1 Output destination
The actor writes results to an Apify dataset as JSON records. And the dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs without post-processing.
6.2 Record envelope (all items)
Every output record includes the following stable envelope:
- type (string, required)
- id (number, required)
- url (string, required)
Recommended idempotency key: type + ":" + id.
Use this key for deduplication and upserts when the same entity appears across multiple inputs or repeated runs.
6.3 Examples
Example: contractor (type = "contractor")
{"type": "contractor","id": 117036829,"url": "https://www.angi.com/companylist/us/ca/san-jose/ot-bay-builders-reviews-1.htm","business_identity": {"business_name": "OT Bay Builders","profile_url": "https://www.angi.com/companylist/us/ca/san-jose/ot-bay-builders-reviews-1.htm"},"scrape_context": {"source_url": "https://www.angi.com/companylist/us/ca/san-jose/kitchen-and-bath-remodeling.htm","seed": {"type": "url","value": "https://www.angi.com/companylist/us/ca/san-jose/kitchen-and-bath-remodeling.htm"},"scraped_time": "2026-03-04T10:02:08.256608+00:00","listing_url": "https://www.angi.com/companylist/us/ca/san-jose/ot-bay-builders-reviews-1.htm"},"location_details": {"service_area": "San-jose, CA","address": {"streetAddress": "1580 Oakland Rd Ste C106","addressLocality": "San Jose","addressRegion": "CA","addressCountry": "US","postalCode": "95131"}},"company_profile": {"provider_identifiers": {"uuid": "005211d4-cbb8-1583-e063-3383030a2c13","service_provider_id": "117036829","legacy_id": "117036829"},"profile_attributes": {"profile_type": "PAID_PROFILE","is_advertiser": true,"is_paid_pro": true,"in_business_since": 2021}},"customer_feedback": {"ratings_summary": {"overall_rating": 4.9935064935064934,"review_count": 77}},"contact_details": {"phone_primary": "4087667272","open_address": "1580 Oakland Rd Ste C106, San Jose, CA 95131","website": "http://www.otbaybuilders.com"},"contact_enrichment": {"status": "ok","email": {"values": ["office@otbaybuilders.com"]},"phone_number": {"values": ["+1-408-766-7272"]},"social_media": {"facebook": "https://www.facebook.com/otbaybuilders","instagram": "https://www.instagram.com/otbaybuilders"}}}
Field reference
Contractor fields (type = "contractor")
- type (string, required): Record type discriminator.
- id (number, required): Stable numeric business identifier.
- url (string, required): Canonical Angi profile URL.
- business_identity.business_name (string, optional): Display business name.
- business_identity.profile_url (string, optional): Profile page URL.
- scrape_context.source_url (string, optional): Discovery/source page URL.
- scrape_context.seed.type (string, optional): Seed category used to start discovery.
- scrape_context.seed.value (string, optional): Seed value associated with the run.
- scrape_context.scraped_time (string, optional): Extraction timestamp.
- scrape_context.listing_url (string, optional): Listing URL where the profile was found.
- location_details.service_area (string, optional): Service area label.
- location_details.address.streetAddress (string, optional): Street address.
- location_details.address.addressLocality (string, optional): City/locality.
- location_details.address.addressRegion (string, optional): State/region code.
- location_details.address.addressCountry (string, optional): Country code.
- location_details.address.postalCode (string, optional): Postal code.
- review_insights.featured_review.name (string, optional): Featured review title.
- review_insights.featured_review.author.name (string, optional): Featured review author name.
- review_insights.featured_review.reviewBody (string, optional): Featured review text.
- platform_metadata.nextjs_flight.entry_count (number, optional): Metadata counter when available.
- platform_metadata.nextjs_flight.chunk_count (number, optional): Metadata counter when available.
- company_profile.provider_identifiers.uuid (string, optional): Provider UUID.
- company_profile.provider_identifiers.service_provider_id (string, optional): Provider ID.
- company_profile.provider_identifiers.legacy_id (string, optional): Legacy provider ID.
- company_profile.profile_attributes.profile_type (string, optional): Profile tier/category label.
- company_profile.profile_attributes.is_advertiser (boolean, optional): Advertiser indicator.
- company_profile.profile_attributes.is_paid_pro (boolean, optional): Paid profile indicator.
- company_profile.profile_attributes.logo_url (string, optional): Logo image URL.
- company_profile.profile_attributes.in_business_since (number, optional): Year business started.
- company_profile.business_overview.description (string, optional): Business description text.
- company_profile.business_overview.business_type (string, optional): Business type label.
- service_offerings.categories (array