{
  "openapi": "3.0.1",
  "info": {
    "title": "NPI Registry Scraper: 8M US Healthcare Providers + Licenses",
    "description": "Extract 8M+ US healthcare providers from the official CMS NPPES registry. 45 fields: practice and mailing addresses, state licenses, specialties, extra locations, endpoints, plus a contact name for businesses. Filter by specialty, state, city, zip or name, or look up NPIs in bulk. $2 per 1,000.",
    "version": "0.0",
    "x-build-id": "J0L2Isd4vehSrIVeH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sourabhbgp~npi-registry-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sourabhbgp-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/sourabhbgp~npi-registry-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sourabhbgp-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/sourabhbgp~npi-registry-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sourabhbgp-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": {
          "taxonomy": {
            "title": "Healthcare Specialty",
            "type": "string",
            "description": "Filter by specialty (e.g., 'Family Medicine', 'Dentist', 'Optometrist', 'Nurse Practitioner'). Partial match supported. Note: this is matched as the start of a specialty name, so \"Phlebotomy\" finds \"Technician, Pathology, Phlebotomy\". A name the registry does not recognise returns no results."
          },
          "npiNumber": {
            "title": "NPI Number (single)",
            "pattern": "^[0-9]{10}$",
            "type": "string",
            "description": "Look up a specific provider by their 10-digit NPI number. When provided, all other filters are ignored."
          },
          "npiNumbers": {
            "title": "NPI Numbers (batch lookup)",
            "type": "array",
            "description": "Batch lookup — provide an array of 10-digit NPI numbers. Each NPI is fetched individually. Overrides other search filters.",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "title": "State",
            "maxLength": 2,
            "type": "string",
            "description": "2-letter US state code (e.g., 'CA', 'NY', 'TX'). Note: the registry matches this against every address on file, including the mailing address and any additional practice locations, so some results can show a different state in their main address columns."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City name (e.g., 'Los Angeles', 'New York'). Note: the registry matches this against every address on file, including the mailing address and any additional practice locations, so some results can show a different city in their main address columns."
          },
          "postalCode": {
            "title": "Zip Code",
            "type": "string",
            "description": "Zip code or prefix with wildcard (e.g., '90210' or '900*' for all 900xx zips). Minimum 2 leading characters before wildcard. Note: the registry matches this against every address on file, including the mailing address and any additional practice locations, so some results can show a different ZIP in their main address columns."
          },
          "providerType": {
            "title": "Provider Type",
            "enum": [
              "both",
              "individual",
              "organization"
            ],
            "type": "string",
            "description": "Filter by individual providers or organizations",
            "default": "both"
          },
          "firstName": {
            "title": "First Name",
            "type": "string",
            "description": "Provider first name (wildcard supported with min 2 chars, e.g., 'Jo*'). Note: the registry also matches other names on file, such as a maiden or former name, so some results can show a different name in their name columns."
          },
          "lastName": {
            "title": "Last Name",
            "type": "string",
            "description": "Provider last name (wildcard supported with min 2 chars, e.g., 'Smi*'). Note: the registry also matches other names on file, such as a maiden or former name, so some results can show a different name in their name columns."
          },
          "organizationName": {
            "title": "Organization Name",
            "type": "string",
            "description": "Search by organization/hospital/clinic name (e.g., 'Kaiser', 'Mayo Clinic'). Auto-switches provider type to 'organization' unless explicitly set."
          },
          "fetchAllResults": {
            "title": "Get all results past the API limit",
            "type": "boolean",
            "description": "The CMS registry returns at most 1,200 records for any single search. Turn this on to split a large search into smaller ones automatically (by state, then provider type, then ZIP, then name) and merge the results, so you get everything. This returns and bills for many more rows: a nationwide Phlebotomy search goes from 1,200 to about 4,300. Use Max Results to cap the total.",
            "default": false
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of results to return. Leave empty for unlimited. A single CMS search returns at most 1,200 records: turn on \"Get all results past the API limit\" to go beyond that."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}