Justia Lawyer Profiles, Reviews & Office Locations Scraper avatar

Justia Lawyer Profiles, Reviews & Office Locations Scraper

Pricing

from $1.25 / 1,000 attorney results

Go to Apify Store
Justia Lawyer Profiles, Reviews & Office Locations Scraper

Justia Lawyer Profiles, Reviews & Office Locations Scraper

Scrape attorney profiles from the Justia Lawyer Directory. Extract names, contacts, office locations, practice areas, education, experience, awards, bar admissions, peer endorsements and Justia Lawyer Ratings. Search by state, city, practice area or scrape profile URLs.

Pricing

from $1.25 / 1,000 attorney results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Justia Lawyer Directory Scraper

Scrape public US attorney profiles from the Justia Lawyer Directory - one of the largest free legal directories in the United States. The actor returns 55+ structured fields per attorney, including identity, contact details, multiple offices with weekly hours, practice areas with sub-specialties, full education and bar admissions, awards, professional associations, peer endorsements, the Justia Lawyer Rating breakdown, badges, and social profiles.

Why use this actor

  • Richest field set on the market - every section Justia exposes: badges, biography, practice areas (with sub-areas), additional practice areas, video conferencing, fees, jurisdictions (with bar ID + admission year), languages, professional experience, education (school + degree + year), awards, professional associations, speaking engagements, certifications, publications, websites, videos, social profiles, multiple offices (each with name, address, phone, hours), peer endorsements, rating breakdown, and the Justia Lawyer Rating.
  • Two modes - search by state(s) + practice area(s) + city, OR paste your own Justia directory / category / profile URLs.
  • Precise filters - narrow by Justia Lawyer Rating, free consultation, or top-rated status, so you only pay for the records you actually want.
  • Output that's ready for downstream tools - stable type:id key for idempotent upserts, clean JSON, typed arrays + objects.

Input parameters

FieldTypeDefaultDescription
modestringsearchsearch (build URL from filters) or url (paste Justia links).
statesarray["California"]One or more US states (full name or 2-letter code). Search mode only.
practiceAreasarray["Personal Injury"]One or more practice areas (e.g. "Personal Injury", "Criminal Law", "Family Law"). "All" / empty = no area filter. Search mode only.
citiesarray[]Optional city filter. Combines with each state.
startUrlsarray-One or more Justia URLs (directory listing, category, or attorney profile). URL mode only.
fetchDetailsbooleantrueOpen each profile to add 40+ fields (badges, bio, practice areas, offices, education, experience, awards, peer reviews, rating breakdown).
fetchVcardbooleanfalseAlso download the .vcf file to add a structured vCard block (fax, name parts, organization).
minRatingnumber-Only keep attorneys with at least this Justia Lawyer Rating (0-10 scale).
freeConsultationOnlybooleanfalseOnly keep attorneys who offer a free consultation.
topRatedOnlybooleanfalseOnly keep attorneys with the maximum Justia rating (10.0).
maxItemsinteger20THE cap for the run. Stop after this many records. 0 = unlimited.
maxPagesinteger0Max pages per directory URL. Does NOT cap the run (defers to maxItems). 0 = unlimited.
proxyobjectResidential (US)Network connection. Residential is the default and is recommended; it requires a paid Apify plan.

Example inputs

Search by state + practice area

{
"mode": "search",
"states": ["California", "New York"],
"practiceAreas": ["Personal Injury", "Family Law"],
"fetchDetails": true,
"maxItems": 200
}

Drill into a city

{
"mode": "search",
"states": ["California"],
"practiceAreas": ["Personal Injury"],
"cities": ["San Francisco"],
"fetchDetails": true,
"maxItems": 50
}

Direct profile URLs

{
"mode": "url",
"startUrls": [
"https://lawyers.justia.com/lawyer/christopher-adamson-10198",
"https://lawyers.justia.com/lawyer/alan-ahdoot-83686"
],
"fetchDetails": true,
"fetchVcard": true
}

Scrape a whole directory page (with pagination)

{
"mode": "url",
"startUrls": ["https://lawyers.justia.com/lawyers/personal-injury/california"],
"fetchDetails": true,
"maxItems": 500
}

Output

Each record is one attorney profile (type = "profile"). Every record includes stable identifiers - type, id (numeric), url, and profileUrl - so the recommended idempotency key for deduplication / upserts is type + ":" + id.

Top-level convenience fields

FieldTypeNotes
type, id, url, profileUrl, slugstring / number / stringStable identifiers. slug is the URL slug without the numeric id.
name, jobTitle, jobTitles[]string / string[]Identity + tagline.
primaryPhone, telephones[]string / string[]Aggregated across header + offices.
profileImagestringAvatar URL.
justiaRating, topRatednumber / booleanJustia Lawyer Rating (0-10 scale). topRated = rating ≥ 10.
clientReviewCount, clientReviewRatingnumberCounts shown on the profile.
ratingBreakdownobjectPer-criterion scores: Legal Knowledge, Legal Analysis, Communication Skills, Ethics and Professionalism (0-5 scale).
yearsOfExperiencenumberFrom the profile header facts.
city, state, breadcrumb[]string / arrayGeographic context from the breadcrumb.
badges[], claimedProfile, offersVideoConferencing, connectPro, liiPlatinum, hasSocialMediaarray / booleansFrom the Badges section.
biographystringMulti-paragraph biography.
practiceAreas[]array of {area, subAreas[]}Each area with its sub-specialty list.
additionalPracticeAreas[]array of stringsAdditional areas not in the main list.
videoConferencing[]array of stringsFaceTime, Zoom, Microsoft Teams, RingCentral, etc.
fees[], freeConsultation, contingentFeesarray / booleansFees + consultation model.
jurisdictions[]array of {name, organization, idNumber, since}Bar admissions with ID + admission year.
languages[]array of {language, modalities[]}Spoken / written modalities per language.
experience[]array of {role, organization, startDate, endDate}Professional experience entries.
education[]array of {school, degree, field, startDate, endDate, honors}Law school + undergraduate.
awards[]array of {title, organization, year}Honors and recognitions.
associations[]array of {organization, role}Professional associations.
speakingEngagements[]array of {title, date, description}CLEs + speaking engagements.
certifications[]array of {title, organization, year}Certifications.
publications[]array of {title, details[]}Publications.
websites[], websiteDetails[]array / array of {type, title, url, description}Firm websites + blogs.
videos[]array of stringsVideo URLs (YouTube, Vimeo).
socialProfiles[]array of stringsFacebook, X, LinkedIn, Instagram, Avvo, Martindale, Lawyers.com, etc.
offices[]array of {name, label, telephone, address, officeHours[]}Every office with full address + weekly hours.
addresses[], officeHours[]arrayTop-level convenience: every office address, plus the first office's hours.
peerReviews[]array of {reviewerName, reviewerProfileUrl, date, rating, text}Lawyer-to-lawyer endorsements.
emailContactUrl, vcardUrlstringContact-form URL and vCard download URL.
vcardobject(Optional, fetchVcard:true) Parsed vCard with fax, name parts, organization, structured address, URLs.
sourceUrl, scrapedAt, metadatastring / objectRun bookkeeping.

Example record (excerpt)

{
"type": "profile",
"id": 10198,
"url": "https://lawyers.justia.com/lawyer/christopher-adamson-10198",
"profileUrl": "https://lawyers.justia.com/lawyer/christopher-adamson-10198",
"slug": "christopher-adamson",
"name": "Christopher Adamson",
"jobTitle": "Award-Winning Personal Injury Lawyer",
"primaryPhone": "(866) 540-4527",
"justiaRating": 10.0,
"topRated": true,
"ratingBreakdown": {
"Legal Knowledge": 5.0,
"Legal Analysis": 5.0,
"Communication Skills": 5.0,
"Ethics and Professionalism": 5.0
},
"yearsOfExperience": 20,
"badges": ["Claimed Lawyer Profile", "Offers Video Conferencing", "LII Platinum", "Social Media"],
"claimedProfile": true,
"offersVideoConferencing": true,
"liiPlatinum": true,
"freeConsultation": true,
"contingentFees": true,
"practiceAreas": [
{ "area": "Personal Injury",
"subAreas": ["Animal & Dog Bites", "Brain Injury", "Car Accidents", "Construction Accidents", "Motorcycle Accidents", "Premises Liability", "Truck Accidents", "Wrongful Death"] }
],
"jurisdictions": [
{ "name": "California", "idNumber": "238500", "since": "2005" }
],
"languages": [{ "language": "English", "modalities": ["Spoken", "Written"] }],
"education": [
{ "school": "Loyola Law School, Loyola Marymount University", "degree": "J.D.", "endDate": "2005" },
{ "school": "University of California - Los Angeles", "degree": "B.A.", "endDate": "2002" }
],
"offices": [
{
"name": "Adamson Ahdoot LLP",
"label": "San Jose Office",
"telephone": "(866) 552-1841",
"address": { "street": "3165 Olin Ave #2", "city": "San Jose", "region": "CA", "postalCode": "95117", "country": "US" },
"officeHours": [ { "day": "Monday", "hours": "Open 24 hours" } ]
}
],
"peerReviews": [
{ "reviewerName": "Alan Ahdoot", "date": "March 12, 2024", "rating": 10.0,
"text": "caring and experienced advocate. Breadth of knowledge and experience coupled with compassion and empathy." }
],
"socialProfiles": [
"https://www.facebook.com/AdamsonAhdootLLP/",
"https://www.linkedin.com/in/christopher-adamson-4731526/"
],
"vcardUrl": "https://lawyers.justia.com/lawyer/christopher-adamson-10198/vcard",
"emailContactUrl": "https://lawyers.justia.com/lawyer/christopher-adamson-10198/contact"
}

Cost control

See the Store page for current rates. Two settings drive what a run costs:

  • Fetch full profile. When on, each attorney's profile page is retrieved to add the 40+ detail fields, and that retrieval is billed per attorney. When off, you get the listing fields only and nothing extra is billed.
  • Max items. The hard cap on records for the run. Set it deliberately.

For cheap discovery, run with Fetch full profile off, pick the attorneys you care about, then re-run those profile URLs in URL mode with it on. Runs that return no records are not billed for results.

Scheduling & automation

Each record has a stable type + ":" + id key so scheduled runs can power idempotent upserts into your CRM, warehouse, or lead database.

Common recurring workflows:

  • Weekly state-level refresh - re-run the same states + practiceAreas combination to detect new attorneys or profile updates.
  • Monthly enrichment sync - re-scrape previously stored profile URLs (URL mode) to refresh phones, addresses, ratings, and offices.
  • Change monitoring - track competitive movements in a specific vertical (DUI in Texas, Immigration in New York, etc.).
  • Lead pipeline replenishment - automatically append newly discovered attorneys into outbound or enrichment workflows.

Notes on data coverage

  • The actor returns everything Justia exposes publicly on the profile page. Optional fields may be null for attorneys who haven't claimed / filled those sections.
  • Justia does not publish attorney email addresses on the profile page itself - only an emailContactUrl (a contact form) and a vcardUrl (a .vcf file with the address + phone). To enrich emails yourself, follow the firm websites[] and look for a public mailto: on the firm's own contact page.
  • The Justia Lawyer Rating is a peer-endorsement score (0-10 scale). ratingBreakdown is the per-criterion 0-5 breakdown.
  • The actor runs on a Residential (US) connection by default, which requires a paid Apify plan. Leave the Proxy field at its default unless you have a reason to change it.