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
Maintained by CommunityActor stats
2
Bookmarked
30
Total users
9
Monthly active users
5 days 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[] | Location-and-service phrases for discovery. Phrases that start with a U.S. state code, such as tx austin roofers, are converted into Angi company list URLs; other phrases are sent to Angi search. | – |
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 |
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 this stable envelope:
- type (string, required)
- id (string, 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 (string, required): Stable business identifier. Uses Angi/source identifiers when available and a deterministic fallback when needed.
- 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