Justia Lawyer Scraper — Attorney Leads avatar

Justia Lawyer Scraper — Attorney Leads

Pricing

from $20.00 / 1,000 lawyer records

Go to Apify Store
Justia Lawyer Scraper — Attorney Leads

Justia Lawyer Scraper — Attorney Leads

Scrape Justia lawyer and law firm profiles with practice areas, locations, contact details, ratings, and structured attorney lead data.

Pricing

from $20.00 / 1,000 lawyer records

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

3 days ago

Last modified

Categories

Features

Limited permissions

Share

Justia Lawyer Directory Scraper — Attorney Leads

Extract attorney profiles from the Justia Lawyer Directory with practice areas, contact details, bar admissions, education, ratings, and reviews. Filter by practice area and geographic location, or supply direct Justia directory listing URLs.

Use Cases

  • Legal lead generation — build lists of licensed attorneys by practice area and city/county for sales outreach
  • Attorney prospecting — find lawyers with published phone, website, and office address for CRM enrichment
  • Legal-tech data enrichment — feed attorney directories, comparison tools, and matching platforms
  • Market research — analyze attorney distribution by practice area, geography, rating, and law school
  • Recruitment — source attorneys by specialization for law firm hiring or expert-network platforms

Input

The actor supports two input modes. When startUrls are given, practiceArea and location are ignored. An empty input runs the Console example (family law in Los Angeles).

FieldTypeDefaultDescription
startUrlsarray[]Direct Justia lawyer listing or profile URLs (must contain justia.com/lawyers)
practiceAreaenumnone (prefilled family-law)Practice-area slug (e.g., criminal-law, personal-injury, bankruptcy)
locationstringnone (prefilled california/los-angeles)Geographic slug in state/city or state/county format
maxResultsinteger50Maximum lawyer records to extract (1–10,000)
scrapeProfileDetailsbooleantrueVisit each lawyer's profile page to enrich with bar admissions, law school, and additional contact info

URL formats accepted in startUrls

  • Practice area: https://www.justia.com/lawyers/family-law
  • Location: https://www.justia.com/lawyers/california/los-angeles
  • Combined: https://www.justia.com/lawyers/family-law/california/los-angeles
  • County: https://www.justia.com/lawyers/california/los-angeles-county

Individual profile URLs (lawyers.justia.com/lawyer/...) are not accepted as start URLs; use the directory page that lists the lawyer.

Example inputs

{
"practiceArea": "family-law",
"location": "california/los-angeles",
"maxResults": 100,
"scrapeProfileDetails": true
}
{
"startUrls": [{ "url": "https://www.justia.com/lawyers/criminal-law/illinois/chicago" }],
"maxResults": 200
}
{
"practiceArea": "personal-injury",
"location": "texas/houston",
"maxResults": 50,
"scrapeProfileDetails": false
}

Output

Each dataset item is a lawyer record with the following fields:

FieldTypeExample
lawyer_namestring | null"Jane A. Roe"
firm_namestring | null"Roe & Partners LLP"
practice_areasstring[] | null["Family Law","Divorce"]
citystring | null"Los Angeles"
statestring | null"CA"
phonestring | null"(213) 555-0100"
emailstring | null"jane@roelaw.com"
websitestring | null"https://roelaw.com"
addressstring | null"500 Market St, Los Angeles, CA 90013"
ratingnumber | null4.8
reviews_countnumber | null23
bar_admissionsstring[] | null["State Bar of California"]
law_schoolstring | null"UCLA School of Law"
profile_urlstring | null"https://www.justia.com/lawyers/jane-roe-12345"
scraped_atstring (ISO 8601)"2026-07-05T12:00:00.000Z"
source_urlstring"https://www.justia.com/lawyers/family-law/california/los-angeles"

Fields are filled only from what Justia publishes. email is usually null because most Justia profiles use a contact form instead of a public address. practice_areas, reviews_count, bar_admissions, law_school, and the office address come from the profile page, so they need scrapeProfileDetails: true. rating is on a 5-point scale (Justia's 10-point peer rating is divided by two).

Pricing

This Actor uses pay-per-event pricing. These are the current Apify Store event prices:

EventFreeBronzeSilverGold, Platinum, DiamondWhen it is charged
lawyer-found$0.025001$0.024375$0.023750$0.020000One unique attorney record saved to the dataset.
apify-actor-start$0.006251$0.006094$0.005938$0.005000Actor start; one event per started GB of memory (2 at the default 2 GB).

Example: 50 records on the Free tier cost about $1.26 (50 × $0.025001 plus 2 start events). Each lawyer is charged once, only after its record is saved; failed pages and blocked requests are never charged, and the run stops cleanly at your maxTotalChargeUsd. Apify platform usage and network access are included in the event prices.

API & Integration

Run the actor via API:

curl -X POST "https://api.apify.com/v2/acts/muhammadafzal~justia-lawyer-directory-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"practiceArea":"family-law","location":"california/los-angeles","maxResults":50}'

Export results:

$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"

Integrate with Zapier, Make, n8n, Airbyte, LangChain, or any tool that consumes Apify datasets.

Reliability & Anti-Blocking

  • Browser rendering with a bounded session pool and polite 1–3 s delays between requests
  • Network routing handled by the Actor with a per-run US session; older customProxyUrl input values are ignored
  • 3-layer extraction: JSON-LD structured data → DOM parsing with multi-selector fallback → profile-page enrichment (one profile request per lawyer)
  • Pagination auto-follow (a[rel="next"], ?page=N)
  • Honest endings: the run stops at maxResults, at the charge limit, or about a minute before the run timeout, and writes the stop reason, delivered count, and charged events to the OUTPUT record. If every listing page is blocked or fails, the run ends as failed with no result charges.

Notes

  • Justia's directory contains hundreds of thousands of attorney profiles across all US states. Large extraction jobs (10,000+ records) should set scrapeProfileDetails: false for speed, then re-enrich a subset.
  • Practice-area slugs follow Justia's URL convention (kebab-case). Common slugs are pre-listed in the input schema dropdown; custom slugs can be typed manually.
  • The actor is MCP-ready: AI agents (Claude, GPT, Cursor) can call it with a single practiceArea + location pair and receive structured JSON.

FAQ

How many lawyers can I extract per run?

Up to 10,000 per run with maxResults. With profile details on, expect roughly 5–10 profiles per minute; very large jobs should run with scrapeProfileDetails: false, or be split by city or county.

Does it return lawyer email addresses?

Only when a profile publishes one, which is rare. Justia usually routes contact through a form, so email is mostly null; phone, website, and office address are much more common.

Can I use my own proxy?

No. Network routing is handled by the Actor and is included in the price. Proxy fields from older inputs are ignored.

This actor scrapes publicly available attorney profile data from the Justia Lawyer Directory. Ensure your use complies with Justia's Terms of Service and applicable data-protection laws (GDPR, CCPA) when handling contact information. Output is intended for B2B lead generation and research purposes.

Last verified: 2026-10-27