# Super Lawyers Scraper — Attorney Leads & Awards (`scrapersdelight/superlawyers-attorney-scraper`) Actor

Attorney leads from the Super Lawyers directory: name, firm, practice areas, phone, website, office address, law school, year licensed — plus the Super Lawyers and Rising Stars selection years no other lawyer directory publishes. Filter by practice area, state, city and current selection.

- **URL**: https://apify.com/scrapersdelight/superlawyers-attorney-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 per attorney returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Super Lawyers Scraper — Attorney Leads & Awards

Attorney lead records from the [Super Lawyers](https://www.superlawyers.com) directory (Thomson
Reuters). **One row per attorney**, carrying **fullName, firmName, phone, website, contactFormUrl,
street, city, state, zip, latitude/longitude, practiceAreas, licensedSinceYear, yearsLicensed,
lawSchool, lawDegree, languages, badges** — and the thing no other lawyer directory publishes, the
**Super Lawyers and Rising Stars selection history**: `superLawyersYears`, `risingStarsYears`,
`firstSelectionYear`, `latestSelectionYear`, `totalYearsSelected` and `currentlySelected`.

Filter by **practice area, state, city, selection list, years selected and years licensed** — or
paste profile URLs and scrape those directly. No login, no API key, no CAPTCHA solving.

**Scope, counted not quoted: 201,215 attorneys across all 51 rosters** (50 states + Washington DC),
every profile UUID distinct, measured 2026-08-12 by reading all 51 roster files. California 27,420 ·
New York 22,751 · Texas 15,888 · Florida 12,305 · Illinois 10,176 · Wyoming 139. **140 practice
areas**, read from the site's own index the same day.

**The wedge:** this is the only Super Lawyers Actor on the Store that lets you ask for the attorneys
who are on the list **right now**, or who just made it for the **first time**. Competing actors
return a selection-years array; this one computes it and lets you filter on it.

### 🚀 Quick start

**It ships prefilled — press Start and change nothing.** The first click returns **25 Providence,
Rhode Island personal-injury attorneys** with their selection years, for about **$0.08**, in
roughly a minute and a half. Raise `maxItems` once you have seen the rows.

```json
{
  "source": "directory",
  "practiceAreas": ["personal-injury-plaintiff"],
  "states": ["rhode-island"],
  "cities": ["providence"],
  "maxItems": 25,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

Drop `cities` to sweep the whole state instead of one city. Send an empty input (`{}`) and you get
this same sample run rather than an error, so an API or agent caller always gets real rows back.

Three more inputs you can paste over it:

```jsonc
// 1. The buying-intent cut: attorneys who are on the CURRENT Rising Stars list in Texas.
{
  "source": "directory",
  "practiceAreas": ["personal-injury-plaintiff", "family-law", "business-litigation"],
  "states": ["texas"],
  "selectionType": "risingStars",
  "currentSelectionsOnly": true,
  "maxItems": 1000
}
```

```jsonc
// 2. Whole-market coverage: a representative cross-section of Colorado, not just the
//    upgraded profiles at the front of the file (3,642 attorneys exist; this takes 2,000).
{
  "source": "stateRoster",
  "states": ["colorado"],
  "rosterOrder": "spread",
  "includeAchievements": false,
  "maxItems": 2000
}
```

```jsonc
// 3. Refresh a list you already have — is this attorney still on the list?
{
  "source": "profileUrls",
  "profileUrls": [
    "https://profiles.superlawyers.com/rhode-island/providence/lawyer/mary-cavanagh-dunn/8aaed2f9-01f5-4d30-b4eb-39dc42984e07.html"
  ],
  "maxItems": 100
}
```

### ✨ Why the selection data is the point

Super Lawyers is a peer-nominated, research-vetted list capped at **the top 5% of lawyers in a
state**. Rising Stars is the parallel list for lawyers under 40 or in practice ten years or less,
capped at **the top 2.5%**. Selection is annual, and the year-by-year history is on the profile.

That history is a **buying-intent signal**, not a vanity metric:

- **Newly selected (1–2 years)** — the lawyer who just made the list buys plaques, badges, ad
  placements and profile upgrades, and is at the career point where people leave a big firm and
  start their own shop. This is the cohort that buys practice-management software.
  → `minYearsSelected: 1` … 2
- **Rising Stars, currently selected** — under 40, building a book, technology-native. The classic
  Clio / MyCase / Smokeball / Lawmatics ICP. → `selectionType: "risingStars"` +
  `currentSelectionsOnly: true`
- **Selected 10+ years running** — established partner, firm-level decisions, bigger contracts.
  → `minYearsSelected: 10`
- **Lapsed** (`currentlySelected: false`) — was on the list, is not now. Different conversation
  entirely, and you can only have it if you know. On the 100-row Rhode Island run, 71 of 100 rows were
  currently selected; the other 29 are that conversation.

Every row carries `superLawyersYears`, `risingStarsYears`, `firstSelectionYear`,
`latestSelectionYear`, `totalYearsSelected` and `currentlySelected`, so you can segment on any of
those without string surgery.

**100% of rows carry at least one selection** — 100 of 100 on the 100-row Rhode Island run, 200 of 200 on a
four-state sample. Every attorney published in this directory is on the Super Lawyers list, the
Rising Stars list, or both (22 of 100 were on both).

### 🎯 Use cases

| You are a… | Use it to… |
|---|---|
| **Legal-tech / practice-management SaaS** (Clio, MyCase, Filevine, Smokeball, Lawmatics and everyone selling against them) | Pull currently-selected Rising Stars by state and practice area — the under-40, book-building, tech-native cohort — with `phone` at 100% and `website` at 95–96.5% |
| **Legal-marketing agency** | Target the lawyers who just made the list (`minYearsSelected: 1–2`, `currentSelectionsOnly: true`) — they are actively buying plaques, badges, ad placement and website work |
| **Litigation finance / expert-witness network** | Filter by practice area and years selected, then read `verdictsAndSettlements` and `practiceAreaSplit` on the upgraded profiles |
| **Legal recruiter / headhunter** | One row gives you `totalYearsSelected`, `yearsLicensed`, `lawSchool`, `firmName` and office city — the whole screen in a spreadsheet |
| **Law-firm business development** | Referral targeting: who in this city does the practice area I do not, and are they still on the list |
| **Awards and CLE / conference sales** | `firstSelectionYear` and `latestSelectionYear` tell you who is celebrating something this year |

### 📥 Supported inputs

| Input | Example | What it does |
|---|---|---|
| Directory search | `practiceAreas: ["family-law"]`, `states: ["texas"]`, `cities: ["austin"]` | Walks the attorneys.superlawyers.com listings, 25 attorneys per page |
| Whole state roster | `source: "stateRoster"`, `states: ["colorado"]` | Reads the state's own roster file — every attorney Super Lawyers publishes there |
| Profile URLs | `source: "profileUrls"`, `profileUrls: ["https://profiles.superlawyers.com/…/uuid.html"]` | Re-scrapes exactly those attorneys, no enumeration |

**Not supported:** law-firm (`/lawfirm/`) URLs — they are firm pages, not attorneys, so they are
named in the log and skipped rather than turned into a half-empty row. Non-US attorneys — Super
Lawyers covers the 50 states plus DC and nothing else. Email addresses — see Honest limits.

### 📦 One real row

A real row from the 100-row Rhode Island run, unedited (`scrapedAt` 2026-08-13):

```jsonc
{
  "profileId": "8aaed2f9-01f5-4d30-b4eb-39dc42984e07",
  "fullName": "Mary Cavanagh Dunn",
  "tagline": "Top rated Business Litigation attorney in Providence, Rhode Island",
  "jobTitle": "Attorney at Law",
  "photoUrl": "https://cdn.superlawyers.com/image/upload/…/mary-cavanagh-dunn-ldak6kx4.png",

  "superLawyersSelected": true,
  "superLawyersYearsSelected": 11,
  "superLawyersSelectionPeriod": "2015 - 2018, 2020 - 2026",
  "superLawyersYears": [2015, 2016, 2017, 2018, 2020, 2021, 2022, 2023, 2024, 2025, 2026],
  "risingStarsSelected": true,
  "risingStarsYearsSelected": 5,
  "risingStarsSelectionPeriod": "2010 - 2014",
  "risingStarsYears": [2010, 2011, 2012, 2013, 2014],
  "totalYearsSelected": 16,
  "firstSelectionYear": 2010,
  "latestSelectionYear": 2026,
  "currentlySelected": true,

  "firmName": "Blish & Cavanagh LLP",
  "firmProfileUrl": "https://profiles.superlawyers.com/rhode-island/providence/lawfirm/blish-and-cavanagh-llp/190b36c4-01cb-4634-8025-9a162adc97de.html",
  "phone": "401-831-8900",
  "phones": ["401-831-8900"],
  "website": "https://www.blishcavlaw.com",
  "professionalWebpage": "https://www.blishcavlaw.com/attorney/mary-c-dunn/",
  "contactFormUrl": "https://profiles.superlawyers.com/contact/lawyer/8aaed2f9-01f5-4d30-b4eb-39dc42984e07.html",

  "street": "30 Exchange Terrace Commerce Center",
  "city": "Providence", "state": "RI", "stateName": "Rhode Island", "zip": "02903",
  "latitude": 41.825504, "longitude": -71.413339,

  "practiceAreas": ["Business Litigation", "Constitutional Law", "Employment Litigation",
                    "Estate & Trust Litigation", "Media and Advertising", "Personal Injury - General"],
  "practiceAreaSplit": [{ "area": "Business Litigation", "percentage": 50 },
                        { "area": "Constitutional Law", "percentage": 10 }],

  "licensedInState": "Rhode Island",
  "licensedSinceYear": 2002,
  "yearsLicensed": 24,
  "lawSchool": "Suffolk University Law School",
  "lawDegree": "Juris Doctorate",
  "languages": ["English"],

  "awards": ["Selected to Super Lawyers"],
  "badges": [{ "name": "Selected to Super Lawyers", "description": null, "imageUrl": null }],
  "honors": ["Fellow of the Rhode Island Bar Foundation, Rhode Island Bar Foundation, 2022", "…"],
  "barActivity": ["Federal Bar Association, Member", "…"],
  "socialProfiles": { "linkedin": null, "facebook": null, "twitter": null, "youtube": null, "instagram": null },
  "otherDirectoryProfiles": ["https://lawyers.findlaw.com/rhode-island/providence/mary-cavanagh-dunn-MTM5ODc4M18x/"],

  "profileUrl": "https://profiles.superlawyers.com/rhode-island/providence/lawyer/mary-cavanagh-dunn/8aaed2f9-01f5-4d30-b4eb-39dc42984e07.html",
  "scrapedAt": "2026-08-13T01:48:58.183Z"
}
```

Three things people misread on this row:

- `practiceAreaSplit` percentages are the attorney's own 0–100 split of their book. They are not a
  rating and they do not share a scale with anything else on the row.
- `superLawyersYearsSelected: 11` is a **count of years**, `superLawyersYears` is the list of them,
  and `superLawyersSelectionPeriod` is the site's own human string. All three are kept because they
  disagree in edge cases and you should be able to see which.
- An empty array (`"certifications": []`) means Super Lawyers published nothing there. It is not a
  fetch failure — see the fill tables.

### 🗂 Key output fields

Exactly **61 fields on every row** of the default input — 62 with `includeBiography` on, 53 with
`includeAchievements` off. The ones people buy this for:

| Field | Type | Filled when |
|---|---|---|
| `fullName`, `firmName`, `jobTitle`, `tagline` | string | Always |
| `phone`, `phones[]` | string / array | Always (100% measured; `withPhoneOnly` is on by default) |
| `website`, `websites[]`, `firmProfileUrl`, `contactFormUrl` | string / array | `website` 95–96.5%; the other two 100% |
| `street`, `city`, `state`, `stateName`, `zip`, `country` | string | Always |
| `latitude`, `longitude` | number | 99.5–100% |
| `practiceAreas[]`, `practiceAreasText` | array / string | Always |
| `practiceAreaSplit[]`, `focusAreas[]` | array | Upgraded profiles only — 8.5%/7.5% statewide, 22%/19% on the 100-row Rhode Island run, 32.7%/31.3% on a directory search |
| **`superLawyersYears[]`, `superLawyersYearsSelected`, `superLawyersSelectionPeriod`** | array / int / string | When the attorney is a Super Lawyer (65.5–73%) |
| **`risingStarsYears[]`, `risingStarsYearsSelected`, `risingStarsSelectionPeriod`** | array / int / string | When the attorney is a Rising Star (49–54.5%) |
| **`totalYearsSelected`, `firstSelectionYear`, `latestSelectionYear`** | int | Always — 100% of rows carry at least one selection |
| **`currentlySelected`** | boolean | Always; `true` on 58.5% statewide, 71% on the 100-row Rhode Island run |
| `licensedInState`, `licensedSinceYear`, `yearsLicensed` | string / int | 99–99.5% |
| `lawSchool`, `lawSchoolUrl`, `lawDegree` | string | 99–100% |
| `languages[]`, `badges[]`, `awards[]` | array | 100% |
| `honors[]`, `barActivity[]`, `certifications[]`, `industryGroups[]`, `verdictsAndSettlements[]`, `proBono[]`, `scholarlyLectures[]`, `otherEducation[]` | array | Upgraded profiles only — see the fill tables (`otherEducation` 26–36.7%). These eight are the block `includeAchievements: false` removes |
| `biography` | string | Only when `includeBiography: true` |
| `socialProfiles{}`, `professionalWebpage`, `otherDirectoryProfiles[]` | object / string / array | 24%, 11–42.7%, 100% |
| `photoUrl` | string | 98.5–100% |
| `profileId`, `profileUrl`, `firmLogoUrl`, `scrapedAt` | string | Always. `scrapedAt` is ISO-8601 UTC |

The dataset ships with three pre-built views so you do not have to build them: **Attorney
overview**, **Contact details** and **Selection history**.

### 📊 Measured field fill — and why one number would mislead you

Fill depends on **which profiles you ask for**, because Super Lawyers sells profile upgrades and
the upgraded ones carry an Achievements block the plain ones do not. Three honest baselines, all
from real runs:

**A. Representative statewide sample** — 200 attorneys, `stateRoster` with
`rosterOrder: "spread"` across TX / NY / FL / OH. **This is the number to plan against.**

| Field | Fill | Field | Fill |
|---|---|---|---|
| `fullName`, `firmName`, `phone` | **100%** | `practiceAreas` | **100%** |
| `street`, `city`, `state`, `zip` | **100%** | `practiceAreasText` | **100%** |
| `latitude` / `longitude` | 99.5% | `licensedSinceYear`, `yearsLicensed` | 99.5% |
| `website` | 96.5% | `lawSchool`, `lawSchoolUrl` | 99.5% |
| `photoUrl` | 98.5% | `lawDegree`, `languages` | **100%** |
| `firmProfileUrl`, `firmLogoUrl` | **100%** | `badges`, `awards` | **100%** |
| `contactFormUrl` | **100%** | `otherDirectoryProfiles` | **100%** |
| **`latestSelectionYear`, `firstSelectionYear`, `totalYearsSelected`** | **100%** | `superLawyersYears` | 65.5% |
| `currentlySelected` | 58.5% true | `risingStarsYears` | 54.5% |
| `socialProfiles` | 24.0% | `professionalWebpage` | 11.0% |
| `honors` / `barActivity` | 10.0% / 10.5% | `practiceAreaSplit` / `focusAreas` | 8.5% / 7.5% |
| `firstAdmittedYear` | 11.5% | `certifications` / `verdictsAndSettlements` | 6.0% / 5.0% |

**B. Directory search** — 150 attorneys, family-law + criminal-defense in Austin and Houston. The
directory ranks upgraded profiles higher, so the same fields come back far denser:

`professionalWebpage` **42.7%** · `practiceAreaSplit` **32.7%** · `focusAreas` **31.3%** ·
`honors` **32.7%** · `barActivity` **36.0%** · `otherEducation` **36.7%** · `socialProfiles`
**54.0%** · `firstAdmittedYear` **44.7%** — with contact data unchanged at 99.3% phone,
94.7% website, 100% address.

**C. The 100-row Rhode Island run** — the 100 Rhode Island personal-injury attorneys you get by pressing
Start, measured 2026-08-13, so you can reproduce it before you spend anything:

`phone`, `street`, `city`, `zip`, `latitude`, `practiceAreas`, `badges`, `languages`,
`contactFormUrl`, `firmName`, `firmProfileUrl`, `otherDirectoryProfiles`, `totalYearsSelected`,
`firstSelectionYear`, `latestSelectionYear` **100%** · `lawSchool`, `licensedSinceYear`,
`yearsLicensed` **99.0%** · `website` **95.0%** · `superLawyersYears` **73.0%** ·
`currentlySelected` **71.0%** · `risingStarsYears` **49.0%** · `firstAdmittedYear` **34.0%** ·
`professionalWebpage` **33.0%** · `barActivity` **28.0%** · `otherEducation` **26.0%** ·
`honors` / `socialProfiles` **24.0%** · `practiceAreaSplit` **22.0%** · `focusAreas` **19.0%** ·
`proBono` / `scholarlyLectures` **12.0%** · `verdictsAndSettlements` **11.0%** ·
`certifications` **6.0%** · `industryGroups` **4.0%**

**What this means in practice:** the *lead* fields — name, firm, phone, address, practice areas,
year licensed, law school, and the selection history — are effectively complete no matter how you
crawl. The *depth* fields (verdicts, honors, bar activity, practice-area percentages) are an
upgraded-profile feature and are sparse in a representative sample. Turn `includeAchievements`
off if you do not want mostly-empty arrays on your rows — it costs nothing either way.

Every run prints its own measured fill in the log.

#### Roster order is not random — and you get to choose

The per-state roster file is **ordered by profile tier**. Measured on California's 27,420
attorneys, 25 profiles from each position:

| Position in the roster | Achievements block | `practiceAreaSplit` | `socialProfiles` | `website` |
|---|---|---|---|---|
| First 25 | **92%** | 100% | 52% | 96% |
| Even spread across the file | 8% | 8% | 12% | 92% |
| Last 25 | 0% | 0% | 12% | 88% |

So "the first 500 attorneys in California" is the **rich end** of the roster, not a sample of the
state. `rosterOrder: "richestFirst"` (the default) gives you the deepest rows; `"spread"` walks an
even stride across the whole file and gives you a genuine cross-section, small towns included.
Contact quality barely moves either way.

### ⚙️ Input

Fields in the order they appear in the Console.

| Field | Type | Default | What it does |
|---|---|---|---|
| `source` | select | `directory` | `directory` (practice area × state × city), `stateRoster` (every attorney in a state), or `profileUrls`. Same price per attorney on all three. |
| `practiceAreas` | multi-select | `["personal-injury-plaintiff"]` | All **140** practice areas the site publishes, as a dropdown — no slugs to type. Each place is crawled once per area. |
| `states` | multi-select | `["rhode-island"]` | 50 states + DC, each labelled with its measured roster size. |
| `cities` | list | — | Directory only. `austin`, `texas/austin` or `Austin, TX`. Leave empty and a state page is expanded into its city listings automatically. |
| `rosterOrder` | select | `richestFirst` | State roster only — `richestFirst` or `spread`. See the roster-order table above. |
| `profileUrls` | list | — | Used when `source` is `profileUrls`. `/lawfirm/` URLs are rejected. |
| `selectionType` | select | `any` | `any`, `superLawyers` or `risingStars`. Either single-list cut roughly halves the rows returned; the Actor fetches more profiles to fill your quota at no extra charge. |
| `currentSelectionsOnly` | boolean | `false` | Keep only attorneys on the list that is live now, read against `selectionType` — with `risingStars` it means *currently a Rising Star*, not merely currently selected to something. |
| `minYearsSelected` | number | `0` | 1–2 for the newly-selected cohort, 10+ for established partners. |
| `minYearsLicensed` | number | `0` | From the "Licensed in <state> since" year (99–99.5% fill). |
| `withPhoneOnly` | boolean | `true` | On by default. Phone measured 100% / 99.3%, so it normally removes nothing. |
| `withWebsiteOnly` | boolean | `false` | Website is 95–96.5%, so this removes about 1 row in 25. |
| `includeAchievements` | boolean | `true` | Honors, bar activity, certifications, industry groups, verdicts, pro bono, lectures and other education — eight arrays. Sparse outside upgraded profiles. Off drops the row from 61 fields to 53. No effect on price or run time. |
| `includeBiography` | boolean | `false` | The attorney's full self-written bio. Off by default — it is long. No effect on price or run time. |
| `maxItems` | number | `100` (prefilled `25`) | **Your hard cost cap.** 100 rows = $0.30; the prefilled first click is 25 rows ≈ $0.08. |
| `maxPagesPerListing` | number | `20` | Directory only. 25 attorneys per page. Listing pages are not charged. |
| `maxConcurrency` | number | `2` | 2 is measured-optimal; 3–4 trades errors for speed. |
| `proxyConfiguration` | proxy | Apify RESIDENTIAL | **Required.** Datacentre exits measured 0/20. Leave it alone. |

### 💰 Pricing

**$0.003 per attorney returned — $3 per 1,000.** Charged on the `attorney-scraped` event. No
monthly platform fee from this Actor.

| Run | Attorneys | Cost |
|---|---|---|
| The prefilled demo (press Start) | 25 | **$0.08** |
| The same demo with `maxItems` raised | 100 | $0.30 |
| A practice area in one metro | 500 | $1.50 |
| A serious lead list | 1,000 | $3.00 |
| Whole Rhode Island roster (619) | 619 | $1.86 |
| Whole Texas roster (15,888) | 15,888 | $47.66 |
| Whole California roster (27,420) | 27,420 | $82.26 |
| Every attorney in the directory (201,215) | 201,215 | $603.65 |

What you are **not** charged for:

- **Rows your filters removed.** A profile that was fetched and then dropped by
  `currentSelectionsOnly`, `minYearsSelected`, `withPhoneOnly` or any other filter is free. A narrow
  filter costs the Actor fetches and you time — not money.
- **The same attorney twice.** Deduplication happens on the profile UUID *before anything is
  fetched*. On the 100-row Rhode Island run that removed 2,400 repeat listing cards before they cost you
  anything.
- **Listing pages, roster files, retries, Cloudflare mints or blocked requests.** Only attorneys
  delivered to your dataset are billed.

Rows are charged as they are pushed (`Actor.pushData(items, 'attorney-scraped')`), so if you hit a
budget cap you get whole rows and stop, never a half-billed dataset. `maxItems` is your cost dial.

### 🚧 Honest limits

- **No email addresses.** Super Lawyers publishes none, for anyone — nobody can scrape one from
  this site. Every row instead carries `contactFormUrl` (that attorney's own contact form),
  `website` at 95–96.5% and `firmProfileUrl` at 100% if you want to enrich the domain yourself.
- **This is a selectee directory, not a bar roll.** 201,215 attorneys is roughly the top 5% who
  made a list, not every licensed attorney. If you need complete coverage of who is licensed, use a
  state bar registry — our [California State Bar scraper](https://apify.com/scrapersdelight/ca-attorney-scraper)
  does that job.
- **The Achievements fields are an upgrade feature** and are ~10% filled in a representative
  statewide sample (`certifications` 6.0%, `verdictsAndSettlements` 5.0%). Read the fill tables
  before you build a workflow that depends on `verdicts` or `honors`.
- **A single-list filter halves your rows.** 65.5% of a representative sample are Super Lawyers,
  54.5% Rising Stars, 58.5% currently selected. The Actor over-fetches to fill your quota, which
  costs time, not money.
- **`currentlySelected` is a definition, not a guess**: the attorney's most recent selection year
  is the current calendar year or later. Super Lawyers labels each list with the year it runs in,
  so "latest >= this year" is exactly "on the live list". `latestSelectionYear` is on every row if
  you want a different cut-off.
- **The proxy is mandatory.** Turning it off does not slow the crawl down, it ends it — datacentre
  exits measured 0/20. RESIDENTIAL is prefilled; leave it.
- **Directory listings show attorneys *serving* a city**, drawn from the surrounding region, so a
  row's own `city` is the attorney's actual office and may be a nearby town. The row tells you
  which; the listing does not.
- **US only.** 50 states plus Washington DC. There is no national, Canadian or other non-US roster.
- **No login, no API key, no CAPTCHA solving service.** Nothing here is behind a paywall or an
  account.

### 🔧 How it works (technical)

The route is: mint a Cloudflare session on the challenge-exempt sitemap path → walk either the
directory listings or the state roster file → dedupe on the profile UUID → fetch each profile once
→ read the JSON-LD `Attorney` block, its `additionalProperty` selection entries and the HTML
Achievements tab → filter → push.

#### The wall, and the ladder that beat it

Every superlawyers.com host sits behind **Cloudflare bot management**. A request from a datacentre
IP comes back **HTTP 403** with `cf-mitigated: challenge`. The full ladder, measured 2026-08-12,
20 profile fetches per rung **through Apify**:

| Transport | Result |
|---|---|
| Direct from the build machine (residential ISP) — *not a shippable rung, no Apify container has a residential IP* | 20/20 — and completely misleading |
| Apify **datacentre**, rotating sessions | **0/20** — 403 |
| Apify **datacentre**, pinned session + cookie jar | **0/20** — 403 |
| Apify **RESIDENTIAL**, rotating sessions | **6/20** — 403 on the rest |
| Apify **RESIDENTIAL**, pinned session + cookie jar, no mint | **0/20** — 403 |
| **Apify RESIDENTIAL + a cookie minted on the sitemap path** | **20/20 = 100%** |

**The way through.** The `/gsm/*.xml.gz` sitemap paths are exempted from the challenge worker at
the edge — the response header says so outright (`cf-debug-worker-skip-sitemaps-and-xml: Ran`).
Fetching one mints a `__cf_bm` bot-management cookie scoped to `Domain=superlawyers.com`, valid on
`profiles.` **and** `attorneys.`. Replaying that cookie from the same exit IP clears the challenge
on ordinary profile and directory pages.

Not every residential exit IP can mint one — a share of any pool is already flagged by Cloudflare
and answers 403 even on the sitemap path (measured: 1 to 11 attempts to find a usable exit,
typically 1–2). The Actor rotates the proxy session until it gets a clean one, and re-mints
automatically if it is challenged mid-crawl.

#### It is rate limited, so it is paced

Past roughly **two requests a second per exit IP** the edge answers **HTTP 429** rather than 403 —
a rate limit, not a block, and it clears on its own. Measured on one minted session:

| Pace | Result |
|---|---|
| 1 worker, 700 ms | **20/20 = 100%** |
| 2 workers, 500 ms | **20/20 = 100%** |
| 3 workers, 300 ms | 18/25 — 7× HTTP 429 |
| 4 workers, 200 ms | 22/25 — 3× HTTP 429 |

So the Actor paces itself, and a 429 permanently eases the pace for the rest of the run rather
than retrying into the same wall. `maxConcurrency` sets how many fetches may be in flight; 2 is
the measured sweet spot. Expect roughly **1,000–1,500 attorneys per hour**; a 100-row
demo took **2 minutes 57 seconds** including 104 listing pages.

**Sustained validation, all of it through Apify RESIDENTIAL:** nine end-to-end runs,
**859 content requests, 859 successes = 100%**, 0 rows lost. Along the way the transport absorbed
8 rate-limit pauses and 2 mid-crawl challenges internally, and rotated past 25 flagged exit IPs
while minting. The largest single run: **201 profile pages + 4 roster files, 0 failures**.

#### State-level URLs are browse pages, not result pages

Only the deepest directory URL — **practice area + state + city** — actually lists attorneys.
`/estate-planning-and-probate/montana/` renders an index of the 15 Montana cities and no attorneys
at all. The Actor detects that and expands the page into its children automatically (capped at two
levels, so practice-area → state → city, and a typo can never start a crawl of the whole site).
You can therefore ask for a state and get attorneys, which the site itself will not do for you.
Dropping `cities` from the prefilled input does exactly this:
`/personal-injury-plaintiff/rhode-island/` expands into its **49 city listings**.

Because a listing shows attorneys *serving* a city, those 49 listings hold only 118 unique
attorneys between them — the first town already has nearly all of them. So enumeration stops once
**six listings in a row add nobody new**, instead of paying for ~100 more paced page fetches that
return people you already have. Widen the search (another practice area, state or city) or use
`source: "stateRoster"` when you want the rest of the state.

#### The run stops itself before the platform does

Every run reads its own time limit and stops **collecting** early enough to fetch and save what it
already queued, then exits Succeeded with a status message saying how many rows it got. You get a
partial dataset with a note instead of a killed run and an empty one. Raise the timeout under
**Input → Run options** (or lower `maxItems`) when you want the full set in one pass.

### 🔁 Duplicates: measured on contiguous pages, not sparse ones

Every attorney is deduplicated on their **profile UUID before anything is fetched**, so the
dataset — and your bill — never holds the same person twice. The duplicate rate at the *listing*
level is real and route-dependent, and it was measured by walking pages back to back:

| Route | Walked | Rows | Unique | Duplicates |
|---|---|---|---|---|
| `/family-law/texas/austin/` pages 1–9 | 9 contiguous pages | 206 | 188 | **8.7%** |
| `/personal-injury-plaintiff/rhode-island/providence/` pages 1–5 | 5 contiguous pages | 119 | 119 | **0.0%** |
| `/personal-injury-plaintiff/rhode-island/` expanded to all 49 cities *(the 100-row Rhode Island run)* | 104 contiguous pages | 2,519 | 119 | **95.3%** |
| `/estate-planning-and-probate/montana/` expanded to all 15 cities | 36 contiguous pages | 128 | 25 | **80.5%** |
| State roster, Rhode Island | whole file | 619 | 619 | **0.0%** |
| State roster, 4 states sampled | 4 files | 230 | 230 | **0.0%** |
| All 51 state rosters | 51 files | 201,215 | 201,215 | **0.0%** |

Two different mechanisms, both real:

- The **8.7%** is promoted `poap` cards repeating on pages 2 and 3 of a paid-placement-heavy
  listing — 17 of the 17 duplicates were that card type. Sparse-offset sampling would never have
  surfaced it.
- The **95.3%** and **80.5%** are what happens when a whole state gets expanded into its cities:
  the listings show attorneys *serving* a city, so one Missoula lawyer legitimately appears under
  Corvallis, Florence, Hamilton, Lolo, Ronan and Stevensville too. Nothing is wrong with the site
  or the crawl — but a scraper that did not dedupe would have billed you 2,519 times for 119 people
  on the 100-row Rhode Island run alone.

Across runs, the rosters are stable and the UUID is the key: keep the `profileId` column and
diff it. Two runs of the same scope return the same people, not new IDs for the same person.

### 🚨 When a run fails

This Actor fails loudly instead of returning a quiet empty dataset:

- **0 attorney links found** → the run throws with the page count and a list of the exact slug
  spellings the site uses. The usual cause is a city slug the site does not have.
- **0 rows emitted** → the run throws and tells you which of the four causes it was: your filters
  removed everything, Cloudflare held (with the blocked/fetched counts), profiles were dead, or the
  page template changed.
- **More than 20% of fetched pages parse to nothing** → the run throws rather than shipping a
  degraded extraction. That is what a template change looks like and it should not be billed as a
  good run.
- **More than 25% of fetches blocked** → the run warns loudly, keeps the good rows, and tells you
  to re-run for the rest.
- **A non-state in `states`, or a `/lawfirm/` URL in `profileUrls`** → error before any fetch.
- There is no legitimate zero-row run for this Actor. A green run always has rows.

### ⚖️ How this differs from our other lawyer scrapers

| Actor | Source | Why you would use it instead |
|---|---|---|
| **Super Lawyers Scraper** (this one) | superlawyers.com | **Peer-selection signal.** The only one with selection years, Rising Stars, and "is this lawyer on the list right now". |
| [**Avvo Scraper**](https://apify.com/scrapersdelight/avvo-scraper) | avvo.com | The Avvo Rating (1–10) and client review scores — consumer-facing reputation, not peer selection. |
| [**California State Bar Attorney Scraper**](https://apify.com/scrapersdelight/ca-attorney-scraper) | State Bar of California | The **licence** record: bar number, status, discipline. Every licensed CA attorney, selectee or not. |
| **Justia Lawyer Directory Scraper** | Justia / Cornell LII | Broad claimed-profile coverage with client ratings, sub-practice-area trees and fee terms. Widest net for volume. |
| **Martindale-Hubbell Attorney Scraper** | martindale.com | The AV Preeminent **peer rating** with its sub-scores and the ISLN. |
| **New York State Bar Attorney Scraper** | NYS registration database | Registration number, admission year, status, firm head-count. |

The wedge here is **the award, not the coverage**. A Justia or state-bar row tells you a lawyer
exists and how to reach them. A Super Lawyers row tells you they were voted into the top 5% of
their state, in which years, and whether that is still true — the difference between a list of
lawyers and a list of lawyers with a reason to buy something this quarter.

Everything we publish: [apify.com/scrapersdelight](https://apify.com/scrapersdelight).

### ❓ FAQ

**Can I get the attorney's email address?**
No, and no one can from this source: Super Lawyers publishes no email address for any attorney.
Each row carries `contactFormUrl` (their own contact form), `phone` at 100%, `website` at 95–96.5%
and `firmProfileUrl` at 100% — enrich the domain elsewhere if you need mailboxes.

**Does it need an account or a login?**
No. It reads only pages the site publishes for crawlers. No login, no API key, no CAPTCHA solving.

**Do I need a proxy?**
Yes — Apify Proxy with the RESIDENTIAL group, and it is prefilled. Datacentre exits returned 403 on
20 of 20 measured requests. Running with the proxy off ends the run rather than slowing it.

**How many attorneys can I get in total?**
201,215 across the 50 states and DC, measured 2026-08-12 by reading all 51 roster files. The
biggest single market is California at 27,420.

**Will two runs give me duplicates?**
Not within a run — attorneys are deduplicated on their profile UUID before they are fetched, so you
are never billed twice for the same person. Across runs, the `profileId` is stable, so diff on it.

**Do I get charged for rows my filters throw away?**
No. Only attorneys delivered to your dataset are charged, at $0.003 each. Fetches, listing pages,
retries and filtered-out profiles are free.

**How do I get only the lawyers who made the list this year?**
Set `currentSelectionsOnly: true`. To find the ones who made it for the *first* time, add
`minYearsSelected: 1` and read `firstSelectionYear` on the row.

**What is the difference between Super Lawyers and Rising Stars?**
Super Lawyers is the main list, capped at the top 5% of lawyers in a state. Rising Stars is the
list for lawyers under 40 or in practice ten years or less, capped at the top 2.5%. A lawyer can
be on both over their career — 22 of the 100 rows on the 100-row Rhode Island run were.

**Why did a run return fewer rows than `maxItems`?**
Because that scope ran out of attorneys. Rhode Island personal injury only has 119 published
attorneys in total, so a 500-row request returns 119 and says so in the log. Add cities, practice
areas or states, or switch to a state roster.

**Can I scrape a whole state?**
Yes — set `source: "stateRoster"` and pick the state; the label in the dropdown tells you how many
attorneys are in it. Use `rosterOrder: "spread"` for a representative cross-section rather than
the upgraded profiles at the front of the file.

**Can I schedule it?**
Yes, with an Apify Schedule. Selection lists refresh annually, so a monthly run is enough to catch
new selectees and lapses.

**Something looks wrong — how do I debug it?**
Read the run log: it prints the enumeration counts, the duplicate rate, the per-field fill and the
transport stats (mints, flagged exits, rate-limit pauses) for that exact run. If rows dried up
mid-run the log names which of the four causes it was.

### ⚠️ Disclaimer

Super Lawyers® is a trademark of Thomson Reuters. This Actor is not affiliated with, endorsed by,
or sponsored by Super Lawyers or Thomson Reuters.

It reads only public directory pages that Super Lawyers publishes for crawlers — including the
roster sitemaps the site advertises for that purpose — and it does not log in, does not solve
CAPTCHAs, and collects no data behind any authentication. The crawl is deliberately paced well
below the rate the site rate-limits at.

Rows describe named individuals and are personal data. You are responsible for complying with
Super Lawyers' terms and with how you use the data — GDPR/CCPA, CAN-SPAM, and state bar attorney
advertising and solicitation rules may all apply to your outreach.

### SEO Keywords

super lawyers scraper, superlawyers.com scraper, attorney scraper, lawyer scraper, attorney data
extraction, legal directory scraper, attorney leads, lawyer leads, law firm leads, rising stars
attorneys, super lawyers list, peer rated attorneys, top attorneys by state, attorney contact data,
lawyer phone numbers, attorney practice area data, legal lead generation, legal tech data, law
firm prospecting, attorney directory api, personal injury lawyer list, family law attorney list,
attorney awards data, lawyer selection years, attorney database export

Found a missing field or want a new filter? Open an issue on the Issues tab.

# Actor input Schema

## `source` (type: `string`):

Directory search = the attorneys.superlawyers.com listings built from the practice areas, states and cities you pick below. Best for a targeted lead list. State roster = every attorney Super Lawyers publishes in a state, read from that state's own roster file — best for full coverage of a market (California 27,420 attorneys, New York 22,751, Texas 15,888, Montana 278, measured 2026-08-12). Specific profile URLs = re-scrape or refresh a list you already have. The price per attorney is the same on all three.

## `practiceAreas` (type: `array`):

Directory search only. All 140 practice areas Super Lawyers publishes, read from the site's own index on 2026-08-12 — pick as many as you like. Each state or city is crawled once per practice area, so five areas × three cities is fifteen listings to walk. Leave empty to take every practice area in the places you list. Ignored when Source is a state roster or profile URLs.

## `states` (type: `array`):

Super Lawyers covers the 50 states plus Washington DC and nothing else. The count next to each state is how many attorneys its roster file held on 2026-08-12 — that is the ceiling for a whole-state run, and your bill is capped by Max results, not by the roster size. Required for a state roster; for a directory search you can use states, cities, or both.

## `cities` (type: `array`):

Optional, directory search only. City slugs exactly as the site writes them — austin, houston, san-francisco, new-york, miami. Leave empty and a state-level listing is expanded into its city listings for you (that is the only level of this site that actually lists attorneys). When you pick several states, pair each city with its state (texas/austin, or "Austin, TX") or every city is tried in every state. Note the listings show attorneys SERVING a city, so a row's own city field is the attorney's actual office, which may be a nearby town.

## `rosterOrder` (type: `string`):

State roster only, and it matters whenever you cap a big state. The roster file is ordered by profile tier: the front is the upgraded, fully-filled profiles, the back is the plain ones. Measured on California's 27,420 attorneys, 25 profiles from each position — the first 25 carried the achievements block on 92% of rows, an even sample across the file on 8%, the last 25 on 0%. Contact data barely moves (website 96% / 92% / 88%). "Richest profiles first" gives you the deepest rows; "Even spread" gives you a representative cross-section of the state, small towns included.

## `profileUrls` (type: `array`):

Full attorney profile URLs, e.g. https://profiles.superlawyers.com/texas/austin/lawyer/jane-doe/00000000-0000-0000-0000-000000000000.html. The UUID at the end identifies the attorney and is required. Firm (/lawfirm/) URLs are a firm page, not an attorney, and are rejected with an error rather than silently producing a half-empty row. Each URL is one fetch and, if it passes your filters, one charged row.

## `selectionType` (type: `string`):

Which peer-selection list an attorney must be on. Super Lawyers is the main list, capped at the top 5% of lawyers in a state. Rising Stars is the under-40 / first-ten-years list, capped at the top 2.5%. "Any" keeps both, which is what you want for coverage; Rising Stars alone is the classic legal-tech buying cohort. On a 200-attorney representative sample, 65.5% carried a Super Lawyers selection and 54.5% a Rising Stars one, so either cut roughly halves the rows a run returns — it fetches more profiles to fill your quota, at no extra charge to you.

## `currentSelectionsOnly` (type: `boolean`):

Keep only attorneys whose most recent selection year is the current calendar year or later — i.e. they are on the list that is live right now, not one they made in 2014. Read against the list you picked above: with "Rising Stars only" it means currently a Rising Star, not currently selected to something. 58.5% of a 200-attorney representative sample were currently selected. Off by default, because a lapsed selectee is still a real firm with a real phone number.

## `minYearsSelected` (type: `integer`):

Keep only attorneys selected at least this many times. 1-2 finds the lawyers who have just made the list (the ones who buy badges, plaques and marketing); 10+ finds long-established partners. Counts the chosen selection list, or both lists combined when Selection list is "Any". Leave at 0 for everyone.

## `minYearsLicensed` (type: `integer`):

Keep only attorneys licensed at least this many years, computed from the "Licensed in <state> since" year on the profile (99.5% fill on a 200-attorney sample). Set 25+ for succession and retirement outreach, or leave at 0 for everyone.

## `withPhoneOnly` (type: `boolean`):

Keep only attorneys who publish a phone number. On by default because a lead you cannot ring is not a lead. Phone measured 100% on a 200-attorney representative sample and 99.3% on a 150-attorney directory sample, so this normally removes nothing.

## `withWebsiteOnly` (type: `boolean`):

Keep only attorneys who link a firm website (96.5% fill on the representative sample). Useful when you plan to enrich the domain for email afterwards, or when you sell to firms that already market online.

## `includeAchievements` (type: `boolean`):

Include the honors, bar activity, certifications, industry groups, verdicts/settlements, pro bono, lectures and other-education arrays — eight fields, so the row goes from 61 columns to 53 when this is off. Only upgraded profiles fill these in — roughly 10% of a representative statewide sample, 32-36% of a directory search — so turning it off makes the rows leaner without losing much. No effect on price or run time.

## `includeBiography` (type: `boolean`):

Include each attorney's full self-written biography. It is long — often 2,000+ characters — so it is off by default. Turn it on when you want copy for personalised outreach. No effect on price or run time.

## `maxItems` (type: `integer`):

Cap the number of attorneys returned. 100 rows = $0.30, 1,000 = $3.00, the whole California roster (27,420) = $82.26. The run stops the moment the cap is reached, mid-listing if need be. The first click is pre-filled at 25 (about $0.08) so you can see the rows before you commit; raise it once you like what comes back. A run that would outlast its own timeout stops early and saves what it has rather than dying — give a big cap a bigger timeout under Run options.

## `maxPagesPerListing` (type: `integer`):

Directory search only: how deep to page through each practice-area/city listing before moving to the next. 25 attorneys per page. Raise it to go deeper in one city, or add more cities and practice areas for broader coverage. Listing pages are not charged — only attorneys returned are.

## `maxConcurrency` (type: `integer`):

How many profile fetches may be in flight. Raising it will NOT make the run much faster: superlawyers.com answers roughly two requests a second per exit IP and then returns HTTP 429, so this Actor paces itself and slows down further whenever it is rate limited. Measured on one minted session: 1 worker at 700ms 20/20, 2 workers at 500ms 20/20, 3 workers at 300ms 18/25 (7× 429), 4 workers at 200ms 22/25. 2 is the sweet spot.

## `proxyConfiguration` (type: `object`):

REQUIRED, and it must be Apify Proxy with the RESIDENTIAL group. superlawyers.com is behind Cloudflare bot management: measured 2026-08-12 through Apify, datacentre exits returned HTTP 403 on 20 of 20 requests, residential-with-rotating-sessions 6 of 20, and residential with the challenge cookie this Actor mints on the sitemap path 20 of 20. Leave this at the default.

## Actor input object example

```json
{
  "source": "directory",
  "practiceAreas": [
    "personal-injury-plaintiff"
  ],
  "states": [
    "rhode-island"
  ],
  "cities": [
    "providence"
  ],
  "rosterOrder": "richestFirst",
  "selectionType": "any",
  "currentSelectionsOnly": false,
  "minYearsSelected": 0,
  "minYearsLicensed": 0,
  "withPhoneOnly": true,
  "withWebsiteOnly": false,
  "includeAchievements": true,
  "includeBiography": false,
  "maxItems": 25,
  "maxPagesPerListing": 20,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `items` (type: `string`):

One row per attorney: name, firm, practice areas, phone, website, office address and lat/lon, year licensed, law school, languages, badges, and the Super Lawyers / Rising Stars selection years.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "source": "directory",
    "practiceAreas": [
        "personal-injury-plaintiff"
    ],
    "states": [
        "rhode-island"
    ],
    "cities": [
        "providence"
    ],
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/superlawyers-attorney-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "source": "directory",
    "practiceAreas": ["personal-injury-plaintiff"],
    "states": ["rhode-island"],
    "cities": ["providence"],
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/superlawyers-attorney-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "source": "directory",
  "practiceAreas": [
    "personal-injury-plaintiff"
  ],
  "states": [
    "rhode-island"
  ],
  "cities": [
    "providence"
  ],
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapersdelight/superlawyers-attorney-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapersdelight/superlawyers-attorney-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gnbwJs3CW4LeP1h6h/builds/KJHaPrnBZkd9usaw3/openapi.json
