Angi Scraper with Contacts | $4 / 1k avatar

Angi Scraper with Contacts | $4 / 1k

Pricing

$3.99 / 1,000 results

Go to Apify Store
Angi Scraper with Contacts | $4 / 1k

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

Fatih Tahta

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

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.

ParameterTypeDescriptionDefault
startUrlsstring[]One or more Angi URLs to scrape directly. Supports company list pages, service/category result pages, and individual contractor profile pages.
queriesstring[]Search phrases for discovery (for example: city + service intent). Useful when exploring opportunities and letting the actor find relevant listing pages.
statestringU.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.
citystringCity name/slug to narrow collection to a specific local market (for example, albuquerque).
servicestringService category slug to target a category page (for example, garage-builders, roofers, plumbers).
getContactsbooleanWhen enabled, includes available contact enrichment fields such as email, phone numbers, and social profiles.false
limitintegerMaximum listings to save per query. Use smaller values for sampling and larger values for broader coverage. Minimum: 10.50000
proxyConfigurationobjectOptional 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