Healthcare

Provider Directory Entry

/extract/json

Healthcare provider profile from an insurance network directory or physician finder.

Download the schemahealthcare/provider-directory-entry.json

provider-directory-entry.schema

// names marked ? are optional

npi?:string// National Provider Identifier (NPI). Commonly found in: NPI registry, provider directory.
provider_type:string// Type of healthcare provider. Commonly found in: provider directory, NPI registry. One of: physician, np, pa, therapist, dentist, other.
first_name:string// Provider's first name. Commonly found in: provider directory, profile page.
last_name:string// Provider's last name. Commonly found in: provider directory, profile page.
credentials?:string[]// Professional credentials (e.g., MD, DO, PhD). Commonly found in: provider directory, profile page.
specialty_primary:string// Primary medical specialty. Commonly found in: provider directory, NPI registry.
specialty_secondary?:string[]// Secondary specialties or subspecialties. Commonly found in: provider directory, profile page.
gender?:string// Provider's gender. Commonly found in: provider directory, profile page.
languages?:string[]// Languages spoken by the provider. Commonly found in: provider directory, profile page.
accepting_new_patients?:boolean// Whether the provider is accepting new patients. Commonly found in: provider directory, appointment booking.
telehealth_available?:boolean// Whether telehealth appointments are available. Commonly found in: provider directory, profile page.
accepting_medicaid?:boolean// Whether the provider accepts Medicaid. Commonly found in: provider directory, insurance info.
accepting_medicare?:boolean// Whether the provider accepts Medicare. Commonly found in: provider directory, insurance info.
group_practice_name?:string// Name of the group practice or medical group. Commonly found in: provider directory, profile page.
hospital_affiliations?:string[]// Hospitals where the provider has admitting privileges. Commonly found in: provider directory, hospital website.
address_street?:string// Street address of the practice. Commonly found in: provider directory, Google Maps.
address_city:string// City of the practice. Commonly found in: provider directory, Google Maps.
address_state:string// State of the practice. Commonly found in: provider directory, NPI registry.
address_zip?:string// ZIP code of the practice. Commonly found in: provider directory, NPI registry.
latitude?:number// Latitude coordinate of the practice. Commonly found in: geocoding API, Google Maps.
longitude?:number// Longitude coordinate of the practice. Commonly found in: geocoding API, Google Maps.
phone?:string// Practice phone number. Commonly found in: provider directory, profile page.
website?:string// Practice website URL. Commonly found in: provider directory, profile page.
insurances_accepted?:string[]// Insurance plans accepted. Commonly found in: provider directory, insurance section.
review_rating?:number// Average patient review rating. Commonly found in: Healthgrades, Zocdoc, review platform.
review_count?:number// Total number of patient reviews. Commonly found in: Healthgrades, Zocdoc, review platform.
page_title?:string// Title of the source page. Tabstack auto-fills this from page metadata when left empty.
favicon?:string// Favicon URL of the source page. Tabstack auto-fills this from page metadata when left empty.

Try it live

A sample Provider Directory Entry document, generated from the schema. Edit it, or paste a real response, and see it checked against the schema instantly. It runs in your browser, nothing is sent anywhere.

your-output.json
validation

Valid, matches Provider Directory Entry

Every required field is present and each value matches its type. Extra fields are allowed. A field the page does not carry is not guaranteed to come back as null, so check values rather than only checking for null.

/extract/json

Copy-paste usage

The same call in TypeScript, Python, and curl. Point it at your own URL and go. The schema drives the response, so you get back the fields you asked for instead of a page to parse.

Features

  • Typed TypeScript and Python SDKs
  • One call, no parsing code and no second LLM pass
  • The same field names on every request, even when the page layout changes
provider-directory-entry.ts
// curl -sfLO https://raw.githubusercontent.com/Mozilla-Ocho/tabstack-schemas/main/healthcare/provider-directory-entry.json
import Tabstack from '@tabstack/sdk'
import schema from './provider-directory-entry.json' with { type: 'json' }

const client = new Tabstack() // reads TABSTACK_API_KEY from the environment

try {
  const data = await client.extract.json({
    url: 'https://example.org/clinical-trial/NCT00000000',
    json_schema: schema,
    effort: 'standard', // 'min' | 'standard' | 'max'
  })

  console.log(data)
} catch (err) {
  console.error('Extraction failed:', err)
}

Ship this schema in one call.

Pass a URL, get matching JSON back. Free to start, no extraction layer to maintain.