{
  "openapi": "3.0.1",
  "info": {
    "title": "NPPES NPI Registry Scraper - US Healthcare Provider Lookup",
    "description": "Scrape the official CMS NPPES NPI Registry for US healthcare providers and organizations: NPI, credentials, addresses, phone and fax, specialty taxonomies and license numbers. Filter by name, NPI, specialty, state, city or ZIP. Export CSV, Excel, JSON. No login or API key.",
    "version": "0.1",
    "x-build-id": "CmVekInYR3fBqQtHB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~nppes-npi-registry-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-nppes-npi-registry-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/recordsdata~nppes-npi-registry-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-nppes-npi-registry-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/recordsdata~nppes-npi-registry-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-nppes-npi-registry-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": {
          "npiNumbers": {
            "title": "Exact NPI numbers (optional)",
            "type": "array",
            "description": "List of exact 10-digit NPI numbers to look up in the CMS NPPES NPI Registry, for example 1821205840. Each valid NPI returns one provider or organization record; numbers that do not exist are skipped and not charged.",
            "items": {
              "type": "string"
            }
          },
          "firstName": {
            "title": "First name starts with (optional)",
            "type": "string",
            "description": "Search individual providers (NPI-1) whose first name starts with this text, for example Jo finds John and Joseph. Combine with a last name, state or specialty to narrow the search.",
            "default": ""
          },
          "lastName": {
            "title": "Last name contains (optional)",
            "type": "string",
            "description": "Search individual providers (NPI-1) whose last name starts with this text, for example Smith. Combine with state or specialty to narrow the NPI Registry search."
          },
          "nameSearchTarget": {
            "title": "Names refer to",
            "enum": [
              "PROVIDER",
              "AUTHORIZED_OFFICIAL"
            ],
            "type": "string",
            "description": "What the first name and last name fields search. Provider: the clinician or organization itself (default). Authorized official: the person who signed the NPI application for an organization, which finds the organizations someone runs.",
            "default": "PROVIDER"
          },
          "organizationName": {
            "title": "Organization name contains (optional)",
            "type": "string",
            "description": "Search organizations (NPI-2) such as hospitals, clinics and pharmacies whose name starts with this text, for example hospital. Combine with state or city."
          },
          "taxonomyDescription": {
            "title": "Specialty / taxonomy contains (optional)",
            "type": "string",
            "description": "Filter providers by specialty (taxonomy) description, for example Nurse Practitioner, Family Medicine, Dentist or General Acute Care Hospital."
          },
          "enumerationType": {
            "title": "Provider type",
            "enum": [
              "ANY",
              "NPI-1",
              "NPI-2"
            ],
            "type": "string",
            "description": "Individual clinicians (NPI-1) or organizations (NPI-2). Any returns both. The registry does not accept this filter on its own: combine it with a name, specialty, city or ZIP code.",
            "default": "ANY"
          },
          "state": {
            "title": "State (optional)",
            "type": "string",
            "description": "2-letter US state code to filter provider addresses, for example CA or TX. For several states use the States field."
          },
          "states": {
            "title": "States, several (optional)",
            "type": "array",
            "description": "List of 2-letter US state or territory codes, for example FL and TX. Searched one after the other, results merged. Combined with the State field above when both are filled.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City (optional)",
            "type": "string",
            "description": "Filter providers by the city of their address, for example Houston."
          },
          "cities": {
            "title": "Cities, several (optional)",
            "type": "array",
            "description": "List of city names, for example Houston and Dallas. Searched one after the other, results merged. Combined with the City field above when both are filled.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postalCode": {
            "title": "Postal code (optional)",
            "type": "string",
            "description": "Filter providers by ZIP / postal code: 5 digits such as 77030, 9 digits, or 2 to 4 digits followed by * for a ZIP prefix such as 770*."
          },
          "addressPurpose": {
            "title": "Which address to match",
            "enum": [
              "ANY",
              "LOCATION",
              "MAILING"
            ],
            "type": "string",
            "description": "Which of the provider's addresses the state, city and ZIP filters apply to. Any matches either address (default, as before). Practice location matches only where care is given, which removes providers whose only link to the place is a mailing address.",
            "default": "ANY"
          },
          "lastUpdatedSince": {
            "title": "Record updated since (optional)",
            "type": "string",
            "description": "Keep only providers whose NPPES record was last updated on or after this date (YYYY-MM-DD). The registry cannot filter by date itself, so the actor reads the matching records and skips older ones for free. If no new match is found for 90 seconds the scan stops, so combine it with a narrow search (state, city, specialty)."
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of provider or organization records to return and be charged for. Default 200. Free plan runs are limited to 10.",
            "default": 200
          },
          "includeRaw": {
            "title": "Include the raw registry record",
            "type": "boolean",
            "description": "Add a raw column with the full, unmodified NPPES record of each provider next to the structured columns. Larger dataset.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new or updated results",
            "type": "boolean",
            "description": "Skip providers that an earlier run of the same search already delivered with the same last-updated date; they are neither returned nor charged. A provider whose NPPES record changed since comes back again (changeType updated), a provider seen for the first time has changeType new. The registry has no date filter, so the actor reads the matching records and checks them; the scan stops after 90 seconds without a new result, so keep the search narrow (state, city, specialty) or use an NPI list.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Name for the memory of previous results. Leave empty to derive it from your inputs. Use the same name to share memory between runs, or a different name to keep separate monitors.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget previous results",
            "type": "boolean",
            "description": "Clear the memory for this monitor before the run, so every provider counts as new again.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}