{
  "openapi": "3.0.1",
  "info": {
    "title": "Healthgrades Scraper - Doctor Ratings, NPI & Review Monitor",
    "description": "For reputation dashboards, practice-growth tools and provider directories: Healthgrades doctors by specialty and city or profile URL, with star rating, rating count, NPI checked in the US NPI Registry, address, phone, hospitals, insurance and latest reviews. Monitor returns only rating changes.",
    "version": "0.1",
    "x-build-id": "t3BUfm45lGLolqH2z"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~healthgrades-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-healthgrades-scraper",
        "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/neverempty~healthgrades-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-healthgrades-scraper",
        "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/neverempty~healthgrades-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-healthgrades-scraper",
        "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": {
          "searches": {
            "title": "Searches (specialty | location)",
            "type": "array",
            "description": "Healthgrades searches, one per line, written as specialty, condition or doctor name, then \"|\", then a city and state or a ZIP code. Examples: \"Cardiology | New York, NY\", \"Dentistry | 60605\", \"Adriana Guerra | Austin, TX\". The location is required: without it Healthgrades picks the place from the IP address. Up to 20 searches per run. If both this and Start URLs are empty, the example search \"Family Medicine | Austin, TX\" is used.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Doctor profile URLs (or Healthgrades search URLs)",
            "type": "array",
            "description": "Healthgrades doctor profile URLs (…/physician/…, …/dentist/… or …/providers/…), one per line, for example https://www.healthgrades.com/physician/dr-adriana-guerra-2sgv3. Healthgrades search URLs (…/usearch?what=…&where=…) are also accepted. Up to 1,000 profiles per run. Every profile is read in full.",
            "items": {
              "type": "string"
            }
          },
          "maxDoctorsPerSearch": {
            "title": "Max doctors per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many doctors to check from each search, in Healthgrades' order (20 per result page). In monitor mode only the changed ones are returned and charged. 1 to 1,000.",
            "default": 20
          },
          "includeProfileDetails": {
            "title": "Open each doctor's profile for full details",
            "type": "boolean",
            "description": "For search results, also read each returned doctor's profile page to add hospital affiliations, insurance plans, education, board certifications, languages and the latest patient reviews. When off, rows have only what the search page shows (rating, rating count, specialty, office, phone, insurance carriers) and the profile-only columns are null. Doctor URLs from Start URLs are always read in full.",
            "default": true
          },
          "maxReviewsPerDoctor": {
            "title": "Latest reviews per doctor",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many of the newest patient reviews shown on the profile page to include per doctor (rating, date, author and text). 0 to 10; Healthgrades shows up to 10 on the page.",
            "default": 3
          },
          "checkNpiRegistry": {
            "title": "Check the NPI number in the official NPI Registry",
            "type": "boolean",
            "description": "Look up each doctor's NPI number in the US government NPPES NPI Registry and add columns Healthgrades does not have: registry status (active or deactivated), the registered name and whether the surname matches, primary taxonomy and code, license number and state, enumeration date and last update.",
            "default": true
          },
          "onlyChanges": {
            "title": "Monitor mode: only doctors whose rating or rating count changed",
            "type": "boolean",
            "description": "Return only doctors whose Healthgrades star rating or number of ratings changed since the last run with the same watch name, plus doctors that newly appear in a search. The first run returns everyone as the starting point. For searches, unchanged doctors are compared on the search page and their profiles are not opened. A run in which nothing changed returns a free row saying so and charges only the run start fee.",
            "default": false
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Name of the remembered state used to compare runs (letters, digits, dot, dash, underscore; up to 40). Setting it (or turning on monitor mode) fills changeType and the previous rating columns. Use a different name for each list of doctors you track on its own schedule. With monitor mode on and no name, the name \"default\" is used."
          },
          "resetMonitoringState": {
            "title": "Forget what this watch remembered",
            "type": "boolean",
            "description": "Start this watch over: forget the remembered ratings before this run, so every doctor is returned as a first check.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}