Zocdoc providers API

Endpoints to retrieve providers within the developer's directory.

OpenAPI Specification

zocdoc-providers-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: '1.176'
  title: API Documentation appointments providers API
  description: Endpoints for booking, cancelling, and rescheduling appointments, including retrieving current appointment statuses and updated information.
servers:
- url: https://api-developer-sandbox.zocdoc.com
  description: Sandbox
- url: https://api-developer.zocdoc.com
  description: Production
tags:
- name: providers
  description: Endpoints to retrieve providers within the developer's directory.
  x-displayName: Providers
paths:
  /v1/providers:
    get:
      tags:
      - providers
      summary: Get providers by NPIs
      description: 'Retrieves specific providers within the developer''s directory by NPI search. This endpoint searches active providers that are listed on Zocdoc. It returns the provider''s information (such as name, gender identity, specialty), location information and provider location IDs which can be used to look up availability and book appointments. Every developer has a designated provider directory jointly defined and onboarded in partnership with Zocdoc.


        The `provider_location_id` returned in the response can be used to retrieve availability in the endpoint /v1/provider_locations/availability.

        '
      security:
      - ClientCredentialsFlow: []
      - AuthorizationCodeFlow: []
      operationId: getProviders
      parameters:
      - name: npis
        in: query
        description: A comma-delimited list of Provider NPI numbers. A maximum of 50 items will be accepted at a time.
        required: true
        schema:
          type: string
          example: 1234567891,0123456789
      - name: insurance_plan_id
        in: query
        description: The Zocdoc ID of the patient's insurance plan. Used to determine if provider takes patient's insurance in response. Use the [Get Insurance Plans](#operation/getInsurancePlans) endpoint to retrieve available plans.
        required: false
        schema:
          type: string
          example: ip_2224
      - name: latitude
        in: query
        description: Latitude of the patient's location. Must be provided together with longitude. When provided, response includes distance and nearest match for each physical location.
        required: false
        schema:
          type: number
          format: float
          minimum: -90
          maximum: 90
      - name: longitude
        in: query
        description: Longitude of the patient's location. Must be provided together with latitude. When provided, response includes distance and nearest match for each physical location.
        required: false
        schema:
          type: number
          format: float
          minimum: -180
          maximum: 180
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderResult'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /v1/providers/{provider_id}/reviews:
    get:
      tags:
      - providers
      description: Get review summary for a provider by their Zocdoc provider ID.
      security:
      - ClientCredentialsFlow: []
      - AuthorizationCodeFlow: []
      operationId: getProviderReviews
      parameters:
      - name: provider_id
        in: path
        description: The Zocdoc provider ID.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderReviewsResponse'
        '400':
          description: Invalid request parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Provider not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
      summary: Get Provider Reviews
components:
  schemas:
    BaseResult:
      required:
      - request_id
      type: object
      properties:
        request_id:
          type: string
          description: Unique request identifier for tracing
    BaseProvider:
      type: object
      properties:
        provider_id:
          type: string
          description: The Zocdoc provider ID
        npi:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        title:
          type: string
        full_name:
          type: string
        gender_identity:
          type: string
          description: 'Possible values include: Female, Male, Non-binary'
        specialties:
          type: array
          items:
            type: string
        specialty_ids:
          type: array
          items:
            type: string
        default_visit_reason_id:
          type: string
        visit_reason_ids:
          type: array
          items:
            type: string
        statement:
          type: string
        provider_photo_url:
          type: string
          description: Protocol-relative URL to a provider's photo. URL will change if a new photo is uploaded. Only 1 photo URL will be given at a time. Photos should be 200-4,000 pixels. JPEG and PNG formats are accepted. Photos are reviewed at time of upload and on an annual basis.
          example: //d2uur722ua7fvv.cloudfront.net/ZeeFace_02.svg
        languages:
          type: array
          items:
            type: string
          description: Languages spoken at the practice location, might be facilitated by translators on site.
          example:
          - English
          - Spanish
        profile_url:
          type: string
          description: The URL to view the providers profile on Zocdoc.
          example: https://zocdoc.com/doctor/capivarudo-nojeira-md-517507?utm_source=FakeSource
        credentials:
          $ref: '#/components/schemas/ProviderCredentials'
    ProviderCredentials:
      type: object
      required:
      - certifications
      - education
      properties:
        certifications:
          type: array
          items:
            type: string
        education:
          $ref: '#/components/schemas/Education'
      description: Provider Credentials include education and certifications.
    Error:
      required:
      - message
      type: object
      properties:
        field:
          type: string
        message:
          type: string
    ProviderReviewsResponse:
      allOf:
      - $ref: '#/components/schemas/BaseResult'
      - type: object
        required:
        - data
        properties:
          data:
            $ref: '#/components/schemas/ProviderReviewsData'
    ProvidersByNpi:
      type: object
      properties:
        npi:
          type: string
        providers:
          type: array
          items:
            $ref: '#/components/schemas/ProviderDetails'
    Location:
      allOf:
      - $ref: '#/components/schemas/BaseProviderDetailsLocation'
      - $ref: '#/components/schemas/BaseLocationWithDistance'
      - type: object
        properties:
          is_nearest_match:
            type: boolean
            description: True for the location closest to the provided latitude/longitude. Only populated when latitude and longitude query parameters are provided.
    Practice:
      type: object
      required:
      - practice_id
      - practice_name
      properties:
        practice_id:
          type: string
        practice_name:
          type: string
    ProviderDetails:
      allOf:
      - $ref: '#/components/schemas/BaseProvider'
      - type: object
        required:
        - locations
        - virtual_locations
        - practice
        properties:
          locations:
            type: array
            items:
              $ref: '#/components/schemas/Location'
          virtual_locations:
            type: array
            items:
              $ref: '#/components/schemas/VirtualLocation'
          practice:
            $ref: '#/components/schemas/Practice'
    BaseLocation:
      type: object
      required:
      - address1
      - city
      - state
      - zip_code
      - latitude
      - longitude
      properties:
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        state:
          description: The location's two letter state code.
          example: NY
          type: string
        zip_code:
          description: The location's 5 digit zip code.
          type: string
        latitude:
          type: number
          format: float
        longitude:
          type: number
          format: float
        location_name:
          type: string
        phone_number:
          type: string
          description: Unformatted phone number for the location. Returns null for certain API products.
          example: '9999999999'
        phone_extension:
          type: string
          description: Unformatted extension digits for the location phone number.
          example: '123'
        time_zone:
          type: string
          description: IANA time zone identifier for the location, e.g., America/New_York.
          example: America/New_York
    BookingRequestInsuranceSource:
      type: string
      description: The types of insurance coverage that a provider accepts
      enum:
      - in_network
      - out_of_network
      - self_pay
    ErrorResult:
      allOf:
      - $ref: '#/components/schemas/BaseResult'
      - type: object
        required:
        - error_type
        - errors
        properties:
          error_type:
            $ref: '#/components/schemas/ErrorType'
          errors:
            type: array
            items:
              $ref: '#/components/schemas/Error'
    ProviderResult:
      allOf:
      - $ref: '#/components/schemas/BaseResult'
      - type: object
        required:
        - data
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/ProvidersByNpi'
        description: Data that will be returned upon a provider lookup.
    BaseLocationWithDistance:
      allOf:
      - $ref: '#/components/schemas/BaseLocation'
      - type: object
        properties:
          distance_to_patient_mi:
            type: number
            format: float
            description: Distance from patient to provider in miles.
    VirtualLocation:
      allOf:
      - $ref: '#/components/schemas/BaseProviderDetailsLocation'
      - $ref: '#/components/schemas/BaseVirtualLocation'
    ErrorType:
      type: string
      enum:
      - api_error
      - invalid_request
    AcceptsPatientInsuranceType:
      type: string
      description: Whether the provider location accepts the patient's insurance
      enum:
      - accepted
      - not_accepted
      - insurance_not_specified
    Education:
      type: object
      properties:
        institutions:
          type: array
          items:
            type: string
    BookingRequirements:
      type: object
      required:
      - required_fields
      - accepts_booking_requests_from
      properties:
        required_fields:
          type: array
          items:
            type: string
            description: Options include `data.patient.insurance.insurance_plan_id` and `data.patient.insurance.insurance_member_id`
        accepts_booking_requests_from:
          type: array
          items:
            $ref: '#/components/schemas/BookingRequestInsuranceSource'
      description: Criteria for booking appointments, defines requirements and mandatory fields specified by Zocdoc providers
    BaseVirtualLocation:
      type: object
      required:
      - state
      properties:
        state:
          description: The location's two letter state code.
          example: NY
          type: string
        location_name:
          type: string
        time_zone:
          type: string
          description: IANA time zone identifier for the location, e.g., America/New_York.
          example: America/New_York
    ProviderReviewsData:
      type: object
      required:
      - provider_id
      - total_reviews
      properties:
        provider_id:
          type: string
          description: The Zocdoc provider ID
        total_reviews:
          type: integer
          description: Total number of reviews for the provider
        average_overall_rating:
          type: number
          format: double
          description: The average overall rating of the provider (1-5), rounded to 1 decimal place
        average_bedside_rating:
          type: number
          format: double
          description: The average bedside rating of the provider (1-5), rounded to 1 decimal place
        average_wait_time_rating:
          type: number
          format: double
          description: The average wait time rating of the provider (1-5), rounded to 1 decimal place
    BaseProviderDetailsLocation:
      type: object
      required:
      - provider_location_id
      - accepts_patient_insurance
      - booking_requirements
      properties:
        provider_location_id:
          type: string
          example: pr_abc123-def456_wxyz7890|lo_abc123-def456_wxyz7890
        accepts_patient_insurance:
          $ref: '#/components/schemas/AcceptsPatientInsuranceType'
        first_availability_date_in_provider_local_time:
          type: string
          format: date
          description: The first date where provider has availability for new patients with any visit reason in provider's local time zone, formatted as YYYY-MM-DD and up to 90 days in the future.
        booking_requirements:
          $ref: '#/components/schemas/BookingRequirements'
  securitySchemes:
    ClientCredentialsFlow:
      type: oauth2
      description: 'Machine to machine authentication (for use from client server to Zocdoc).

        Production: `https://auth.zocdoc.com/oauth/token`

        Sandbox: `https://auth-api-developer-sandbox.zocdoc.com/oauth/token`

        '
      flows:
        clientCredentials:
          tokenUrl: https://auth.zocdoc.com/oauth/token
          scopes:
            external.credential.rotate: Rotate the authenticated client secret.
            external.appointment.write: Book and modify appointments.
            external.appointment.read: Read basic details of your appointments.
            external.anonymous_token.write: Create anonymous tokens used for discovery endpoints.
            external.provider_insurance.write: Update the insurance accepted by a provider.
            external.schedulable_entity.read: Read schedulable entities.
    AuthorizationCodeFlow:
      type: oauth2
      description: 'Log in as a user. Client Secret is not necessary for this login flow.

        Production: `https://auth.zocdoc.com`

        Sandbox: `https://auth-api-developer-sandbox.zocdoc.com`

        '
      flows:
        authorizationCode:
          x-usePkce: true
          tokenUrl: https://auth.zocdoc.com/oauth/token
          authorizationUrl: https://auth.zocdoc.com/authorize
          scopes:
            external.appointment.write: Book and modify appointments.
            external.appointment.read: Read basic details of your appointments.
            external.schedulable_entity.read: Read schedulable entities.