{
  "openapi": "3.0.1",
  "info": {
    "title": "Healthcare Provider Data API - NPI Lookup, Networks, Prices",
    "description": "Healthcare provider search and NPI lookup with the H1 API (formerly Ribbon Health): doctors by specialty, location and insurance network, care locations, health systems, insurance plans, TINs, negotiated prices and cost estimates. Bring your own key.",
    "version": "0.1",
    "x-build-id": "Fw8KOE1ANckgdDe8G"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~healthcare-provider-data-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-healthcare-provider-data-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/nabeelbaghoor~healthcare-provider-data-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-healthcare-provider-data-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/nabeelbaghoor~healthcare-provider-data-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-healthcare-provider-data-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "What to get",
            "enum": [
              "providerSearch",
              "providerByNpi",
              "locationSearch",
              "organizationSearch",
              "insuranceSearch",
              "tinSearch",
              "specialtySearch",
              "procedureSearch",
              "priceSearch",
              "carrierSearch",
              "costEstimate"
            ],
            "type": "string",
            "description": "Provider search finds doctors and other clinicians by specialty, location, insurance, language, gender and more. Provider by NPI reads the full profile of each NPI. Location search finds hospitals, clinics, imaging, ambulatory and urgent care sites. Organization search finds health systems. Insurance plan, TIN, specialty and procedure search read H1 reference data and give the UUIDs other filters take. Negotiated price search returns payer-filed price transparency rates by facility. Carriers lists the carrier IDs price search takes. Procedure cost estimate gives the minimum, median and maximum cost near a ZIP code. Some modules are not on every H1 contract.",
            "default": "providerSearch"
          },
          "specialty": {
            "title": "Specialty",
            "type": "string",
            "description": "Provider search only. A specialty in plain words, matched by H1 to the closest specialty, typos and colloquial names included, such as cardiology, gastroenterologist or stomach doc."
          },
          "name": {
            "title": "Name",
            "type": "string",
            "description": "Provider, location, organization and TIN search. A full, first, last or partial name, fuzzy matched against the provider, location, organization or billing entity name."
          },
          "providerTypes": {
            "title": "Provider types",
            "type": "array",
            "description": "Provider search, and Specialty search (one type). Higher level groupings of specialties, such as Doctor, Nursing, Dental Providers, Optometry or Chiropractic Providers.",
            "items": {
              "type": "string"
            }
          },
          "gender": {
            "title": "Gender",
            "enum": [
              "any",
              "m",
              "f"
            ],
            "type": "string",
            "description": "Provider search only.",
            "default": "any"
          },
          "language": {
            "title": "Language spoken",
            "type": "string",
            "description": "Provider search only. Fuzzy matched, such as English: providers who, or whose office staff, speak it."
          },
          "acceptingNewPatients": {
            "title": "Accepting new patients only",
            "type": "boolean",
            "description": "Provider search only. Keeps providers H1 marks as likely accepting new patients at a location.",
            "default": false
          },
          "minRating": {
            "title": "Minimum patient rating",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Provider search only. Average patient satisfaction rating out of 10."
          },
          "minAge": {
            "title": "Minimum provider age",
            "minimum": 0,
            "maximum": 120,
            "type": "integer",
            "description": "Provider search only."
          },
          "maxAge": {
            "title": "Maximum provider age",
            "minimum": 0,
            "maximum": 120,
            "type": "integer",
            "description": "Provider search only."
          },
          "procedure": {
            "title": "Procedure performed",
            "type": "string",
            "description": "Provider search only. A procedure in plain words, such as MRI, thoracic spine, fuzzy matched to one H1 procedure."
          },
          "condition": {
            "title": "Condition treated",
            "type": "string",
            "description": "Provider search only. A condition such as depression, fuzzy matched to one H1 condition. A premium focus area field on some contracts."
          },
          "address": {
            "title": "Address or ZIP code",
            "type": "string",
            "description": "Provider, location, organization and negotiated price search. An address, city or ZIP code, geocoded by H1, such as New York, NY or 10001. Required for negotiated price search unless coordinates are given."
          },
          "latLng": {
            "title": "Coordinates",
            "type": "string",
            "description": "Instead of an address: latitude,longitude such as 40.7506,-73.9971."
          },
          "distance": {
            "title": "Radius (miles)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Search radius around the address or coordinates. H1 suggests under 50 miles when filtering by insurance or location confidence; negotiated price search defaults to 25."
          },
          "state": {
            "title": "State",
            "type": "string",
            "description": "Provider search and Insurance plan search. Two letter state code such as NY. On provider search it overrides the address and coordinates."
          },
          "insuranceCarrierName": {
            "title": "Insurance carrier name",
            "type": "string",
            "description": "Provider, location and insurance plan search. A carrier name as H1 spells it on its insurance objects, such as Aetna. Finds providers or locations taking at least one plan from that carrier."
          },
          "insuranceIds": {
            "title": "Insurance plan UUIDs",
            "type": "array",
            "description": "Provider and location search. In-network filter: plan UUIDs from Insurance plan search, one per line.",
            "items": {
              "type": "string"
            }
          },
          "organizationIds": {
            "title": "Organization UUIDs",
            "type": "array",
            "description": "Provider and location search. Organization UUIDs from Organization search, one per line.",
            "items": {
              "type": "string"
            }
          },
          "healthSystem": {
            "title": "Health system (ultimate parent)",
            "type": "string",
            "description": "Provider and location search. Prefix of the ultimate parent organization name, such as Acme Health."
          },
          "minLocationConfidence": {
            "title": "Minimum location confidence",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Provider and location search. H1 confidence score (0 to 5) that a provider practices at, or a location is, where listed. 3 or 4 keeps the most reliable addresses. Caps a provider search at 1000 records."
          },
          "npis": {
            "title": "NPIs",
            "type": "array",
            "description": "Provider by NPI only. One 10 digit National Provider Identifier per line, up to 500 a run. Each NPI is one request.",
            "items": {
              "type": "string"
            }
          },
          "maxInsurances": {
            "title": "Insurances per location",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Provider by NPI only. Returns at most this many accepted insurances per location, to keep profiles small."
          },
          "locationTypes": {
            "title": "Location types",
            "type": "array",
            "description": "Location search only. H1 location types, such as Urgent Care, one per line. H1 sorts locations into some 30 types across hospitals, clinics, urgent care, ambulatory and imaging centers.",
            "items": {
              "type": "string"
            }
          },
          "tier": {
            "title": "Location tier",
            "enum": [
              "any",
              "1",
              "2",
              "3"
            ],
            "type": "string",
            "description": "Location search only. Quality tier derived from the linked organization.",
            "default": "any"
          },
          "searchText": {
            "title": "Search text",
            "type": "string",
            "description": "Insurance plan, TIN, specialty and procedure search. Free text fuzzy matched by H1, such as Aetna for plans or cardiology for specialties."
          },
          "planType": {
            "title": "Plan type",
            "type": "string",
            "description": "Insurance plan search only. Exact plan type as H1 spells it, such as PPO or HMO."
          },
          "insuranceCategory": {
            "title": "Insurance category",
            "type": "string",
            "description": "Insurance plan search only. Exact category as H1 spells it, such as Medicare Advantage."
          },
          "partialCodes": {
            "title": "Plan code prefix",
            "type": "string",
            "description": "Insurance plan search only. A Medicare Advantage contract ID such as H9572, or the first 10 digits of an exchange plan HIOS ID."
          },
          "legalName": {
            "title": "TIN legal name",
            "type": "string",
            "description": "TIN search only. Fuzzy matched against the legal name of the billing entity."
          },
          "tinIds": {
            "title": "TINs",
            "type": "array",
            "description": "TIN search only. 9 digit taxpayer identification numbers, one per line. H1 takes no other TIN filter with these.",
            "items": {
              "type": "string"
            }
          },
          "procedureCode": {
            "title": "Procedure code",
            "type": "string",
            "description": "Procedure search and negotiated price search. A billing code such as CPT 27447 (total knee replacement)."
          },
          "procedureCodeScheme": {
            "title": "Procedure code scheme",
            "type": "string",
            "description": "Negotiated price search only. Coding system, such as CPT or HCPCS."
          },
          "careClusterCode": {
            "title": "Care cluster code",
            "type": "string",
            "description": "Negotiated price search only. An H1 care cluster business code such as JOINT_REPLACEMENT."
          },
          "carrierId": {
            "title": "Carrier ID",
            "type": "string",
            "description": "Negotiated price search and carriers. The v2 carrier business ID from the carriers mode, such as 78110. Not the same as an insurance plan UUID."
          },
          "carrierName": {
            "title": "Carrier name",
            "type": "string",
            "description": "Negotiated price search and carriers. Carrier display name, such as Aetna. Prefer the carrier ID for price search."
          },
          "procedureIds": {
            "title": "Procedure UUIDs",
            "type": "array",
            "description": "Procedure cost estimate only. Procedure UUIDs from Procedure search; the estimate covers them combined.",
            "items": {
              "type": "string"
            }
          },
          "memberZip": {
            "title": "Member ZIP code",
            "type": "string",
            "description": "Procedure cost estimate only. The 5 digit ZIP code of the patient."
          },
          "estimateType": {
            "title": "Estimate based on",
            "enum": [
              "claims",
              "price_transparency"
            ],
            "type": "string",
            "description": "Procedure cost estimate only. Price transparency estimates need the insurance plan UUID.",
            "default": "claims"
          },
          "planId": {
            "title": "Insurance plan UUID",
            "type": "string",
            "description": "Procedure cost estimate with price transparency data only. The plan UUID from Insurance plan search."
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most rows this run returns and charges for. Searches stop paging once this many rows are in, so no request is spent on rows that would be cut.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Pacing. A rate limit answer is waited out and retried; a used up allowance ends the run.",
            "default": 60
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own H1 API key (formerly a Ribbon Health API key), issued by H1. Sent only to api.ribbonhealth.com as a Bearer token, never logged. Stored as a secret. You can instead set the DATA_API_KEY environment secret."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}