Martindale Scraper - Attorney & Law Firm Leads avatar

Martindale Scraper - Attorney & Law Firm Leads

Pricing

$12.00 / 1,000 attorney leads

Go to Apify Store
Martindale Scraper - Attorney & Law Firm Leads

Martindale Scraper - Attorney & Law Firm Leads

Scrape Martindale-Hubbell lawyer profiles: AV Preeminent Peer Review Rating, client reviews, practice areas, bar info, firm name, website & phone. Optional email enrichment & lead score. Search by city, practice area or URL. Export JSON, CSV, Excel.

Pricing

$12.00 / 1,000 attorney leads

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Martindale Scraper — Attorney & Law Firm Leads (AV Preeminent Ratings, Reviews & Firm Contacts)

Extract complete Martindale-Hubbell attorney data — including the field every law-firm marketer wants: the proprietary Martindale-Hubbell Peer Review Rating (the famous AV Preeminent seal), client reviews, practice areas, years licensed, full firm contacts and geo. Optionally turn every attorney into a ready-to-contact B2B lead by crawling their firm's own website for emails, phone numbers and social links.

No login, no cookies, no browser — fast server-rendered extraction with a residential US proxy.

Why this Martindale scraper?

Martindale-Hubbell has rated and reviewed US lawyers since 1868, and its AV Preeminent Peer Review Rating is the gold standard of attorney prestige. Most directory scrapers ignore it. This actor ships the richest dataset in the category — the listing card data and the full profile, merged:

DataTypical scrapersThis actor
Martindale-Hubbell Peer Review Rating + AV Preeminent badge
Client review rating + review count
Practice areaspartial
Firm name + firm website + socials
All firm phone numbers + faxpartial
Full address + map geo (lat/lng)
Years licensed / year admitted
Law school
Firm contact emails (from firm website)✅ opt-in
Lead score (0–100) per attorney
Monitor mode — only NEW attorneys

Use cases

  • Legal lead generation — attorneys and law firms are active buyers: legal tech & SaaS, case-management/CRM, e-discovery, malpractice & cyber insurance, lending, marketing, court reporting, expert-witness and staffing vendors all sell to them. Score by authority (isAVPreeminent, peerReviewRating, reviewCount) and reach them directly (phone, website, enrichedEmails).
  • Recruiting & business development — find attorneys by city, practice area and seniority (yearsLicensed); build referral networks and lateral-hire lists.
  • Market & competitive intelligence — map the lawyer landscape of any city/practice, track AV Preeminent density and firm footprints.
  • Co-counsel & referral sourcing — pinpoint highly-rated specialists in a target market with verified firm contact data.
  • CRM enrichment — append Peer Review Ratings, firm sites and practice areas to an existing attorney list via direct profile URLs.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the Martindale Scraper, enter locations and (optionally) practice areas, and click Start.
  3. Watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.

Input

{
"locations": ["Los Angeles, CA", "Houston, TX"],
"practiceAreas": ["Personal Injury", "Family Law"],
"maxResults": 100,
"includeProfileDetails": true,
"enrichEmails": false,
"avPreeminentOnly": false,
"monitorMode": false
}
  • locations — where to search, as City, ST (Los Angeles, CA, Houston, TX, New York, NY) or City, State. Each location is combined with every practice area. Martindale results are city-scoped, so city-level locations give the best coverage.
  • practiceAreas — filter by practice. Use a friendly term (personal injury, family law, criminal defense, bankruptcy, estate planning, business law, real estate, immigration, divorce, DUI, employment, medical malpractice, tax, intellectual property) or the exact Martindale name. Leave empty for all attorneys in each location.
  • startUrls — direct Martindale URLs: attorney profiles (/attorney/...) or a searchlight results page. Used in addition to the locations.
  • maxResults (default 100) — total attorney cap across all searches.
  • includeProfileDetails (default true) — fetch each profile for firm website & socials, all phones + fax, address + geo, practice areas, law school, price range, review aggregate, Peer Review Rating label and bio. Turn off for a faster, listing-only run.
  • enrichEmails (default false) — crawl each firm's own website (home + contact/about, up to 3 pages) for emails, phones and extra socials. Martindale never exposes emails — this is the only way to get them.
  • minPeerRating / avPreeminentOnly / minReviews / withPhoneOnly / withWebsiteOnly — quality filters.
  • monitorMode (default false) — emit only attorneys not seen in previous runs (see below).
  • proxyConfiguration — keep the default RESIDENTIAL US proxy; Martindale blocks datacenter IPs.

Output

One record per attorney:

{
"attorneyId": "2065760",
"name": "Laura J. Portillo",
"headline": "Family Law",
"jobTitle": "Of Counsel",
"profileUrl": "https://www.martindale.com/attorney/laura-j-portillo-2065760/",
"imageUrl": "https://www.martindale.com/LBM_Images/Lawyers/lawyer-laura-portillo-photo-5207906.png",
"peerReviewRating": 5,
"peerReviewRatingLabel": "AV Preeminent",
"isAVPreeminent": true,
"clientReviewRating": 4.9,
"reviewCount": 18,
"yearsLicensed": 17,
"admissionYear": 2009,
"practiceAreas": ["Family Law", "Divorce", "Child Custody"],
"schools": ["Loyola Law School"],
"bio": "Laura Portillo focuses her practice on complex family law matters …",
"firmName": "Law Offices of Michael Jay Berger",
"firmUrl": "https://www.martindale.com/organization/law-offices-of-michael-jay-berger-1612386/",
"website": "https://www.bankruptcypower.com",
"phone": "310-299-1935",
"phones": ["310-299-1935", "424-600-4850"],
"street": "9454 Wilshire Blvd, Suite 600",
"city": "Los Angeles",
"state": "CA",
"postalCode": "90212",
"latitude": 34.0668,
"longitude": -118.3998,
"priceRange": "Fixed Hourly Rates",
"offersVideoCalls": true,
"isSubscriber": true,
"enrichedEmails": ["info@bankruptcypower.com"],
"leadScore": 92,
"searchPracticeArea": "Family Law",
"searchLocation": "Los Angeles, CA",
"scrapedAt": "2026-06-23T12:00:00.000Z"
}

Fields are null only when the data genuinely doesn't exist (e.g. a free profile with no firm website), never because the scraper skipped them.

Monitor mode — a steady feed of NEW attorneys

Turn on monitorMode to make every run remember the attorney IDs it has already returned (in a named key-value store) and emit only new attorneys next time. Combined with Apify Schedules this gives you a clean drip of fresh leads with no duplicates.

It does not conflict with scheduling: the Schedule decides when the actor runs; monitor mode decides which records of that run are new. Use different monitorStoreName values to track independent searches separately.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/martindale-scraper').call({
locations: ['Los Angeles, CA'],
practiceAreas: ['Personal Injury'],
maxResults: 100,
avPreeminentOnly: true,
enrichEmails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} attorney leads`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new attorney leads straight into your CRM.
  • Slack — get notified when a monitored search finds new attorneys.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find AV Preeminent personal injury lawyers in Houston and list their firm contacts" and let it run this scraper for you.

Pair this with my other directory & lead-gen scrapers:

Tips

  • City-level locations give the best coverage — Martindale results are city-scoped. To exhaust a metro, add several cities and/or split by practice area.
  • AV Preeminent targeting: set avPreeminentOnly: true for the highest-prestige attorneys only.
  • Cost control: turn off includeProfileDetails for a fast listing-only pass (name, firm, city, phone, peer-review stars, AV badge), then re-run with profile details on a filtered shortlist.
  • Rate-limits: keep the default residential proxy and a modest maxConcurrency (5). The actor automatically rotates to a fresh residential IP and retries on any Cloudflare challenge.

FAQ

How do I scrape Martindale lawyers for a specific city? Put the city in locations as City, ST (e.g. Los Angeles, CA). Add practiceAreas to narrow by specialty, or leave it empty for every attorney in that city.

What is the AV Preeminent Rating? It's the top tier of the Martindale-Hubbell Peer Review Rating — lawyers rated by their peers for the highest levels of legal ability and ethical standards. This actor returns the rating label (peerReviewRatingLabel), the star value (peerReviewRating) and an isAVPreeminent flag.

Where do the emails come from? Never from Martindale (it doesn't publish emails). With enrichEmails on, the actor visits the attorney's own firm website and extracts publicly listed contact emails — the same thing a human visitor would see.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

How do I get only new attorneys over time? Turn on monitorMode and run on a Schedule. Each run emits only attorneys not seen before.

A field is null — why? Some attorneys genuinely don't publish a firm website, price range or reviews. Fields are null only when the data doesn't exist, not because the scraper skipped them.

Is scraping Martindale legal? This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for personal data) and Martindale's terms.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.