Discover/GoodTherapy API
live

GoodTherapy APIgoodtherapy.org

Search GoodTherapy.org therapists by location, specialty, insurance, and more. Extract full profiles with credentials, approach, and contact details.

Endpoint health
verified 4d ago
browse_locations
get_facets
search_therapists
get_therapist_profile
4/4 passing latest checkself-healing
Endpoints
4
Updated
20d ago

What is the GoodTherapy API?

The GoodTherapy.org API provides 4 endpoints for searching and extracting therapist data from one of the largest US therapist directories. The search_therapists endpoint returns paginated lists of providers filterable by ZIP code, radius, specialty, insurance, therapeutic model, gender, and pricing. Profile data includes credentials, practice description, verified status, and telehealth availability.

Try it
Comma-separated age group IDs from get_facets (e.g. '1,3' for Children and Adults)
Search for a specific therapist by name
Page number for pagination (1-based)
Radius in miles from the zipcode location
Comma-separated therapeutic model IDs from get_facets (e.g. '16,33' for CBT and DBT)
Comma-separated gender IDs (1: Female, 2: Male, 3: Non-Binary)
Comma-separated pricing IDs from get_facets (e.g. 'sliding_scale', 'free_initial_consultation')
ZIP code or city name to search near (e.g. '10001' or 'New York')
Comma-separated concern IDs from get_facets (e.g. '1,27' for Abuse and Depression)
Comma-separated industry IDs from get_facets (e.g. '7,8' for LGBTQ+ and BIPOC)
Comma-separated language IDs from get_facets (e.g. '1,52' for English and Spanish)
Comma-separated service IDs from get_facets (e.g. '9' for Telehealth)
Comma-separated insurance company IDs from get_facets (e.g. '12' for Aetna)
Comma-separated specialty IDs from get_facets (e.g. '4,7' for Anxiety and Depression)
Comma-separated accessibility IDs from get_facets (e.g. '1,4' for Accessible Parking and Wheelchair Accessible Building)
api.parse.bot/scraper/38ef7adb-b8db-415b-abb1-39e8987b9093/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/38ef7adb-b8db-415b-abb1-39e8987b9093/search_therapists?age=3&name=Smith&page=1&miles=1&model=1&gender=1&pricing=free_initial_consultation&zipcode=10001&concerns=2&industry=8&language=1&services=9&insurance=all&specialty=1&accessibility=1' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace goodtherapy-org-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: GoodTherapy SDK — search therapists, browse filters, and drill into profiles."""
from parse_apis.GoodTherapy_org_API import GoodTherapy, Pricing, State, TherapistNotFound

client = GoodTherapy()

# Fetch the filter catalog to discover available specialties and services.
catalog = client.filter_catalogs.get()
print("Specialties available:", type(catalog.availableSpecialties))

# Search for therapists near NYC offering sliding scale pricing.
for therapist in client.therapists.search(zipcode="10001", pricing=Pricing.SLIDING_SCALE, limit=3):
    print(therapist.full_name, therapist.city_state, therapist.verified)

# Drill into one therapist's full profile via the instance method.
therapist = client.therapists.search(zipcode="10001", limit=1).first()
if therapist:
    try:
        profile = therapist.profile()
        print(profile.name, profile.phone, profile.verified)
    except TherapistNotFound as exc:
        print(f"Profile removed: {exc}")

# Browse locations — list cities in California.
for loc in client.locations.list(state=State.CA, limit=5):
    print(loc.name, loc.url)

print("exercised: filter_catalogs.get / therapists.search / therapist.profile / locations.list")
All endpoints · 4 totalmissing one? ·

Search for therapists by location (ZIP or city), radius, and various filters (specialty, insurance, etc.). Returns a paginated list of therapist summaries. Either zipcode or name should be provided. Results are paginated with approximately 20 therapists per page.

Input
ParamTypeDescription
agestringComma-separated age group IDs from get_facets (e.g. '1,3' for Children and Adults)
namestringSearch for a specific therapist by name
pageintegerPage number for pagination (1-based)
milesintegerRadius in miles from the zipcode location
modelstringComma-separated therapeutic model IDs from get_facets (e.g. '16,33' for CBT and DBT)
genderstringComma-separated gender IDs (1: Female, 2: Male, 3: Non-Binary)
pricingstringComma-separated pricing IDs from get_facets (e.g. 'sliding_scale', 'free_initial_consultation')
zipcodestringZIP code or city name to search near (e.g. '10001' or 'New York')
concernsstringComma-separated concern IDs from get_facets (e.g. '1,27' for Abuse and Depression)
industrystringComma-separated industry IDs from get_facets (e.g. '7,8' for LGBTQ+ and BIPOC)
languagestringComma-separated language IDs from get_facets (e.g. '1,52' for English and Spanish)
servicesstringComma-separated service IDs from get_facets (e.g. '9' for Telehealth)
insurancestringComma-separated insurance company IDs from get_facets (e.g. '12' for Aetna)
specialtystringComma-separated specialty IDs from get_facets (e.g. '4,7' for Anxiety and Depression)
accessibilitystringComma-separated accessibility IDs from get_facets (e.g. '1,4' for Accessible Parking and Wheelchair Accessible Building)
Response
{
  "type": "object",
  "fields": {
    "page": "integer current page number",
    "therapists": "array of therapist summary objects",
    "total_count": "integer total number of matching therapists"
  },
  "sample": {
    "data": {
      "page": 1,
      "therapists": [
        {
          "id": 94555,
          "slug": "gabe-lopez-social-worker",
          "phone": "3232193449",
          "verified": true,
          "full_name": "Gabe Lopez LMSW",
          "image_url": "https://www.goodtherapy.org/thumbs/160x160/dbimages/94555--.jpg",
          "last_name": "Lopez",
          "city_state": "New York, NY 10001",
          "first_name": "Gabe",
          "telehealth": false,
          "credentials": "LMSW",
          "profile_url": "https://www.goodtherapy.org/therapists/profile/gabe-lopez-social-worker",
          "organization": "",
          "sliding_scale": false,
          "practice_summary": "",
          "free_consultation": false,
          "approach_to_helping": "Looking for a therapist can feel daunting..."
        }
      ],
      "total_count": 193
    },
    "status": "success"
  }
}

About the GoodTherapy API

Search and Filter Therapists

The search_therapists endpoint accepts a zipcode parameter (ZIP code or city name), a miles radius (1–250), and a set of comma-separated filter IDs covering age groups, therapeutic models, genders, pricing options, and more. Results are paginated via the page parameter and each response includes a total_count integer alongside an array of therapist summaries. Each summary exposes id, full_name, slug, phone, city_state, verified, and telehealth flags. A name parameter lets you search for a specific therapist by name instead of location.

Filter Facets

Before constructing filtered searches, call get_facets to retrieve all valid filter IDs. The response covers availableAges, availableModels, availableGenders, availablePricing, availableConcerns, availableServices, availableCountries, availableLanguages, availableIndustries, and availableInsurances. Each category returns key-name pairs you can pass directly into search_therapists parameters such as model, age, gender, and pricing.

Detailed Therapist Profiles

Pass a slug from search results into get_therapist_profile to retrieve the full profile. The response includes name with credentials, phone, a description string covering the therapist's clinical approach, a verified boolean, and a details object whose keys are section headings (such as specialties, education, and insurance accepted) mapped to arrays of items or text. Slugs follow a name-date format (e.g. jane-smith-20150101) and are stable across requests.

Browse by Location

The browse_locations endpoint lets you enumerate the directory's geographic coverage without a prior search. Called without parameters it returns all US states as name-and-URL objects. Pass a lowercase state abbreviation such as ca or ny to list cities within that state, each with its own directory URL. This is useful for building location-aware tooling or validating coverage before querying a specific area.

Reliability & maintenanceVerified

The GoodTherapy API is a managed, monitored endpoint for goodtherapy.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when goodtherapy.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official goodtherapy.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
4d ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a therapist-finder app that filters by ZIP code, insurance, and therapeutic model using search_therapists
  • Aggregate therapist profiles with credentials and practice descriptions for a mental health resource directory
  • Identify telehealth-available providers in a given radius using the telehealth flag on therapist summaries
  • Map therapist density by state or city using browse_locations combined with search_therapists pagination
  • Populate a CRM with therapist contact data and verified status from get_therapist_profile
  • Research therapeutic model availability (e.g. CBT, DBT) across US metro areas using model filter IDs from get_facets
  • Monitor new or updated therapist listings by periodically querying search_therapists for a target ZIP code
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does GoodTherapy have an official developer API?+
GoodTherapy does not publish a public developer API. This Parse API provides structured access to therapist search and profile data from the GoodTherapy.org directory.
What does get_therapist_profile return beyond what search_therapists includes?+
search_therapists returns summary fields: id, full_name, slug, phone, city_state, verified, and telehealth. get_therapist_profile adds a full description of the therapist's clinical approach, credential-formatted name, and a details object with section-level content such as specialties, education, and accepted insurances. The slug from search results is the required input.
How do I know which IDs to pass into the model, age, or gender filters?+
Call get_facets first. It returns all valid key-name pairs for every filterable dimension — including availableModels, availableAges, availableGenders, availablePricing, availableInsurances, and more. Use the returned keys directly as comma-separated values in search_therapists parameters.
Does the API cover therapist reviews or client ratings?+
Not currently. The API covers therapist profile content, contact details, credentials, and directory search results. It does not expose user-submitted reviews or ratings. You can fork this API on Parse and revise it to add an endpoint targeting that data.
Is search coverage limited to the United States?+
search_therapists is designed around US ZIP codes and city names, and browse_locations enumerates US states and cities. The get_facets response includes an availableCountries field, indicating some international data may exist in the directory, but non-US geographic search is not a documented primary use case of the current endpoints. You can fork this API on Parse and revise it to add a dedicated international location search endpoint.
Page content last updated . Spec covers 4 endpoints from goodtherapy.org.
Related APIs in HealthcareSee all →
therapytribe.com API
Search for therapists in your area and access their credentials, specialties, pricing, and client focus areas all in one place. Find the right mental health professional by filtering through available locations and detailed therapy type information.
psychologytoday.com API
Find therapists in Psychology Today's directory by US state and specialty, viewing details like their name, credentials, role, and location. Browse through paginated results to discover the right mental health professional for your needs.
arztsuche.116117.de API
Find therapists and doctors across Germany by postal code, radius, or medical specialty, getting detailed results with names, addresses, distances, and contact information. Quickly locate healthcare providers that match your needs using Germany's official 116117 doctor search portal.
recovery.com API
Search for recovery centers across the country, browse available locations, and access detailed information about specific facilities including services, reviews, and contact details on Recovery.com. Find the right treatment center by location or search criteria to compare options and make informed decisions about recovery resources.
lawyers.com API
Search and discover lawyers and law firms with detailed profiles, client reviews, and practice area information. Find legal articles and featured firms by specialty to help you locate the right legal representation for your needs.
zocdoc.com API
Search for doctors and medical practices on Zocdoc by specialty and location. Retrieve provider profiles, accepted insurance, office locations, patient reviews, and appointment availability.
lybrate.com API
Search for doctors across Indian cities and specialties, view detailed profiles with patient reviews and services, and discover clinic information and health content all in one place. Find the right healthcare provider by browsing ratings, qualifications, and medical expertise tailored to your needs.
senioradvisor.com API
Search and compare senior care facilities across the US by location, ZIP code, or state. Access detailed information including pricing by room type, ratings, user reviews, available services, and care types such as assisted living, memory care, nursing homes, and more.