{
  "openapi": "3.0.1",
  "info": {
    "title": "Healthcare Provider Payments Scraper - NPI & CMS Payments",
    "description": "Scrape U.S. healthcare provider profiles from the NPPES NPI Registry and match each to CMS Open Payments: general, research and ownership/investment records across 7 program years (2019-2025). Filter by name, organization or state. Export CSV, Excel, JSON. No login or API key.",
    "version": "0.1",
    "x-build-id": "NZC6rcVxwU7qacfCP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~healthcare-provider-payments-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-healthcare-provider-payments-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~healthcare-provider-payments-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-healthcare-provider-payments-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~healthcare-provider-payments-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-healthcare-provider-payments-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": {
          "providerName": {
            "title": "Provider name (individual)",
            "type": "string",
            "description": "Individual provider first and last name to look up in the NPPES NPI Registry, for example \"John Smith\". A single word is treated as a last name. Leave blank when searching by NPI, organization or specialty."
          },
          "organizationName": {
            "title": "Organization name",
            "type": "string",
            "description": "Organization or facility name to look up in the NPPES NPI Registry instead of a person, for example \"Mayo Clinic\"."
          },
          "npi": {
            "title": "NPI numbers",
            "type": "array",
            "description": "Exact 10-digit NPI numbers to look up directly in the NPPES NPI Registry, one per line, for example 1871538041. Most precise way to find a provider. A number that does not exist or is deactivated is skipped and reported in the run message. Any value that is not 10 digits ends the run with a free error row.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "specialty": {
            "title": "Specialty (taxonomy description)",
            "type": "string",
            "description": "NPPES taxonomy description such as \"Cardiology\", \"Internal Medicine\" or \"Dentist\". Matches the provider's registered specialties. Combine with state, city or ZIP to narrow the search.",
            "default": ""
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City of the provider's address in the NPPES NPI Registry, for example \"Dallas\". Combine with state, specialty or name.",
            "default": ""
          },
          "postalCode": {
            "title": "ZIP code",
            "type": "string",
            "description": "5-digit US ZIP code of the provider's address, for example 75230. Any other format ends the run with a free error row.",
            "default": ""
          },
          "state": {
            "title": "State (2-letter code)",
            "maxLength": 2,
            "type": "string",
            "description": "Optional 2-letter US state code (for example \"CA\") that narrows the NPPES search and the teaching hospital search. An invalid code ends the run with a free error row and no charge."
          },
          "enumerationType": {
            "title": "Provider type",
            "enum": [
              "ANY",
              "NPI-1",
              "NPI-2"
            ],
            "type": "string",
            "description": "Keep all NPI records, only individual providers (NPI-1) or only organizations (NPI-2). Needs another search field such as name, specialty or city.",
            "default": "ANY"
          },
          "teachingHospital": {
            "title": "Teaching hospital (name or CCN)",
            "type": "string",
            "description": "Teaching hospitals receive Open Payments under their CMS Certification Number (CCN), not an NPI. Enter part of a hospital name (for example \"Massachusetts General\") or a 6-digit CCN (for example 220071). Returns one teaching-hospital row per match, billed as one provider-record, with general and research payments when switched on. State narrows the match.",
            "default": ""
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of provider rows (NPI records and teaching hospitals) to return. Each row is billed as one provider-record event. Free users are limited to 10 (preview); paid users up to 1,000,000.",
            "default": 10
          },
          "includeGeneralPayments": {
            "title": "General payments (CMS Open Payments)",
            "type": "boolean",
            "description": "Food, travel, consulting, speaking and gift payments from drug/device companies. Billed per payment as general-payment-record.",
            "default": false
          },
          "maxGeneralPayments": {
            "title": "Max general payments per provider",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many general-payment records to pull per provider when General payments is on.",
            "default": 50
          },
          "includeResearchPayments": {
            "title": "Research payments (CMS Open Payments)",
            "type": "boolean",
            "description": "Payments made in connection with a formal research agreement or protocol. Billed per payment as research-payment-record.",
            "default": false
          },
          "maxResearchPayments": {
            "title": "Max research payments per provider",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many research-payment records to pull per provider when Research payments is on.",
            "default": 50
          },
          "includeOwnershipInterests": {
            "title": "Ownership & investment interests (CMS Open Payments)",
            "type": "boolean",
            "description": "Ownership or investment interests a physician (or immediate family member) holds in a reporting drug/device company. Billed per interest as ownership-interest-record. Not available for teaching hospitals.",
            "default": false
          },
          "maxOwnershipInterests": {
            "title": "Max ownership interests per provider",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many ownership-interest records to pull per provider when Ownership & investment interests is on.",
            "default": 20
          },
          "programYears": {
            "title": "Program years",
            "type": "array",
            "description": "Only look at these CMS Open Payments program years, one per line, for example 2024 and 2025. Leave empty for every available year (2019-2025). A year with no published data ends the run with a free error row that lists the available years.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "payingCompany": {
            "title": "Paying company contains",
            "type": "string",
            "description": "Keep only payments whose paying company (the drug or device manufacturer or group purchasing organization) contains this text, not case sensitive, for example \"Viatris\" or \"Pfizer\". Applies to general payments, research payments and ownership interests.",
            "default": ""
          },
          "natureOfPayment": {
            "title": "Nature of payment",
            "type": "array",
            "description": "Keep only general payments of these types, for example Food and Beverage or Consulting Fee. Leave empty for all types. Applies to general payments only: research payments and ownership interests have no nature of payment.",
            "items": {
              "type": "string",
              "enum": [
                "Acquisitions",
                "Charitable Contribution",
                "Compensation for services other than consulting, including serving as faculty or as a speaker at a venue other than a continuing education program",
                "Compensation for serving as faculty or as a speaker for a medical education program",
                "Compensation for serving as faculty or as a speaker for an accredited or certified continuing education program",
                "Compensation for serving as faculty or as a speaker for a non-accredited and noncertified continuing education program",
                "Consulting Fee",
                "Current or prospective ownership or investment interest",
                "Debt forgiveness",
                "Education",
                "Entertainment",
                "Food and Beverage",
                "Gift",
                "Grant",
                "Honoraria",
                "Long term medical supply or device loan",
                "Royalty or License",
                "Space rental or facility fees (teaching hospital only)",
                "Travel and Lodging"
              ],
              "enumTitles": [
                "Acquisitions",
                "Charitable contribution",
                "Compensation for services other than consulting (faculty or speaker, non-CE venue)",
                "Compensation as faculty or speaker (medical education program)",
                "Compensation as faculty or speaker (accredited or certified CE)",
                "Compensation as faculty or speaker (non-accredited, non-certified CE)",
                "Consulting fee",
                "Current or prospective ownership or investment interest",
                "Debt forgiveness",
                "Education",
                "Entertainment",
                "Food and beverage",
                "Gift",
                "Grant",
                "Honoraria",
                "Long term medical supply or device loan",
                "Royalty or license",
                "Space rental or facility fees (teaching hospital only)",
                "Travel and lodging"
              ]
            },
            "default": []
          },
          "minAmountUsd": {
            "title": "Minimum payment amount (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Keep only general and research payments of at least this many US dollars. 0 means no minimum. The range is applied by this actor on the numeric amount (the CMS API compares amounts as text). To keep runs fast, the scan per provider and payment type stops after about 4,000 rows (more as matches are found) or 60 seconds; narrow with program years or paying company for very large payment histories.",
            "default": 0
          },
          "maxAmountUsd": {
            "title": "Maximum payment amount (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Keep only general and research payments of at most this many US dollars. 0 means no maximum. Must be at least the minimum when both are set.",
            "default": 0
          },
          "onlyNew": {
            "title": "Only new results",
            "type": "boolean",
            "description": "Skip providers and payment records delivered by an earlier run of the same search; they are neither returned nor charged. A known provider with new payments comes back again, billed as one provider-record plus only the new payments (changeType new-payments); a new provider has changeType new. In this mode up to 300 providers (or 5 times Max Items, at most 1,200) are checked per run; when a payment type is on, up to 100 (at most 400) and about 90 seconds, so keep the search narrow 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 and payment 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}