Avvo Scraper ⚖️
Pricing
Pay per usage
Avvo Scraper ⚖️
Extract lawyer profiles, client reviews, and legal directory data from Avvo with this lightweight and efficient actor. Perfect for gathering legal industry insights quickly. For the most reliable performance and to ensure seamless data extraction, using residential proxies is strongly recommended.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Shahid Irfan
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Avvo Lawyers Scraper
Extract comprehensive attorney profiles from Avvo with detailed practice areas, ratings, reviews, contact information, and professional credentials.
Overview
The Avvo Lawyers Scraper extracts structured data from Avvo.com, the leading online legal directory platform. Access detailed attorney profiles including practice areas, client reviews, ratings, contact information, bar admissions, education, and professional experience.
Key Benefits
- Legal Research - Build comprehensive attorney databases for research and analysis
- Lead Generation - Find qualified attorneys by practice area and location
- Market Intelligence - Analyze legal services market trends and competition
- Directory Services - Power legal directory platforms with fresh, accurate data
- Competitive Analysis - Monitor attorney rankings and review trends
- Client Matching - Connect clients with attorneys based on specialization
Features
Data Extraction
Extract complete attorney profiles with:
- Personal Information - Attorney name and profile URL
- Professional Ratings - Avvo rating (1-10 scale) and review count
- Practice Areas - Specializations and areas of legal expertise
- Contact Details - Phone numbers, email addresses, office locations
- Credentials - Years licensed, bar admissions, education
- Languages - Languages spoken for client communication
- Professional Bio - Attorney background and experience
- Awards & Recognition - Professional achievements and honors
Search Options
Filter attorney searches by:
- Practice Area - Bankruptcy, family law, criminal defense, personal injury, real estate, business law, immigration, employment, estate planning, traffic tickets, and more
- Location - State-level or city-level targeting
- Custom URLs - Direct Avvo directory URLs for precise searches
Performance
- Multiple Extraction Methods - API-first HTTP, embedded JSON/JSON-LD, and HTML parsing with automatic fallback
- Cloudflare Bypass - Proxy-aware HTTP with retries and session rotation
- Concurrent Processing - Fast parallel scraping with configurable concurrency
- Smart Deduplication - Automatic duplicate removal across pages
- Profile Enrichment - Optional deep profile extraction from detail pages
Quick Start
Input Configuration
{"startUrls": [{ "url": "https://www.avvo.com/bankruptcy-debt-lawyer/al.html" }],"city": "birmingham","maxLawyers": 50,"includeReviews": true,"includeContactInfo": true,"proxyConfiguration": {"useApifyProxy": true}}
Run on Apify Platform
- Open the Actor in Apify Console
- Configure your search parameters (practice area, state, optional city)
- Set maximum lawyers to scrape
- Enable profile enrichment options if needed
- Click "Start" and wait for results
- Download data in JSON, CSV, Excel, or other formats
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
startUrls | Array | ? No | List of Avvo directory URLs to scrape. If provided, practiceArea/state are ignored. |
startUrl | String | ❌ No | Direct Avvo directory URL (e.g., https://www.avvo.com/bankruptcy-debt-lawyer/al.html). If provided, practiceArea and state are ignored. |
practiceArea | String | ⚠️ Conditional | Practice area slug (e.g., bankruptcy-debt, family, criminal-defense, personal-injury). Required if startUrl not provided. |
state | String | ⚠️ Conditional | Two-letter US state code (e.g., al, ca, ny, tx, fl). Required if startUrl not provided. |
city | String | ❌ No | Optional city name to narrow search within state (e.g., birmingham, montgomery) |
maxLawyers | Integer | ❌ No | Maximum number of profiles to scrape (default: 50, 0 = unlimited) |
includeReviews | Boolean | ❌ No | Extract client reviews and detailed ratings (default: true) |
includeContactInfo | Boolean | ❌ No | Fetch additional contact details from profile pages (default: true) |
debugHtml | Boolean | ? No | Save debug HTML when extraction fails or blocks occur (default: false) |
proxyConfiguration | Object | ❌ No | Proxy settings for bypassing protection (recommended: useApifyProxy: true) |
Output Data
Each lawyer profile includes:
{"name": "John Smith","rating": 9.5,"reviewCount": 47,"practiceAreas": ["Bankruptcy", "Debt Collection Defense", "Foreclosure Defense"],"location": "Birmingham, AL 35203","phone": "(205) 555-0123","email": "contact@example.com","website": "https://www.example.com","yearsLicensed": 15,"barAdmissions": ["Alabama State Bar", "U.S. District Court"],"languages": ["English", "Spanish"],"profileUrl": "https://www.avvo.com/attorneys/12345-john-smith.html","bio": "Experienced bankruptcy attorney serving Birmingham and surrounding areas...","education": ["Harvard Law School, J.D., 2008", "Yale University, B.A., 2005"],"awards": ["Super Lawyers Rising Star 2022", "Avvo Client's Choice 2023"],"reviews": [],"scrapedAt": "2026-01-02T10:30:00.000Z"}
Field Descriptions
| Field | Type | Description |
|---|---|---|
name | String | Attorney full name |
rating | Number | Avvo rating (1-10 scale) |
reviewCount | Integer | Number of client reviews |
practiceAreas | Array | Legal specializations |
location | String | Office address (city, state, ZIP) |
phone | String | Contact phone number |
email | String | Contact email address |
website | String | Attorney or firm website URL |
yearsLicensed | Integer | Years practicing law |
barAdmissions | Array | State bar and court admissions |
languages | Array | Languages spoken |
profileUrl | String | Avvo profile URL |
bio | String | Professional biography |
education | Array | Law school and undergraduate education |
awards | Array | Professional recognition and awards |
reviews | Array | Review objects or snippets when available |
scrapedAt | String | ISO timestamp of data extraction |
Export Formats
Download scraped data in multiple formats:
- JSON - Structured data for applications and APIs
- CSV - Spreadsheet-compatible format for Excel/Google Sheets
- Excel - Native .xlsx format with proper formatting
- XML - Enterprise system integration
- RSS - Feed-based updates
- HTML - Web-ready formatted output
Use Cases
Legal Research & Analytics
Analyze attorney demographics, practice area distribution, rating trends, and geographic coverage for market research and competitive intelligence.
Lead Generation
Build targeted lists of attorneys by practice area and location for business development, referral networks, and partnership opportunities.
Directory & Platform Development
Power legal directory websites, attorney matching platforms, and client referral services with comprehensive, up-to-date attorney data.
Compliance & Background Checks
Verify attorney credentials, bar admissions, and professional standing for client vetting and compliance purposes.
Marketing & Business Intelligence
Track attorney ratings, review trends, and service offerings to inform marketing strategies and identify market opportunities.
Technical Architecture
Multi-Strategy Extraction
The scraper employs an API-first HTTP pipeline with layered fallbacks:
1. JSON API (Primary Method)
Direct HTTP calls to internal JSON endpoints when available (user-supplied or discovered). Fastest and most reliable when present.
Advantages:
- Structured JSON output
- No rendering overhead
- High accuracy and speed
2. Embedded JSON + JSON-LD (Secondary Method)
Parses embedded JSON blobs (e.g., __NEXT_DATA__, inline JSON) and JSON-LD markup from HTML.
Advantages:
- Structured data without browsers
- Resilient to minor markup changes
3. HTML Parsing with Cheerio (Fallback Method)
Uses selector-based parsing on HTTP-fetched HTML when JSON is not available.
Advantages:
- Works on any page structure
- Multiple selector strategies
- Robust against site changes
Cloudflare Bypass Strategy
This Actor relies on proxy-aware HTTP, session rotation, and exponential backoff to reduce blocks. For best results, use residential proxies and keep concurrency reasonable.
Performance Optimizations
| Optimization | Impact | Implementation |
|---|---|---|
| API-First HTTP | 10-50x faster | Direct JSON endpoint calls |
| Embedded JSON/JSON-LD | 5-20x faster | HTML JSON parsing |
| Concurrent Requests | 3-5x faster | Parallel processing |
| Profile Enrichment | Detailed data | Batch HTTP requests |
Quality Assurance
- Input Validation - All input parameters validated before execution
- Duplicate Detection - URL-based deduplication across pagination
- Error Handling - Graceful fallbacks for failed requests
- Data Cleaning - Whitespace trimming and text normalization
- Logging - Comprehensive logging with sensitive data censoring
- Debug Mode - Automatic HTML capture when extraction fails
Configuration Tips
Maximizing Results
- Use specific practice areas for targeted results
- Enable
includeContactInfofor complete profiles - Set reasonable
maxLawyerslimits for faster runs - Use Apify Proxy (residential) for best reliability
- Allow sufficient time for profile enrichment
Performance Tuning
- Small Runs (<50 lawyers): ~2-3 minutes
- Medium Runs (50-200 lawyers): ~5-10 minutes
- Large Runs (200+ lawyers): ~15-30 minutes
Execution time increases when includeContactInfo is enabled due to individual profile page fetching.
Practice Area Slugs
Common practice area slugs for search:
bankruptcy-debt- Bankruptcy and debt relieffamily- Family law and divorcecriminal-defense- Criminal defensepersonal-injury- Personal injury and accidentsreal-estate- Real estate lawbusiness- Business and corporate lawimmigration- Immigration lawemployment- Employment and labor lawestate-planning- Estate planning and probatetraffic-tickets- Traffic violations
API Integration
Node.js Example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('YOUR_ACTOR_ID').call({practiceArea: 'bankruptcy-debt',state: 'al',city: 'birmingham',maxLawyers: 100,includeContactInfo: true});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Scraped ${items.length} lawyers`);
Python Example
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('YOUR_ACTOR_ID').call(run_input={'practiceArea': 'family','state': 'ca','city': 'los-angeles','maxLawyers': 50})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(f"Scraped {len(items)} lawyers")
cURL Example
curl -X POST https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"practiceArea": "criminal-defense","state": "ny","maxLawyers": 75}'
Scheduling & Automation
Automated Data Collection
Set up scheduled runs to maintain fresh attorney data:
- Navigate to Schedules in Apify Console
- Create new schedule (daily, weekly, custom cron)
- Configure input parameters
- Enable notifications for run completion
- Set up webhooks for automated data processing
Integration Options
- Webhooks - Trigger actions on completion
- Zapier - Connect to 5000+ apps without coding
- Make (Integromat) - Build complex automation workflows
- Google Sheets - Auto-export to spreadsheets
- Slack/Discord - Receive notifications with results
- Email - Automated reports via email
Compliance & Ethics
Responsible Data Collection
This scraper extracts publicly available attorney information from Avvo's directory for legitimate business purposes including:
- Legal research and market analysis
- Attorney credential verification
- Directory and platform development
- Lead generation for legal services
Best Practices
- Use scraped data in accordance with applicable laws and regulations
- Respect attorney privacy and professional information
- Implement rate limiting and respectful scraping practices
- Use proxies to avoid server overload
- Do not scrape for spamming or harassment purposes
- Comply with data protection regulations (GDPR, CCPA, etc.)
Troubleshooting
No Lawyers Found
Possible causes:
- Invalid practice area slug or state code
- Cloudflare blocking (enable residential proxies)
- No lawyers match search criteria
- Page structure changed (check DEBUG_PAGE_HTML output)
Solutions:
- Verify practice area slug matches Avvo's URL format
- Use Apify residential proxies for better reliability
- Try different practice areas or locations
- Enable
debugHtmlto inspect blocked pages - Check Actor logs for specific error messages
Incomplete Data
Possible causes:
includeContactInfodisabled- Profile pages blocked by Cloudflare
- Missing data on source profiles
Solutions:
- Enable
includeContactInfofor complete profiles - Use residential proxies for detail page fetching
- Some attorneys may not provide all information publicly
Slow Performance
Possible causes:
- Large maxLawyers value
- Profile enrichment enabled
- Network latency
Solutions:
- Reduce maxLawyers for faster runs
- Disable
includeContactInfofor listing-only data - Use faster proxy groups if available
FAQ
Support
Need Help?
- Documentation: Apify Docs
- Community: Discord Server
- Issues: Report bugs via Actor feedback form
- Contact: Reach out through Apify Console messaging
Rate This Actor
If you find this scraper valuable for your legal research or business needs, please leave a rating and review on the Apify platform!
License
This Actor is licensed under the Apache License 2.0. See the LICENSE file for details.
Keywords
avvo scraper, lawyer scraper, attorney directory, legal data extraction, lawyer profiles, attorney search, legal services, law firm data, bar admissions, practice areas, attorney ratings, legal directory scraper, lawyer database, attorney leads
Built for the Apify community | Get Started Now | Documentation | Join Discord