{
  "openapi": "3.0.1",
  "info": {
    "title": "US Healthcare Provider Search: Normalized NPI Data (NPPES)",
    "description": "Search all 9M+ US healthcare providers with no 1,200-result cap. Normalized NPPES data: parsed credentials, deduplicated addresses, OIG exclusion + Medicare enrollment flags, quality scores. Filter by state, specialty, credential. $3 per 1,000 results.",
    "version": "0.1",
    "x-build-id": "XbcDfgGkyY8aAV9jh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/overlookdata~npimcp-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-overlookdata-npimcp-search",
        "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/overlookdata~npimcp-search/runs": {
      "post": {
        "operationId": "runs-sync-overlookdata-npimcp-search",
        "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/overlookdata~npimcp-search/run-sync": {
      "post": {
        "operationId": "run-sync-overlookdata-npimcp-search",
        "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": {
          "state": {
            "title": "State (2-letter code)",
            "pattern": "^[A-Za-z]{2}$",
            "type": "string",
            "description": "Filter to providers whose practice address is in this US state. Examples: CA, TX, NY. Territories: PR, GU, AS, MP, VI."
          },
          "specialty": {
            "title": "Specialty (taxonomy classification)",
            "type": "string",
            "description": "NUCC taxonomy classification, e.g., 'Internal Medicine', 'Family Medicine', 'Cardiovascular Disease'. Matching is case-insensitive and whitespace-trimmed, but must otherwise match a classification exactly (no partial/fuzzy match). This is a free-text field, not a dropdown — Apify's static input schemas can't populate a dropdown from a live API call. See the GET /specialties endpoint for the full, current list of valid values."
          },
          "credential": {
            "title": "Credential code",
            "type": "string",
            "description": "Primary credential code, e.g., MD, DO, NP, PA, RN, FNP, PsyD. Matching is case-insensitive and whitespace-trimmed. This is a free-text field, not a dropdown — Apify's static input schemas can't populate a dropdown from a live API call. See the GET /credentials endpoint for the full, current list of valid codes."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "Practice address city. Prefix match (e.g., 'Sea' matches 'Seattle')."
          },
          "postal_code": {
            "title": "Postal code (ZIP)",
            "type": "string",
            "description": "Practice address ZIP. Prefix match (e.g., '902' matches all 902xx ZIPs)."
          },
          "entity_type": {
            "title": "Entity type",
            "enum": [
              "individual",
              "organization"
            ],
            "type": "string",
            "description": "Filter by individual practitioners or organizations."
          },
          "last_name": {
            "title": "Last name (prefix match)",
            "type": "string",
            "description": "Provider last name. Prefix match."
          },
          "first_name": {
            "title": "First name (prefix match)",
            "type": "string",
            "description": "Provider first name. Prefix match."
          },
          "business_name": {
            "title": "Business name (prefix match)",
            "type": "string",
            "description": "For organizations only. Legal business name prefix."
          },
          "radius_zip": {
            "title": "Radius search: center ZIP",
            "pattern": "^[0-9]{5}$",
            "type": "string",
            "description": "5-digit ZIP code to center a radius search on. Requires 'Radius search: miles' to also be set. Precision is ZIP-centroid-level (Census ZCTA Gazetteer), not a per-address geocode — expect roughly +/-1 to 3 mile error, worse for large rural ZIPs. Some ZIPs (PO-Box-only, no residential/business footprint) have no centroid and will return an error; try a neighboring ZIP."
          },
          "radius_miles": {
            "title": "Radius search: miles",
            "minimum": 1,
            "maximum": 250,
            "type": "integer",
            "description": "Search radius in miles from 'Radius search: center ZIP'. Requires that field to also be set."
          },
          "telehealth": {
            "title": "Telehealth offered",
            "type": "boolean",
            "description": "Filter to providers with a telehealth indicator in the CMS Doctors & Clinicians data. Coverage caveat: this dataset covers Medicare-enrolled clinicians only (~1.3M of ~9.4M NPPES providers) — a provider absent from that dataset is excluded from this filter's TRUE match, not marked false; leaving this off returns providers regardless of telehealth status."
          },
          "has_hospital_affiliation": {
            "title": "Has a hospital/facility affiliation",
            "type": "boolean",
            "description": "Filter to providers with at least one facility affiliation (hospital, home health agency, hospice, nursing home, dialysis facility, inpatient rehab, or long-term care hospital) in the CMS Doctors & Clinicians Facility Affiliation data. Same Medicare-enrolled-clinician coverage caveat as 'Telehealth offered'."
          },
          "graduation_year_min": {
            "title": "Medical school graduation year (minimum)",
            "minimum": 1900,
            "type": "integer",
            "description": "Filter to providers who graduated medical school in this year or later, per CMS Doctors & Clinicians data. Same Medicare-enrolled-clinician coverage caveat as 'Telehealth offered' — providers with no CMS DAC record are excluded from this filter."
          },
          "graduation_year_max": {
            "title": "Medical school graduation year (maximum)",
            "minimum": 1900,
            "type": "integer",
            "description": "Filter to providers who graduated medical school in this year or earlier, per CMS Doctors & Clinicians data. Must be >= 'Medical school graduation year (minimum)' when both are set."
          },
          "is_rural": {
            "title": "Rural practice location only",
            "type": "boolean",
            "description": "Filter to providers whose practice ZIP has a USDA ERS primary RUCA code of 4 or higher (rural — Micropolitan/Small town/Rural, per USDA ERS's own Metropolitan/Micropolitan/Small town/Rural grouping). ZIP-level approximation, not a per-address determination. Coverage caveat: a ZIP the RUCA file doesn't cover is excluded from this filter's TRUE match, not marked false; leaving this off returns providers regardless of rural/urban status."
          },
          "exclude_license_issues": {
            "title": "Exclude providers with a lapsed/cancelled/revoked TX license",
            "type": "boolean",
            "description": "Filter to providers whose Texas board license status is verifiably not-current (delinquent, inactive, retired, cancelled, suspended, revoked, surrendered, or deceased), sourced from the TX Medical Board (TMB) and TX Board of Nursing (BON) free bulk license rosters, joined on NPPES's self-reported license number and name-verified. TX-only coverage at this release. Coverage caveat: this is NOT a clean-license guarantee — a provider with no board match (unrecognized/unreported license number, or a name mismatch against the board record) is excluded from this filter's TRUE match, not marked as currently licensed; leaving this off returns providers regardless of license status."
          },
          "medicare_enrolled": {
            "title": "Medicare-enrolled only",
            "type": "boolean",
            "description": "Filter to providers enrolled in Medicare, per CMS PECOS enrollment data. Leaving this off returns providers regardless of enrollment status; setting it on returns only enrolled providers (there is no 'non-enrolled only' mode)."
          },
          "max_results": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many results. Each pushed result is billed.",
            "default": 1000
          },
          "include_full_record": {
            "title": "Include full enriched record per provider",
            "type": "boolean",
            "description": "When ON, fetch the full enriched record for each result (taxonomies, credentials, secondary locations, OIG exclusion, PECOS Medicare enrollment, practice group, digital maturity flags, quality score). When OFF, only the basic search fields are returned. Each provider record is one billable result either way; the toggle controls how rich each row is.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}