Super Lawyers Scraper [From $2.5💰] | Attorney Data | Leads
Pricing
from $2.40 / 1,000 results
Super Lawyers Scraper [From $2.5💰] | Attorney Data | Leads
Extract Super Lawyers attorney data for lead generation, CRM enrichment and legal market research. Get profiles, selections, Rising Stars flags, practice areas, firm data and contact details in structured rows - no official API needed. Runs via API, schedule or webhook.
Pricing
from $2.40 / 1,000 results
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Super Lawyers Scraper — Attorney, Firm and Rising Stars Data Export
The Super Lawyers scraper turns superlawyers.com directory and profile pages into structured rows — up to ~125,000 per run (5,000 directory pages x 25 attorneys), 48 fields per record — for lawyer lead generation, attorney data enrichment and Rising Stars tracking. Server-rendered JSON-LD over plain HTTP: no browser, no login, no official API.
Main Use Cases — Lawyer Lead Generation, CRM Enrichment and Rising Stars Data
- Lawyer lead generation — attorney lead lists by state, city and practice area (including personal injury lawyer leads), with phone, address, website and optionally firm e-mails (
firm_emails). - Attorney data enrichment for CRM pipelines — join on
profile_idto add practice areas, selection history, law school, bio and socials. - Rising Stars lists, every selection cycle —
is_rising_star,selection_yearsandselectionsanswer "who made the Rising Stars list?" from data, not press releases. - Law firm competitor analysis and legal market research —
groupBy: "firm"emits one deduplicated row per firm with attorney count, unioned practice areas, awards and contact block. - Super Lawyers data export to CSV, Sheets or Excel — flat one-row-per-attorney output plus three ready-made views.
- Directory search at scale — all 50 states + DC and 140 practice slugs, or paste profile URLs directly.
How the Super Lawyers Scraper Works
CheerioCrawler only — no Playwright, no headless Chrome. It reads three public sources: directory listing pages, whose embedded application/ld+json carries one Attorney object per lawyer (25 per page); profile pages, which add biography, practice lists, social links and server-rendered selection-year blocks; and the XML sitemap index, which enumerates every leaf listing. Records de-duplicate on the profile UUID, rows stream as soon as final, and an optional firm-website pass adds published e-mails.
Does Super Lawyers Have an API? (And How to Export Its Data)
No — probed and ruled out:
api.superlawyers.com/v1/*is the profiles application and answers401/400.?format=json,ajax=1and/api/*on the directory host all serve plain HTML.- The Cludo search backend returns clean JSON, but its index holds only editorial content — no attorney profiles.
supergood.ai's API Report Card grades Super Lawyers an F. What the site does publish is its XML sitemap index and server-rendered schema.org JSON-LD — exactly what this actor consumes. Export path: run the actor → read the dataset → CSV, JSON or Excel.
Scrape the Super Lawyers Directory Without a Browser
Listing pages (attorneys.superlawyers.com/<practice>/<state>/<city>/?page=N) carry one Attorney JSON-LD node per lawyer, 25 per page, <link rel="next"> pagination, total in the meta description. Profile pages (profiles.superlawyers.com/<state>/<city>/lawyer/<slug>/<uuid>.html) carry @graph JSON-LD (description, knowsAbout, sameAs, worksFor) plus server-rendered blocks (#selection_years li, #pa_areas, #law_school, #licensed_since, FLDataLayer); ranked focus areas and bar activity moved behind JavaScript, so those fields come back empty rather than wrong. Sitemap (gsm/attorneys-sitemap-index.xml.gz) holds 138 shards enumerating every leaf URL — CA-9-geo-pa-city.xml.gz alone lists California's 80,512 city URLs, pa.xml.gz all 140 practice slugs.
How the crawl navigates
Hub pages contain zero attorneys — /<state>/, /<practice>/, /<practice>/<state>/, /<state>/<city>/ are pure navigation, so a crawler that synthesises them parses nothing. Cheapest complete entry point per filter:
| Filter | Entry point | Why |
|---|---|---|
practice + state + city | the leaf URL directly | nothing to walk |
practice + state | /<practice>/<state>/ hub → children | one 108 KB request lists all 680 leaves (sitemap: 9 shards / 8.6 MB) |
state + city | /<state>/<city>/ hub → children | all 138 practice leaves in one request |
state only | sitemap state shards → leaves | hub walk omits 38 of 736 cities |
practice only | sitemap geo-pa.xml.gz → hubs | practice hub stops at 61 cities |
| nothing | /<state>/ for all 51 jurisdictions | — |
Seeds, hub children and sitemap shards are stride-sampled (broad filters stay representative) and bounded by maxRequestsPerCrawl.
Cloudflare: TLS fingerprinting, retries and proxies
SuperLawyers is not behind a JavaScript challenge — it is a TLS/JA3 fingerprint block: curl with a browser User-Agent gets 200 while Node's fetch (identical headers) gets 403. Crawlee's got-scraping impersonation clears it and the retry lands the page — maxRequestRetries (3) is a correctness requirement (typical run: 403 → 200). If every request is rejected, enable the proxy input with a residential group; the summary prints throttled (403/429/503) counts and the last status. Fast bursts earn 429 for the whole IP — keep requestDelaySecs at 0.5, raise it (up to 10) on 429s.
Slugs must match the site
Twenty previously hard-coded practice slugs (tax-law, real-estate-law, mergers-acquisitions, appeals, …) and district-of-columbia do not exist on SuperLawyers: HTTP 404, empty page, zero rows with no error. Slug tables are verified against pa.xml.gz and npm test fails if either table drifts.
Maximum rows: enrichment is what costs requests
enrichProfiles | Requests for 1,000 rows | Rows per request |
|---|---|---|
true (default) | ~1,040 | ~1 |
false | ~40 | 25 |
A listing page yields 25 attorneys in one request; each profile page is one more request and only enriches rows already counted — so enrichProfiles: false with maxRequestsPerCrawl: 5000 reaches ~125,000 rows (5,000 listing pages x 25), the practical ceiling.
Runtime, safety rails and zero-row diagnosis
CheerioCrawler is roughly 4x cheaper and faster than browser runs. Memory defaults to 2048 MB (min 512, max 4096; a 256 MB run OOM-killed), concurrency 4, 60 s timeouts, desktop headers. maxRequestsPerCrawl, maxPagesPerListing and maxItems stop runs from running away; free accounts are capped at 10 output rows, paying accounts run uncapped. Records merge on the profile UUID (reachable from several practice areas → emitted once, richest values); rows stream, so a stopped run still flushes what it collected.
Zero rows? Read the summary log: throttled (403/429/503) > 0 → Cloudflare is rejecting the IP (re-run with a residential proxy); last HTTP status: 404 → a slug does not exist (use washington-dc, tax, real-estate); hub(s) with no children → re-run with "debugHtml": true and open an issue.
Input Parameters
All 16 fields optional — empty input crawls 51 jurisdictions x 15 default practice areas, bounded by maxRequestsPerCrawl.
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
startUrls | string[] | No | [] | Directory listing or profile URLs; overrides state/practice filters. |
profileUrls | string[] | No | [] | Profile URLs scraped directly, bypassing the directory crawl. |
states | string[] | No | [] (prefill CA) | 2-letter codes, all 50 states + DC. Empty = every state. |
practiceAreas | string[] | No | [] | Slugs as the site serves them (140 in pa.xml.gz), e.g. employment-and-labor, family-law. Unknown slugs 404 with zero rows (misspellings auto-mapped). Empty = 15 major areas. |
city | string | No | "" | City URL slug, e.g. los-angeles. |
enrichProfiles | boolean | No | true | Visit each profile page for bio, focus areas, selection years, socials, firm data. +1 request per attorney — off = maximum volume. |
findFirmEmails | boolean | No | false | Also crawl each firm's website (home + contact pages) for published e-mails. ~3 requests per firm. |
groupBy | attorney | firm | No | attorney | Row shape. Firm mode groups on the firm UUID and forces enrichment on. |
includeAttorneys | boolean | No | true | Firm mode: nest attorneys in the firm record. |
maxItems | int 0–10,000 | No | 0 | Max rows; 0 = unlimited (then maxRequestsPerCrawl is the ceiling). Free users capped at 10. |
maxPagesPerListing | int 1–50 | No | 3 | Max directory pages per listing (25 attorneys each). |
maxRequestsPerCrawl | int 1–5,000 | No | 2000 | Hard HTTP-request ceiling — the runaway-crawl safety rail. |
requestDelaySecs | num 0–10 | No | 0.5 | Minimum gap between requests; raise on HTTP 429. |
listingsInKeyStore | boolean | No | true | Write each fetched directory page to the key-value store. |
debugHtml | boolean | No | false | Save raw responses to the key-value store; logs a head excerpt. |
proxy | object | No | off (useApifyProxy: false) | Apify Proxy input — only needed if every request is rejected. |
Output Fields
Default (groupBy: "attorney"): one flat row per attorney, streamed as soon as the record is final — CSV/Sheets and CRM ready. groupBy: "firm": one row per firm grouped on the firm UUID with attorney_count, unioned practice_areas/selection_years/awards, the firm contact block, emails and (unless includeAttorneys: false) a nested attorneys array; unidentified firms fall back to one row per attorney. All 48 fields:
- Identity & recognition —
name,additional_name,job_title,tagline,photo_url,award,awards(firm-mode union),selection_years,selections,is_rising_star. - Practice, credentials & bio —
practice_areas(knowsAbout+ listing practice),focus_areas(ranked percentages; only when server-rendered),practice_area_url,licensed_since,law_school,law_school_url,bar_activity(only where server-rendered),bio. - Contact & location —
phone,website,street_address,city,state,zip,latitude,longitude(listing JSON-LDgeo). - Firm —
firm_id(stable UUID),firm_name,firm_legal_name,firm_profile_url,firm_website,firm_phone,firm_emails(fromfindFirmEmails),emails(firm-mode contacts),firm_id_source(firm_id= UUID,firm_name= name-match,none= unidentified),attorney_count. - Social & cross-profile —
linkedin_url,facebook_url,twitter_url,instagram_url,other_profile_urls(fromsameAs). - Provenance —
profile_url,profile_id(dedup key),listing_url,source,profile_enriched,profile_fetch_ok,scraped_at.
Ready-made views: Attorney Overview (name, firm_name, city, state, practice_areas, award, selection_years, profile_url), Contact Details (name, phone, street_address, city, state, zip, website, firm_website, firm_emails, linkedin_url), Full Attorney Profile (name, law_school, bar_activity, focus_areas, bio, photo_url, firm_name, firm_id) — spreadsheet-ready column sets for CSV export.
Listing index (key-value store): one entry per directory page under LISTINGS (API or Actor.getValue('LISTINGS'); off via "listingsInKeyStore": false) — e.g. {"url": "https://attorneys.superlawyers.com/family-law/california/los-angeles/", "isHub": false, "page": 2, "attorneys": 25, "httpStatus": 200, "bytes": 281766, "fetchedAt": "2026-10-04T13:54:52.408Z"}.
Example Input And Output
Family-law attorneys in Houston, enriched, 50 rows:
{"states": ["TX"],"practiceAreas": ["family-law"],"city": "houston","enrichProfiles": true,"maxItems": 50}
Realistic output row (default attorney shape):
{"name": "Jane A. Doe","profile_url": "https://profiles.superlawyers.com/texas/houston/lawyer/jane-a-doe/3b1f2c9d-7a4e-4c2b-9f8d-1e6a5b0c4d72.html","profile_id": "3b1f2c9d-7a4e-4c2b-9f8d-1e6a5b0c4d72","award": "Selected to Super Lawyers","selection_years": ["2023", "2024", "2025"],"is_rising_star": false,"practice_areas": ["Family Law"],"city": "Houston","phone": "+1 713-555-0142","firm_name": "Example Law PLLC","scraped_at": "2026-10-04T13:54:52.408Z"}
Run the Super Lawyers Scraper From the Apify API, Console or Schedule
- Apify API —
POST /v2/acts/ahmed_jasarevic~superlawyers-scraper/runs, poll, then read dataset items (run-sync-get-dataset-itemsfor small jobs). - Webhooks — push new rows into your CRM or warehouse on run-success.
- Zapier / Make — available as an Apify integration for no-code sheet appends.
- Console + schedule — save the input as an Actor task and run it on a weekly or monthly cron (e.g.
0 6 * * 1): selections publish annually, so recurring runs keepselection_yearsfresh and feed Store recommendation signals.
Integrations & Automation
Native Apify integrations only. Apify API: start runs, fetch dataset items (run-sync-get-dataset-items for small jobs). Webhooks: ACTOR.SUCCEEDED POSTs new attorney rows into your CRM, Google Sheets or a warehouse. Zapier / Make: native Apify modules for no-code appends. Schedules: selections publish once a year, so a quarterly enrichment run (cron 0 6 * * 1) plus a fresh run right after each annual selection cycle keeps selection_years and is_rising_star current for recurring lead-list refreshes.
Related Actors
- ahmed_jasarevic/avvo-scraper — attorney leads from the Avvo directory.
- ahmed_jasarevic/lawyers-justia-scraper — lawyer profiles from Justia.
- ahmed_jasarevic/lawyers-findlaw-scraper — FindLaw attorney and firm leads.
- jungle_synthesizer/superlawyers-scraper — the most-used competing Super Lawyers scraper.
- scrapersdelight/superlawyers-attorney-scraper — rival Super Lawyers scraper with selection filters.
FAQ
Does Super Lawyers have a public API or bulk export?
No. api.superlawyers.com/v1/* answers 401/400, ?format=json / ajax=1 / /api/* serve plain HTML, and the Cludo index holds only editorial content; supergood.ai grades Super Lawyers an F. Bulk export: run this actor, then export the dataset to CSV/JSON/Excel.
Why use this actor instead of the official API?
Because there is no official API — the alternatives are manual browsing on profiles.superlawyers.com or list-vendor data. This actor automates those public pages, de-duplicates on the profile UUID, streams rows during the run, and costs roughly 4x less than browser scraping.
What are the alternatives to this actor and to Super Lawyers?
Other US lawyer directories with dedicated Store actors: Avvo, Justia, FindLaw and Martindale-Hubbell (first three linked under Related Actors). Comparisons like martindale-hubbell vs super lawyers vs justia also surface the big-four ranking brands — Chambers, The Legal 500, Best Lawyers, Super Lawyers — and Avita Group's "Top 9 Best Legal Directories" (Feb 2026) puts Super Lawyers at DA 78. Rival Super Lawyers actors: jungle_synthesizer, scrapersdelight, scrapesage, chimerical_quicklime.
How do I scrape Super Lawyers directory data without getting blocked?
Super Lawyers blocks by TLS/JA3 fingerprint, not a JavaScript challenge. The actor impersonates real browsers (got-scraping), retries up to 3 times (403 → 200) and throttles itself with requestDelaySecs. If every request is rejected, enable the proxy with a residential group; the summary prints throttled (403/429/503) counts.
What's the best way to get a list of top lawyers for lead generation?
Filter by states + city + practiceAreas, then pick your trade-off: enrichProfiles: false gives up to ~125,000 listing rows at 25 attorneys per request; enriched mode adds bio, focus areas, selection years, socials and firm data. groupBy: "firm" + findFirmEmails: true gives firm-level contact data.
Super Lawyers vs Avvo — which is better for finding a lawyer?
Super Lawyers is a peer-selection list — the top 5% of U.S. attorneys by practice area and state, plus Rising Stars — making it the source for award-based segmentation; Avvo is a separate directory best captured with its own scraper (linked above).
Who won the Rising Stars list in 2025/2026?
Every selection cycle floods the SERP with law-firm press releases. This actor answers from the source: is_rising_star, selection_years and selections per attorney, filterable by state, city and practice area — re-run each cycle and join on profile_id to diff over time.
SEO Keywords
superlawyers scraper, super lawyers scraper, super lawyers api, super lawyers data export, scrape super lawyers directory data, super lawyers rising stars list, rising stars list 2026, find super lawyers directory search, export super lawyers data to csv, lawyer lead generation, attorney email list building data, personal injury lawyer leads, law firm competitor analysis, legal market research attorney data, attorney data enrichment crm, super lawyers vs avvo, avvo alternatives, martindale-hubbell vs super lawyers vs justia, most accurate legal directory, lawyer ranking sites comparison, super lawyers scraper apify, law firm email finder, super lawyers directory crawl, superlawyers profile data
For AI Agents & LLM Apps
Purpose: extract structured attorney and law-firm records (48 fields) from the public Super Lawyers directory — by state, city and practice area — for lead lists, CRM enrichment and selection data.
Minimal input (all 16 inputs optional):
{"states": ["CA"], "maxItems": 25}
Firm-shape variant (forces enrichProfiles on):
{"groupBy": "firm", "states": ["TX"], "maxItems": 20}
Key output fields (full 48 in Output Fields): name, profile_url, profile_id (dedup key), award, selection_years, is_rising_star, practice_areas, focus_areas, city, state, phone, law_school, bio, firm_id, firm_name, firm_emails, emails, awards, attorney_count, listing_url, scraped_at. Views: attorney_overview, contact_details, full_profile. Key-value: LISTINGS (page index, on by default).
Behavior notes for agents:
- Empty input = 51 jurisdictions x 15 default practice areas, 3 pages per listing, 2,000-request ceiling;
startUrls/profileUrlsoverridestates,practiceAreasandcity. enrichProfilesdefaultstrue(~1 request, ~1 row, per attorney);falsegives 25 rows per request and unlocks the ~125,000-row ceiling atmaxRequestsPerCrawl: 5000.groupBy: "firm"silently turnsenrichProfileson;findFirmEmails: trueadds ~3 billed requests per firm website.- Unknown slugs return HTTP 404 and produce zero rows with no error (misspellings auto-mapped) — check
last HTTP statusin the summary log. - Rows stream (an aborted run still flushes rows); records dedupe on
profile_id.focus_areas/bar_activitymay be empty when JavaScript-served — absence, not error. - Free accounts are capped at 10 output rows;
maxItems: 0= unlimited butmaxRequestsPerCrawl(max 5,000) is the real ceiling. On429raiserequestDelaySecs(max 10); on all-403enableproxy.
Billing: pay-per-event — result $0.0025 per result + Actor Start $0.00005 per start.
Legal & Compliance Disclaimer
- Independent tool — not affiliated with, endorsed by, sponsored by or connected to Super Lawyers or its owner, Thomson Reuters.
- Reads only public, marketing-facing directory and profile pages on
attorneys.superlawyers.com/profiles.superlawyers.comvia plain HTTP (no browser automation, no login) — plus, only whenfindFirmEmailsis on, public law-firm pages for e-mails those firms publish themselves. - The user is solely responsible for compliance with Super Lawyers' terms of service and robots.txt, and with applicable data-protection law (GDPR, CCPA/CPRA).
- Output may include personal contact data (phones, addresses, e-mails, social profiles) and must not be used for unsolicited commercial outreach in violation of applicable law (CAN-SPAM, GDPR/PECR, CCPA).