Psychology Today Scraper (Cheap) avatar

Psychology Today Scraper (Cheap)

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Psychology Today Scraper (Cheap)

Psychology Today Scraper (Cheap)

PsychologyToday therapist scraper that pulls therapist profiles with specialties, insurance, contact details, and session formats from psychologytoday.com, so healthcare recruiters and mental health directories get clean lead data without clicking through profiles manually.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Data API

Data API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Psychology Today Therapist Scraper

Psychology Today Therapist Scraper

Finding the right therapist data on Psychology Today means clicking through page after page of directory cards, then opening each profile to read the credentials, insurance, and specialties. Doing that by hand for a whole city is a slog. This scraper does the clicking for you: pick a provider type, name the places you want, and it returns each listing as one tidy row — name, license, location, phone, and a bio excerpt straight from the cards, or the full profile with specialties, insurance, therapy approaches, and schooling when you ask for the deeper pass. Run one location or a stack of them.

What you get

Each provider comes back as one row with a steady shape, so your columns line up when you load the results into a sheet or database. The data falls into a few groups:

  • IdentitytherapistName, credentialText, licenseAbbr, licenseId, isVerified
  • Contact and placeprofileLink, photoLink, websiteLink, phoneNumber, officeLocation, postalCode, fullOfficeAddress
  • Practice detailsspecialtyList, concernsTreated, therapyApproaches, insurancePlans, sessionFee, clientGroups, spokenLanguages, meetingFormats, practiceYears, isLgbtqAffirming
  • Bio and metadatabioExcerpt, fullBio, educationList, collectedAt, errorMessage

Card data (quick) mode fills the fields shown on the listing cards. Whole profile (rich) mode opens each profile page and fills the rest.

Quick start

  1. Press Try for free and open the input form.
  2. Choose a Provider type (Therapists, Psychiatrists, Treatment Centers, or Support Groups).
  3. Add one or more Search locations like il/chicago or a whole-state slug like oregon.
  4. Pick an Extraction depth — card data for speed, whole profile for the full record.
  5. Set a Maximum profiles to return to cap the run, then press Start and export as JSON, CSV, Excel, or XML.

How it works

Use cases

  • Referral networks — build a searchable list of providers by city, specialty, and accepted insurance
  • Healthcare market research — measure provider density and coverage gaps across regions
  • Insurance and benefits teams — check which carriers a set of providers accepts
  • Academic and policy research — study access to care by location, language, or modality
  • Directory and lead building — turn a directory search into a structured contact list

Input

FieldTypeRequiredDescription
searchLocationsarray of stringsYesPlaces to search, as state-abbr/city (e.g. il/chicago) or a whole-state slug (e.g. oregon). Each entry is searched in turn.
providerCategorystringNoWhich directory to pull from: Therapists, Psychiatrists, Treatment Centers, or Support Groups. Default Therapists.
extractionDepthstringNolist reads the listing cards only (fast); full opens each profile for the complete record. Default list.
resultsLimitintegerNoTotal profiles to collect across all locations. Default 25.
minPauseMsintegerNoShortest wait, in milliseconds, between requests. Default 1000.
maxPauseMsintegerNoLongest wait, in milliseconds, between requests; each pause is randomized within the range. Default 2000.
retryWhenBlockedbooleanNoRetry a request automatically when it is briefly blocked, up to 3 attempts. Default true.

Example input

{
"providerCategory": "Therapists",
"searchLocations": ["il/chicago", "wa/seattle", "ma/boston"],
"extractionDepth": "full",
"resultsLimit": 25,
"minPauseMs": 1000,
"maxPauseMs": 2000,
"retryWhenBlocked": true
}

Output

Each provider becomes one JSON record. Empty values are dropped so the rows stay compact, and the fields you get depend on the extraction depth you chose.

Example output

{
"therapistName": "Dana Whitfield, LCSW",
"profileLink": "https://www.psychologytoday.com/us/therapists/dana-whitfield-chicago-il/987654",
"photoLink": "https://cdn.psychologytoday.com/assets/therapy-directory/profiles/987654.jpg",
"credentialText": "Clinical Social Work/Therapist, LCSW",
"licenseAbbr": "LCSW",
"licenseId": "149.012345",
"officeLocation": "Chicago, IL",
"postalCode": "60607",
"phoneNumber": "(312) 555-0142",
"websiteLink": "https://www.danawhitfield-therapy.com",
"isVerified": true,
"practiceYears": 11,
"specialtyList": ["Anxiety", "Depression", "Trauma and PTSD"],
"concernsTreated": ["Grief", "Life Transitions", "Self Esteem"],
"therapyApproaches": ["Cognitive Behavioral (CBT)", "EMDR", "Mindfulness-Based (MBCT)"],
"insurancePlans": ["Aetna", "Blue Cross Blue Shield", "Cigna"],
"sessionFee": "$150-$190",
"clientGroups": ["Adults", "Couples"],
"spokenLanguages": ["English", "Spanish"],
"meetingFormats": ["In-person", "Online"],
"isLgbtqAffirming": true,
"bioExcerpt": "I help adults work through anxiety, grief, and major life changes using practical, evidence-based methods...",
"fullBio": "I help adults work through anxiety, grief, and major life changes using practical, evidence-based methods. My approach is collaborative and paced to what you need...",
"educationList": ["MSW, University of Chicago", "BA, DePaul University"],
"fullOfficeAddress": "210 West Washington Street, Chicago, IL, 60607",
"collectedAt": "2026-06-29T12:00:00+00:00",
"errorMessage": null
}

Output fields

FieldTypeDescription
therapistNamestringFull name plus any credential suffix
profileLinkstringDirect URL to the Psychology Today profile
photoLinkstringURL of the provider's profile photo
credentialTextstringThe whole credential line from the card, e.g. 'Psychologist, PhD'
licenseAbbrstringLicense code parsed from the credentials, e.g. LCSW, PsyD, MD
licenseIdstringProfessional license number (whole-profile mode only)
officeLocationstringCity and state of the main office
postalCodestringZIP or postal code of the office
phoneNumberstringContact phone number
websiteLinkstringPersonal or practice website (whole-profile mode only)
isVerifiedbooleanTrue when the provider has a verified badge
practiceYearsintegerYears in practice (whole-profile mode only)
specialtyListarrayListed areas of focus (whole-profile mode only)
concernsTreatedarrayMental health concerns handled (whole-profile mode only)
therapyApproachesarrayTreatment methods such as CBT, DBT, EMDR (whole-profile mode only)
insurancePlansarrayAccepted insurance carriers (whole-profile mode only)
sessionFeestringSession cost or range (whole-profile mode only)
clientGroupsarrayAdults, Teens, Couples, Families (whole-profile mode only)
spokenLanguagesarrayLanguages sessions can run in (whole-profile mode only)
meetingFormatsarrayIn-person, Online, or both (whole-profile mode only)
isLgbtqAffirmingbooleanTrue when the practice is described as LGBTQ+ affirming (whole-profile mode only)
bioExcerptstringShort clip of the personal statement, up to 300 characters
fullBiostringComplete statement, up to 3000 characters (whole-profile mode only)
educationListarrayDegrees, training, and certifications (whole-profile mode only)
fullOfficeAddressstringComplete street address (whole-profile mode only)
collectedAtstringISO 8601 timestamp of when the record was captured
errorMessagestringReason a profile failed; null on success

Tips for best results

  • Start with a small run. Set resultsLimit to 10–20 while you confirm the locations and fields match your pipeline, then raise it for the full pull.
  • Use card data mode for speed. When you only need names, locations, and phone numbers, list mode skips the per-profile requests and finishes much faster.
  • Switch to whole profile for the rich fields. Specialties, insurance, therapy approaches, schooling, and fees only come from the profile pages, so set extractionDepth to full for those.
  • Leave the auto-retry on. retryWhenBlocked clears the occasional temporary block on its own.
  • Widen the pause range if blocks pile up. Raising minPauseMs and maxPauseMs spaces out requests and keeps you comfortably under rate limits.

How can I use Psychology Today therapist data?

How can I use the Psychology Today Therapist Scraper to build a referral list? Choose a provider type, list the cities you cover with searchLocations, and run whole-profile mode. Each provider comes back with name, credentials, accepted insurance, specialties, and contact details — a ready-made, filterable referral list you can sort by location or modality.

How can I collect therapist contact details across several cities at once? Add every location to searchLocations in one run and the scraper works through them in order, collecting therapistName, phoneNumber, officeLocation, and profileLink for each. Card data mode keeps it quick when contact details are all you need.

How can I research mental health care access by insurance or language? Run whole-profile mode and read the insurancePlans and spokenLanguages fields alongside officeLocation. Grouping the rows by carrier or language shows where coverage is strong and where gaps sit — useful for benefits teams and access-to-care studies.

How can I export Psychology Today provider data to a spreadsheet? After a run finishes, export the dataset as CSV or Excel straight from Apify. Every record shares the same field names, so it drops cleanly into a spreadsheet or database with no reshaping.

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

Support

Questions, feature requests, or a field you'd like added? Reach out at data.apify@proton.me and we'll get back to you.