Psychology Today Therapist Scraper
Psychology Today Therapist Scraper
Scrape therapist and counselor profiles from Psychology Today, the largest US therapist directory with roughly 200,000 listings. Returns names, credentials, specialties, insurance accepted, fees, languages, addresses, phones, bios, and license details — the fields most CRMs ask for, plus a few you didn't know you wanted.
Psychology Today Scraper Features
- Filters by U.S. state, ZIP code, or any Psychology Today category slug — specialty, insurance brand, language, treatment orientation, you name it
- Returns 35+ structured fields per profile, including the things therapists rarely volunteer in plain HTML
- Reads Psychology Today's embedded SPA payload directly. No browser, no Playwright, no waiting for hydration
- Formats phone numbers consistently as
(XXX) XXX-XXXX - Uses US residential proxies — Psychology Today aggressively blocks datacenter IPs
- Pay-per-event pricing at roughly $0.002 per profile, which is less than most paid lead lists charge per record
Who Uses Psychology Today Data?
- EHR and practice-management vendors — build targeted outreach lists for SimplePractice, TherapyNotes, TheraNest competitors
- Insurance billing services — segment therapists by insurance panels accepted and license type
- Telehealth platforms — recruit providers who already offer online sessions, filtered by state license
- Mental-health analytics teams — map provider density, fee distributions, and specialty coverage by region
- CEU and training providers — segment by treatment orientation and credentials
- Marketing agencies serving private-practice therapists — reach prospects by city, specialty, or modality
How Psychology Today Scraper Works
- You provide states, ZIP codes, or direct seed URLs — and an optional category slug to narrow by specialty, insurance, or language. Run with the defaults if you just want a sample.
- The scraper paginates through Psychology Today's directory listings (20 results per page, configurable depth) and collects therapist profile URLs.
- Each profile is fetched directly and parsed from the embedded SPA payload. That payload contains the fully-hydrated profile, so one HTTP request returns every field — no JavaScript execution, no second round-trip.
- Records save to the dataset as they're scraped. The run stops when
maxItemsis reached.
Input
Scrape one state
{
"states": ["CA"],
"maxPages": 5,
"maxItems": 100,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
},
"sp_intended_usage": "Lead generation for therapy practice software",
"sp_improvement_suggestions": "n/a"
}
Filter by specialty
{
"states": ["NY", "NJ"],
"category": "anxiety",
"maxItems": 200,
"sp_intended_usage": "Specialty-targeted outreach",
"sp_improvement_suggestions": "n/a"
}
Filter by insurance
{
"states": ["TX"],
"category": "aetna",
"maxItems": 50,
"sp_intended_usage": "Aetna network analysis",
"sp_improvement_suggestions": "n/a"
}
Search by ZIP
{
"zipCodes": ["90025", "10001", "94110"],
"maxPages": 3,
"maxItems": 60,
"sp_intended_usage": "Local therapist directory build",
"sp_improvement_suggestions": "n/a"
}
Scrape specific profiles directly
{
"seedUrls": [
{ "url": "https://www.psychologytoday.com/us/therapists/alexa-golding-los-angeles-ca/1001791" }
],
"maxItems": 1,
"sp_intended_usage": "Profile enrichment",
"sp_improvement_suggestions": "n/a"
}
Input Parameters
| Field | Type | Default | Description |
|---|---|---|---|
| states | string[] | ["CA"] |
One or more U.S. state codes. Each state is paginated separately. |
| zipCodes | string[] | — | List of 5-digit ZIP codes. Each becomes a radius search on psychologytoday.com. |
| category | string | — | Optional category slug applied to every state/ZIP search. Examples: anxiety, trauma-and-ptsd, aetna, spanish, cognitive-behavioral-cbt. |
| seedUrls | array | — | Direct listing or profile URLs. When provided, takes precedence — scoped state/ZIP/category inputs are ignored for those URLs. |
| maxPages | integer | 5 | Maximum pagination depth per state/ZIP/seed. Each page returns 20 profiles. |
| maxItems | integer | 100 | Maximum total profiles to scrape across all seeds. |
| proxyConfiguration | object | Apify residential US | Proxy settings. Datacenter proxies are blocked by Psychology Today, so residential is the only realistic option. |
Psychology Today Scraper Output Fields
{
"profileId": 1001791,
"profileUrl": "https://www.psychologytoday.com/us/therapists/alexa-golding-los-angeles-ca/1001791",
"name": "Alexa Golding",
"firstName": "Alexa",
"lastName": "Golding",
"pronouns": "she, her",
"credentials": "LMFT",
"jobTitle": "Family Therapist",
"verificationStatus": "VERIFIED",
"practiceName": "",
"address": "Los Angeles, CA 90025",
"city": "Los Angeles",
"state": "CA",
"stateName": "California",
"zip": "90025",
"countryCode": "US",
"phone": "(310) 789-2157",
"photoUrl": "https://photos.psychologytoday.com/.../320x400.jpeg",
"bio": "You've always been the caretaker for others...",
"yearsInPractice": 9,
"yearPracticeStarted": 2017,
"degree": "MA Clinical Psychology",
"institution": "The Chicago School of Professional Psychology",
"licenseNumber": "130043",
"licenseState": "CA",
"licenseExpiration": "2027-12-01",
"individualSessionCost": 225,
"couplesSessionCost": 250,
"initialSessionCost": 0,
"slidingScale": false,
"acceptsOnline": true,
"acceptsInPerson": false,
"acceptingNewClients": true,
"issues": ["ADHD", "Anxiety", "Codependency", "Trauma and PTSD"],
"treatmentOrientations": ["Attachment-based", "Cognitive Behavioral (CBT)", "Mindfulness-based (MBCT)"],
"modalities": ["Individuals", "Couples"],
"ageGroups": ["Adults"],
"languages": ["English"],
"insurance": ["Aetna", "Anthem", "Blue Cross", "Optum", "UnitedHealthcare"],
"paymentMethods": ["American Express", "Mastercard", "Visa"],
"lastUpdated": "2026-04-20T23:52:31-07:00"
}
| Field | Type | Description |
|---|---|---|
| profileId | number | Numeric Psychology Today profile ID |
| profileUrl | string | Full profile URL on psychologytoday.com |
| name | string | Therapist full name |
| firstName | string | First name |
| lastName | string | Last name |
| pronouns | string | Self-reported pronouns |
| credentials | string | Credential suffix (e.g. LMFT, PsyD, Licensed Psychologist) |
| jobTitle | string | Profile health-role label (e.g. Marriage & Family Therapist) |
| verificationStatus | string | VERIFIED if Psychology Today has confirmed the license |
| practiceName | string | Group practice or company name (when present) |
| address | string | Primary practice formatted as City, ST ZIP |
| city | string | Primary practice city |
| state | string | Primary practice state code |
| stateName | string | Primary practice state full name |
| zip | string | Primary practice ZIP code |
| countryCode | string | Country code |
| phone | string | Formatted phone number |
| photoUrl | string | Profile photo URL |
| bio | string | Combined personal-statement paragraphs |
| yearsInPractice | number | Years in clinical practice |
| yearPracticeStarted | number | Year practice started |
| degree | string | Highest degree held |
| institution | string | Educational institution |
| licenseNumber | string | Primary license identifier |
| licenseState | string | Primary license issuing state |
| licenseExpiration | string | License expiration date (YYYY-MM-DD) |
| individualSessionCost | number | Cost per individual session in USD (0 if undisclosed) |
| couplesSessionCost | number | Cost per couples session in USD (0 if undisclosed) |
| initialSessionCost | number | Cost for initial session in USD (0 if undisclosed) |
| slidingScale | boolean | Whether the therapist offers sliding-scale fees |
| acceptsOnline | boolean | Whether the therapist offers online / telehealth sessions |
| acceptsInPerson | boolean | Whether the therapist offers in-person sessions |
| acceptingNewClients | boolean | Whether the therapist is currently accepting new clients |
| issues | string[] | Issues or specialties (anxiety, trauma, ADHD, etc.) |
| treatmentOrientations | string[] | Treatment orientations (CBT, DBT, EMDR, etc.) |
| modalities | string[] | Modalities offered (Individuals, Couples, Group, Family) |
| ageGroups | string[] | Age groups served |
| languages | string[] | Languages spoken |
| insurance | string[] | Insurance plans accepted |
| paymentMethods | string[] | Accepted payment methods |
| lastUpdated | string | ISO timestamp of the profile's last update on psychologytoday.com |
FAQ
How do I scrape Psychology Today?
Psychology Today Scraper handles it. Pick a state or ZIP, optionally add a category filter, set a maxItems cap, and run. The scraper paginates the directory and pulls each profile's full data from the embedded SPA payload — no browser required.
What data can I get from Psychology Today?
Psychology Today Scraper returns 35+ fields per therapist, including name, credentials, practice address, phone, fee structure (individual, couples, initial, sliding-scale flag), session formats (online vs in-person), license number and expiration, insurance accepted, languages, treatment orientations, and a full bio. Email and external website URLs are gated behind a click-through interstitial on the site itself, so those two fields are not included.
How much does Psychology Today Scraper cost to run?
Psychology Today Scraper uses pay-per-event pricing — $0.10 per actor start plus $0.001 per record scraped. A 1,000-profile run costs roughly $1.10. Apify residential proxy usage is metered separately by Apify.
Does Psychology Today Scraper need proxies?
Psychology Today Scraper requires Apify residential proxies. Datacenter IPs get 403'd within ~100 requests, and most public free proxies are already blocked. The default proxy configuration in the input schema is set to US residential — leave it alone unless you have a reason not to.
Can I filter by insurance or specialty?
Psychology Today Scraper supports any Psychology Today category slug via the category input. That covers specialties (anxiety, trauma-and-ptsd), treatment orientations (cognitive-behavioral-cbt, emdr), insurance brands (aetna, bluecross, kaiser), languages (spanish, mandarin), and ethnicities. Browse the slugs on psychologytoday.com — the URL after ?category= is exactly what to pass.
How fresh is the data?
Psychology Today Scraper returns whatever Psychology Today is showing right now. Each record includes a lastUpdated field so you can see when the therapist last edited their profile.
Need More Features?
Need custom fields, additional country directories (UK, Canada, Australia), or a different filter? File an issue or get in touch.
Why Use Psychology Today Scraper?
- Affordable — about $0.002 per profile after the start fee, which beats every paid therapist directory we've checked
- Complete output — 35+ structured fields per profile, including fees, sliding-scale flag, license details, and treatment orientations that most directory scrapers skip
- Fast — pulls profile data from the embedded SPA payload in a single request, no browser hydration overhead