Angi.com [Only $0.8π°] Scraper (Resilient Leads & Profiles)
Pricing
from $0.90 / 1,000 results
Angi.com [Only $0.8π°] Scraper (Resilient Leads & Profiles)
[Only $0.8π°] Extract high-quality contractor leads from Angi.com (Angie's List). Scrape business names, phone numbers, full addresses, ratings, review counts, and service categories. Just input a ZIP code or category link to instantly get structured local business data in JSON or CSV.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Angi.com Scraper (Leads & Profiles)
How it works

Unlock the Full Power of Angi Home Services Data - The most resilient scraper for extracting high-quality leads, professional profiles, and business details from Angi.com (formerly Angie's List). Whether you're conducting market research, performing competitor analysis, or building a local service database, our scraper delivers precise, structured data at scale.
"From garage builders and plumbers to roofers and electricians, turn Angi's massive directory into your strategic advantage."
Why Use This Scraper?
- Multiple Starting Points: Start from the entire US directory, a specific state, a city, a service category, or directly input professional profile URLs.
- Enterprise-Grade Resilience: Implements parallel TLS fingerprint racing (
impit) and intelligent proxy rotation to bypass aggressive Cloudflare and anti-bot blocks. - Deep Directory Discovery: Automatically discovers nested states β cities β categories β professional profiles without manual pagination.
- Structured Output: Extract clean, verified business names, addresses, phone numbers, and service categories.
- Export Ready: Supports deeply nested JSON for developers or flattened CSV formats for CRM imports.
Overview
The Angi.com Scraper is designed to seamlessly navigate Angi's Next.js infrastructure. By relying on a custom internal handler rather than standard browser automation, it maintains high throughput and bypasses limitations that block standard crawlers. The output focuses primarily on business profile rows, regardless of where the scrape starts.
Supported Inputs
You can mix and match different types of Angi URLs in the startUrls input:
- US Directory Root:
https://www.angi.com/companylist/us/(Scrapes the entire US) - Near Me Root:
https://www.angi.com/nearme/ - State Hubs:
https://www.angi.com/companylist/us/tx/(Scrapes all cities in Texas) - City Hubs:
https://www.angi.com/companylist/us/al/adamsville/ - Category Lists:
https://www.angi.com/nearme/garage-builders/ - Direct Profiles:
https://www.angi.com/companylist/us/al/cullman/access-garage-doors-of-birmingham-reviews-1.htm - ZIP Codes: Just input a 5-digit ZIP code like
90210and the scraper will automatically resolve it to the corresponding city hub!
Use Cases
| Audience | Example Use Case |
|---|---|
| Sales & Lead Gen | Build targeted contact lists of local contractors (e.g., all plumbers in Texas) with verified phone numbers. |
| Market Researchers | Analyze service density and categorize businesses by specific niches across different ZIP codes. |
| Marketing Agencies | Offer specialized marketing or SEO services to home service professionals found on Angi. |
| Competitor Analysis | Track local competitors, their listed services, operating hours, and service areas. |
How It Works
flowchart LRA[Start URLs] --> B{URL Type?}B -->|Directory/Hub| C[Discover States & Cities]B -->|Category| D[Discover Businesses]B -->|Profile| E[Direct Extraction]C --> DD --> EE --> F[Next.js JSON Payload]F --> G[(Apify Dataset)]style A fill:#2e86de,stroke:#000,color:#fffstyle B fill:#feca57,stroke:#000,color:#000style E fill:#10ac84,stroke:#000,color:#fffstyle G fill:#ff6b6b,stroke:#000,color:#fff
- You provide URLs: Input one or more Angi directory, category, or profile URLs.
- Actor categorizes inputs: The scraper detects the URL type (hub, state, city, category, or profile).
- Deep fan-out: For directory URLs, the scraper automatically navigates the hierarchy to discover individual business profiles.
- Data extraction: The actor fetches the Next.js build data for each profile, extracting robust business information.
- Dataset export: The extracted profiles are saved to your Apify dataset, ready for JSON or CSV download.
Input Configuration
Here is a typical configuration. The useInternalHandler flag is enabled by default to ensure maximum anti-bot resilience.
{"startUrls": [{ "url": "https://www.angi.com/nearme/garage-builders/" }],"maxItems": 500,"flattenDatasetOutput": true,"proxy": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output Overview
The scraper's primary dataset items are business profile rows.
- Nested JSON: Keeps objects intact (e.g.,
contactInfo.address.city). - Flattened (CSV-friendly): If you enable
flattenDatasetOutput, nested objects are flattened into dot-separated keys (e.g.,contactInfo_address_city), ensuring no columns are dropped in Excel.
Sample JSON Output
{"url": "https://www.angi.com/companylist/us/al/cullman/access-garage-doors-of-birmingham-reviews-1.htm","category": {"text": "Garage Builders","title": "Garage Builders","link": "/companylist/us/al/garage-builders.htm"},"state": {"text": "AL","title": "AL Home Services","href": "https://www.angi.com/companylist/us/al/"},"city": {"text": "Adamsville","title": "Adamsville","link": "/companylist/us/al/adamsville/"},"companyProfile": {"businessInfo": {"businessName": "Access Garage Doors of Birmingham","amenities": {},"hoursInfo": {"hoursInfoDetail": [],"acceptsAppointments": false}},"contactInfo": {"emails": [],"phoneNumbers": ["205-555-0123"],"address": {"street1": "123 Business Way","city": "Cullman","state": "AL","country": "United States","postalCode": "35055"}},"logoUrl": "https://example.com/logo.png"}}
Key Output Fields
Top-Level Group
url(String): The direct URL to the professional's profile on Angi.category(Object): Details about the specific service niche.state(Object): Geographic state container.city(Object): Local city container.
Company Data
companyProfile(Object): The core data container extracted from the profile page.businessInfo(Object): Contains the officialbusinessName,amenities, andhoursInfo.contactInfo(Object): Contains arrays foremails,phoneNumbers, and the physicaladdressobject.slug(Object): Canonical URL and aliases.logoUrl(String): Full URL to the business logo.images(Array): Gallery of business-provided images or project photos.
Note: For ease of use in flat exports like CSV, key profile fields are also mirrored at the top level.
FAQ
Can I scrape a specific category nationwide?
Yes! Input a nationwide category URL like https://www.angi.com/nearme/garage-builders/, and the scraper will automatically navigate through all states and cities for that category.
Does it extract emails? The scraper extracts emails only when they are publicly available on the business profile. Many businesses do not expose their email publicly.
What is the "flattenDatasetOutput" option? Angi's data is deeply nested. If you want to download a CSV for Excel or Google Sheets, enable this option. It unpacks nested objects so that every data point gets its own column.
Support
- For issues or feature requests, please use the Issues section of this actor.
- If you need customization or have questions, feel free to contact the author:
- Author's website: https://muhamed-didovic.github.io/
- Email: muhamed.didovic@gmail.com
Additional Services
- Request Customization: Need specific filters or custom fields? muhamed.didovic@gmail.com
- Dataset Purchases: Looking for a pre-scraped dataset of all Angi pros? Reach out for pricing.
- API Access: High-volume API services available for enterprise integrations.