Avvo Lawyers & Attorney Leads Scraper
Pricing
from $17.00 / 1,000 results
Avvo Lawyers & Attorney Leads Scraper
Scrape US lawyer and attorney profiles: name, practice areas, law firm, full address, phone, Avvo rating, client reviews, years licensed, bar/license status and languages. Search by practice area or name across any city. Export to JSON, CSV or Excel.
Pricing
from $17.00 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Avvo Lawyers & Attorney Leads Scraper
Here is one real result, with every field the actor returns:
{"imageUrl": "https://images.avvo.com/avvo/ugc/images/head_shot/standard/lawyer_matthew_dolman_1272944_1533940754.jpg","name": "Matthew A. Dolman","firstName": "Matthew","lastName": "Dolman","profileUrl": "https://www.avvo.com/attorneys/33712-fl-matthew-dolman-1272944.html","jobTitle": "Attorney","firmName": "Matthew A. Dolman","primaryPractice": "Insurance","practiceAreas": ["Insurance", "Personal Injury", "Brain Injury", "Wrongful Death", "Slip and Fall Accident"],"avvoRating": 10,"avvoRatingLevel": "Superb","peerEndorsements": null,"reviewsRating": 4.8,"reviewsCount": 26,"reviews": [],"barAdmissions": [],"contingencyFee": true,"claimedProfile": null,"yearsLicensed": 22,"licensedSince": "2026","licenseState": "Washington","licenseStatus": "Active","barOrganization": "Washington State Bar Association","disciplined": false,"phone": "(727) 222-6922","addressStreet": "1663 1st Ave S.","city": "Saint Petersburg","state": "FL","zip": "33712","country": "US","latitude": 27.770566,"longitude": -82.656151,"languages": ["Spanish"],"priceRange": "Varies based on case specifics","freeConsultation": true,"linkedin": null,"facebook": null,"twitter": null,"instagram": null,"youtube": "https://www.youtube.com/watch?v=6cUmORlDM_Y&t=5s","socialProfiles": ["https://www.dolmanlaw.com/legal-services/auto-accidents-attorneys/","http://www.dolmanlaw.com","https://www.youtube.com/watch?v=6cUmORlDM_Y&t=5s"],"lawSchools": ["Stetson University College of Law", "Ithaca College"],"topAward": "Rising Star - 2017","awardsCount": 30,"website": "https://www.dolmanlaw.com/legal-services/auto-accidents-attorneys/","searchQuery": "personal injury","searchCity": "Miami, FL","source": "Avvo","observedAt": "2026-08-14T05:38:32.765Z","aiLeadScore": 90,"aiLeadTier": "hot","aiLeadRationale": "Matthew A. Dolman has a strong reputation with a perfect Avvo rating and extensive experience, making him an ideal candidate for B2B outreach.","error": null}
The most complete Avvo attorney scraper available. It returns every field a lawyer profile exposes, including phone, address, geocoordinates, practice areas, Avvo rating, reviews, license, awards, and social links, plus an optional AI lead score and a contact-email enrichment add-on, and gives you six filters to target exactly the attorneys you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the Avvo attorney directory and writes one normalized record per lawyer. Each search is a practice area (personal injury, divorce) or a lawyer name; every city you list is combined with every search. With withDetails on (the default) each profile is opened to add practice areas, Avvo rating, client reviews, years licensed, license status and organization, languages, awards, geocoordinates, and social links. You can also scrape exact profile URLs directly, and filter results by minimum Avvo rating, minimum reviews, and minimum years licensed. Missing source values are returned as null.
Two optional paid add-ons enrich each record: an AI lead score (0 to 100 with a hot/warm/cold tier and a short rationale) and a contact-email finder that looks up a public business email and contact name for rows that lack one. Each add-on is billed only for the work it does.
Quickstart
Open the actor, paste this into the input, and press Run. It returns 10 personal-injury lawyers in Miami with full profile details.
{"searchQueries": ["personal injury"],"cities": ["Miami, FL"],"maxLawyers": 10,"withDetails": true}
Add more practice areas or cities to fan out (every city is combined with every search). Leave cities empty to search nationwide, or pass exact attorneyUrls to scrape specific profiles.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | no | (empty) | Practice areas (personal injury, divorce, criminal defense, bankruptcy) or lawyer names. Each entry runs its own search. |
cities | string[] | no | (nationwide) | Cities to search, for example Los Angeles, CA, Miami, FL. Empty searches nationwide. Every city is combined with every search. |
withDetails | boolean | no | true | Open each profile to add practice areas, rating, reviews, license, languages, awards, and social links. Turn off for a faster, lighter run. |
maxLawyers | integer | no | 10 | Maximum profiles to collect across all searches (1 to 100000). |
attorneyUrls | string[] | no | (empty) | Exact Avvo attorney profile URLs to scrape directly, bypassing search. Can be combined with or used instead of searches. |
minAvvoRating | integer | no | (none) | Only return lawyers whose Avvo rating (1 to 10) is at least this value. Requires withDetails. |
minReviewsCount | integer | no | (none) | Only return lawyers with at least this many client reviews. Requires withDetails. |
minYearsLicensed | integer | no | (none) | Only return lawyers licensed for at least this many years. Requires withDetails. |
withLeadScore | boolean | no | false | Paid add-on. Scores each attorney 0 to 100 as a B2B outreach lead (hot/warm/cold) with a rationale. Requires a paid Apify plan. Billed only when a score is produced. |
enrichContacts | boolean | no | false | Paid add-on. For each result without an email, attempt to find a public business email and contact name. Billed per attempt, plus extra only when an email is found. |
enrichContactsMax | integer | no | 50 | Cap how many results the contact add-on tries to enrich. Free Apify accounts are capped at 3. |
Output reference
One dataset item per attorney. Types: string, integer, number, boolean, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
imageUrl | string | Head-shot image URL. |
name | string | Full attorney name. |
firstName | string | First name. |
lastName | string | Last name. |
profileUrl | string | Avvo profile URL. |
jobTitle | string | Job title, for example Attorney. |
firmName | string | Law firm name. |
primaryPractice | string | Primary practice area. |
practiceAreas | string[] | All listed practice areas. |
avvoRating | integer | Avvo rating, 1 to 10. |
avvoRatingLevel | string | Rating label, for example Superb. |
peerEndorsements | integer | Peer endorsement count, or null. |
reviewsRating | number | Average client review score. |
reviewsCount | integer | Number of client reviews. |
reviews | array | Client review objects when available. |
barAdmissions | array | Bar admissions when listed. |
contingencyFee | boolean | Whether the lawyer takes contingency-fee work. |
claimedProfile | boolean | Whether the profile is claimed, or null. |
yearsLicensed | integer | Years the attorney has been licensed. |
licensedSince | string | Year first licensed. |
licenseState | string | State of license. |
licenseStatus | string | License status, for example Active. |
barOrganization | string | Bar association. |
disciplined | boolean | Whether the profile shows disciplinary history. |
phone | string | Public phone number. |
addressStreet | string | Office street address. |
city | string | Office city. |
state | string | Office state code. |
zip | string | Office ZIP code. |
country | string | Country code, for example US. |
latitude | number | Office latitude. |
longitude | number | Office longitude. |
languages | string[] | Languages spoken. |
priceRange | string | Fee/price description as listed. |
freeConsultation | boolean | Whether a free consultation is offered. |
linkedin | string | LinkedIn URL, or null. |
facebook | string | Facebook URL, or null. |
twitter | string | Twitter/X URL, or null. |
instagram | string | Instagram URL, or null. |
youtube | string | YouTube URL, or null. |
socialProfiles | string[] | All external links found on the profile. |
lawSchools | string[] | Law schools attended. |
topAward | string | Top listed award. |
awardsCount | integer | Number of awards listed. |
website | string | Firm/personal website. |
searchQuery | string | The search that produced this record. |
searchCity | string | The city that produced this record. |
source | string | Data source label. Always Avvo. |
observedAt | string | ISO 8601 timestamp of collection. |
aiLeadScore | integer | 0 to 100 lead score. Populated only when the lead-score add-on is on, else absent. |
aiLeadTier | string | hot, warm, or cold lead tier from the add-on. |
aiLeadRationale | string | Short rationale for the lead score. |
enrichedEmail | string | Public business email found by the contact add-on, or null. |
enrichedContactName | string | Contact person name found by the add-on, or null. |
enrichedJobTitle | string | Contact person job title from the add-on, or null. |
enrichedEmailStatus | string | verified, likely, guessed, or not_found from the add-on. |
enrichedSource | string | Where the enriched email was found, or null. |
enrichedConfidence | number | Confidence score for the enriched email, or null. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Contact-enrichment fields are only present when enrichContacts is on.
Example output record
Real record from a live run (input {"searchQueries":["personal injury"],"cities":["Miami, FL"],"maxLawyers":3,"withDetails":true,"withLeadScore":true}):
{"name": "Matthew A. Dolman","firstName": "Matthew","lastName": "Dolman","profileUrl": "https://www.avvo.com/attorneys/33712-fl-matthew-dolman-1272944.html","jobTitle": "Attorney","firmName": "Matthew A. Dolman","primaryPractice": "Insurance","practiceAreas": ["Insurance", "Personal Injury", "Brain Injury", "Wrongful Death", "Slip and Fall Accident"],"avvoRating": 10,"avvoRatingLevel": "Superb","reviewsRating": 4.8,"reviewsCount": 26,"contingencyFee": true,"yearsLicensed": 22,"licenseState": "Washington","licenseStatus": "Active","barOrganization": "Washington State Bar Association","disciplined": false,"phone": "(727) 222-6922","addressStreet": "1663 1st Ave S.","city": "Saint Petersburg","state": "FL","zip": "33712","country": "US","latitude": 27.770566,"longitude": -82.656151,"languages": ["Spanish"],"freeConsultation": true,"youtube": "https://www.youtube.com/watch?v=6cUmORlDM_Y&t=5s","lawSchools": ["Stetson University College of Law", "Ithaca College"],"topAward": "Rising Star - 2017","awardsCount": 30,"website": "https://www.dolmanlaw.com/legal-services/auto-accidents-attorneys/","searchQuery": "personal injury","searchCity": "Miami, FL","source": "Avvo","observedAt": "2026-08-14T05:38:32.765Z","aiLeadScore": 90,"aiLeadTier": "hot","aiLeadRationale": "Matthew A. Dolman has a strong reputation with a perfect Avvo rating and extensive experience, making him an ideal candidate for B2B outreach.","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~avvo-lawyers-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["personal injury"],"cities":["Miami, FL"],"maxLawyers":25,"withDetails":true,"minAvvoRating":9}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~avvo-lawyers-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["divorce"],"cities":["Chicago, IL","New York, NY"],"maxLawyers":100}'
Apify CLI:
apify call scrapers_lat/avvo-lawyers-scraper \--input '{"attorneyUrls":["https://www.avvo.com/attorneys/33712-fl-matthew-dolman-1272944.html"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per attorney profile returned (
resultevent). See the pricing tab for the current per-result price. - Add-ons billed separately. Full profile detail (
details), AI lead score (ai_lead_score), and contact enrichment (contact-search-attemptper attempt, pluscontact-email-foundonly when an email is found) are billed only for the work they do. - No charge on failure. If a run errors, the actor writes a single item with an
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run, 3 contact-enrichment attempts, and cannot use the AI add-ons. Upgrade for higher
maxLawyersand enrichment.
FAQ and troubleshooting
A run returned 0 records. Why?
The practice area plus city matched no profiles, or your filters were too strict. Loosen minAvvoRating/minReviewsCount/minYearsLicensed, broaden the city, or check the practice-area spelling. Zero-result runs are not charged.
My rating/reviews filters returned nothing.
The rating, reviews, and years filters require withDetails to be on, because those fields only come from the profile page. Turn it on and rerun.
Why is enrichedEmail (or the other enriched fields) missing?
Contact enrichment is off by default. Turn on enrichContacts to add them; each attempt is billed, with an extra charge only when an email is found.
Why are the AI lead fields absent?
The lead-score add-on is off by default and requires a paid Apify plan. Turn on withLeadScore on a paid plan to populate them.
Can I scrape specific attorneys directly?
Yes. Pass their profile URLs in attorneyUrls to bypass the directory search.
Is this an official Avvo tool? No. This actor is independent and has no affiliation with Avvo. It reads only attorney data that is publicly available on Avvo profiles. Use it in accordance with the source terms of use.
Related scrapers
- ACCA Accountants Scraper: ACCA-registered accountants and firms.
- Bark Services Scraper: Bark professional service-provider leads.
- Medicare Doctors & Clinicians Scraper: US Medicare-enrolled clinicians.
- FMCSA Carriers Scraper: US motor-carrier registration and contacts.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Avvo. Accesses only publicly available attorney profile data. Use in accordance with the source terms of use.
