Justia Lawyers Scraper avatar

Justia Lawyers Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Justia Lawyers Scraper

Justia Lawyers Scraper

Scrape comprehensive lawyer profiles, contact info & reviews from Justia. Extract detailed attorney data for lead generation, market research & competitive analysis. Residential proxy required. Handles pagination, filtering & large-scale extraction efficiently.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(3)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

1

Bookmarked

20

Total users

2

Monthly active users

21 days ago

Last modified

Share

What does Justia Lawyers Scraper do?

Justia Lawyers Scraper collects structured lawyer and law firm profiles from public Justia directory pages. Start with a complete directory URL, or provide a practice area, state, and optional city to build one. The dataset includes names, profile links, contact details, practice areas, education, ratings, badges, and location information for legal market research, lead generation, and directory monitoring.

The Actor is designed for fast, repeatable runs. Patchright Chrome uses Justia's JSON endpoint first, then verifies truncated JSON pages against the same page's listing index so rotating Premium placements do not hide ordinary lawyers. It follows directory pagination, removes duplicate profiles, stops at your requested result count, and omits empty values from saved records.

Why use Justia Lawyers Scraper?

  • Legal lead research - Build contact-ready lists of attorneys and firms by practice area and location.
  • Market mapping - Compare lawyer coverage, firms, ratings, and profile signals across states and cities.
  • Practice area analysis - Study the distribution of criminal, family, personal injury, immigration, business, and other legal services.
  • Clean exports - Send structured records to JSON, CSV, Excel, Google Sheets, Airtable, or your own data pipeline.
  • Repeatable monitoring - Schedule runs in Apify to track changes in directory coverage and profile information.

What data can you extract from Justia?

FieldTypeDescription
full_nameStringLawyer full name.
profile_urlStringCanonical Justia lawyer profile URL.
profile_idStringNumeric Justia profile identifier.
firm_nameStringLaw firm or office name when available.
cityStringProfile city.
state_abbrStringTwo-letter state abbreviation.
state_name_fullStringFull state name when available.
phoneStringPublic phone number.
website_urlStringFirm or attorney website.
email_urlStringPublic contact URL when provided.
practice_areasArrayPractice area labels.
law_schoolsArrayLaw school entries.
badgesArrayProfile badge labels.
reviews_overallNumberOverall review score when available.
years_licensedNumberYears licensed when available.
current_badge_levelNumberNumeric badge level.
badge_classStringBadge tier class.
badge_idNumberBadge identifier.
badge_metro_idStringSource metro identifier.
badge_practice_idStringSource practice identifier.
connect_proBooleanWhether Connect Pro is available.
has_emailBooleanWhether an email contact option is available.
is_premiumBooleanWhether the profile is sponsored or premium.
listing_page_numberIntegerDirectory page where the profile was found.
listing_page_urlStringDirectory URL associated with the result page.
practice_areaStringPractice area slug used for the run.
stateStringState slug used for the run.
sourceStringDataset source identifier.
crawled_atStringISO timestamp when the record was saved.

How to use Justia Lawyers Scraper

  1. Open the Actor in Apify Console.
  2. Paste a public Justia directory URL, or enter the practice area and location fields.
  3. Choose the result limit and maximum number of pages.
  4. Decide whether sponsored profiles should be included.
  5. Enable Apify Proxy for larger or repeated runs when direct access is unreliable.
  6. Start the run and download the dataset or connect it to an integration.

The JSON endpoint can return rotating Premium profiles plus only one ordinary profile per request. The Actor detects that short response and uses the browser session's listing index for the complete page, preserving the fast API path while preventing duplicate-heavy runs.

Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlStringNoJustia criminal-law California directoryFull Justia directory URL. When provided, it takes precedence over URL-building fields.
practiceAreaStringNocriminal-lawPractice area slug used when startUrl is empty.
stateStringNocaliforniaState slug used when startUrl is empty.
cityStringNo""Optional city slug such as los-angeles.
includeSponsoredBooleanNotrueInclude sponsored or premium profiles in the dataset.
results_wantedIntegerNo20Maximum number of profiles to save.
max_pagesIntegerNo10Maximum number of directory pages to process.
proxyConfigurationObjectNoDisabledOptional Apify Proxy configuration for reliability.

Usage Examples

Basic directory collection

Collect up to 20 criminal law profiles from a California directory page:

{
"startUrl": "https://www.justia.com/lawyers/criminal-law/california",
"results_wanted": 20,
"max_pages": 5
}

Build a city-level directory URL

Use the practice area, state, and city fields when you do not want to paste a full URL:

{
"practiceArea": "family-law",
"state": "texas",
"city": "houston",
"results_wanted": 100,
"max_pages": 10
}

Exclude sponsored profiles

Keep only non-sponsored profiles for an organic directory comparison:

{
"startUrl": "https://www.justia.com/lawyers/personal-injury/new-york",
"includeSponsored": false,
"results_wanted": 100,
"max_pages": 8
}

Use residential proxy routing

Enable Apify residential proxy routing for larger or recurring collections:

{
"startUrl": "https://www.justia.com/lawyers/immigration-law/florida",
"results_wanted": 250,
"max_pages": 15,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Sample Output

{
"full_name": "Ryan Rodriguez",
"profile_url": "https://lawyers.justia.com/lawyer/ryan-rodriguez-1486958",
"profile_id": "1486958",
"listing_page_number": 1,
"listing_page_url": "https://www.justia.com/lawyers/criminal-law/california",
"practice_area": "criminal-law",
"state": "california",
"state_abbr": "CA",
"firm_name": "Law Offices of Ryan Rodriguez",
"city": "Newport Beach",
"phone": "(949) 335-5433",
"website_url": "https://www.ryrolaw.com/",
"practice_areas": ["Criminal Law", "DUI & DWI"],
"law_schools": ["Loyola Law School, Los Angeles"],
"reviews_overall": 10,
"years_licensed": 0,
"badges": ["Platinum"],
"badge_class": "platinum",
"current_badge_level": 900,
"badge_id": 1116299,
"badge_metro_id": "2058",
"badge_practice_id": "218",
"connect_pro": false,
"has_email": true,
"is_premium": false,
"profile_image_url": "https://justatic.com/profile-images/1486958-1769794501-sl.jpeg",
"source": "justia-lawyers",
"crawled_at": "2026-08-14T10:30:15.120Z"
}

Tips for best results

  • Use a complete public directory URL when you already know the exact practice area and location.
  • Use URL slugs such as criminal-law, personal-injury, california, or los-angeles in the separate input fields.
  • Start with 20 to 50 results to confirm the target scope before increasing the limits.
  • Set max_pages high enough to cover the requested result count, but keep it within the size of the target directory.
  • Enable residential proxy routing for long, repeated, or high-volume runs.
  • Expect optional fields such as firm name, phone, law schools, ratings, and badges to vary by profile.
  • Empty values are omitted automatically, so records can have different field sets.

Integrations and export formats

  • Google Sheets - Review lawyer lists and share them with a team.
  • Airtable - Build searchable legal contact databases.
  • Make or Zapier - Trigger enrichment, CRM, or notification workflows.
  • Webhooks - Send completed run events to downstream systems.
  • API access - Read datasets from applications and scheduled pipelines.

Apify datasets can be exported as JSON, CSV, Excel, XML, and other supported formats.

Frequently Asked Questions

How many lawyer profiles can I collect?

The Actor stops when it reaches results_wanted, reaches max_pages, or runs out of matching profiles.

Can I target a specific city?

Yes. Set city together with a state, or provide a city-specific startUrl.

Can I collect more than one practice area in a run?

Each run targets one directory scope. Run separate jobs for additional practice areas, then combine the datasets in Apify or your data warehouse.

Why are some fields missing?

Justia does not publish every field for every profile. Optional fields are saved when present and omitted when unavailable.

Does the Actor remove duplicate profiles?

Yes. Profiles are deduplicated by their Justia profile identifier before they are saved.

Can I exclude premium profiles?

Yes. Set includeSponsored to false to skip profiles identified as sponsored or premium.

Can I schedule recurring collections?

Yes. Create an Apify Schedule for hourly, daily, weekly, or custom refreshes, then compare the resulting datasets over time.

You are responsible for following applicable laws, privacy requirements, and Justia's terms when collecting or using public directory data. Use the dataset for legitimate research and business purposes.

  • FindLaw Directory Scraper - Collect lawyer and law firm profiles from another professional legal directory.
  • WebMD Doctor Scraper - Collect structured provider profiles, locations, ratings, and contact details from a related professional directory workflow.

Support

For issues, field requests, or target changes, use the Issues tab on the Apify Actor page and include the input used, the run ID, and a small example of the missing result.

This Actor is intended for legitimate data collection, research, and analysis from public sources. You are responsible for complying with applicable laws, website terms, privacy rules, and internal data governance requirements.