{
  "openapi": "3.0.1",
  "info": {
    "title": "FINRA BrokerCheck Scraper",
    "description": "Scrape FINRA BrokerCheck for individual brokers and firms. Search by name, CRD, firm, city, state, or exam. Get registration history, disclosures, and exam records. Export to CSV, JSON, Excel, or XML.",
    "version": "1.1",
    "x-build-id": "Nd2bJ4kBAND6Xhrj2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~finra-brokercheck-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-finra-brokercheck-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/parseforge~finra-brokercheck-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-finra-brokercheck-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/parseforge~finra-brokercheck-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-finra-brokercheck-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",
        "required": [
          "query"
        ],
        "properties": {
          "searchType": {
            "title": "Search Type",
            "enum": [
              "individual",
              "firm"
            ],
            "type": "string",
            "description": "Type of search to perform - Individual brokers/advisors or Firms",
            "default": "individual"
          },
          "query": {
            "title": "Search Query",
            "type": "string",
            "description": "Search term for broker/advisor name or firm name. For individuals, you can search by name or CRD number. For firms, you can search by firm name or CRD/SEC number."
          },
          "includePrevious": {
            "title": "Include Previous Registrations",
            "type": "boolean",
            "description": "Include brokers/advisors who are no longer registered",
            "default": true
          },
          "firmName": {
            "title": "Firm Name (Individual Search)",
            "type": "string",
            "description": "Filter individuals by firm name (e.g. 'Morgan Stanley', 'Goldman Sachs'). The actor automatically looks up the firm's FINRA CRD number and applies the filter, because the public BrokerCheck API only accepts firm CRDs, not firm-name strings."
          },
          "firmCrd": {
            "title": "Firm CRD (Individual Search, Advanced)",
            "type": "string",
            "description": "Advanced: filter individuals by the firm's exact FINRA CRD number (e.g. '149777' for Morgan Stanley). Skips the firm-name lookup. Leave blank to use Firm Name instead."
          },
          "preferLargestFirm": {
            "title": "Prefer Largest Firm",
            "type": "boolean",
            "description": "When the firm name matches multiple FINRA registrations, pick the broker-dealer with the most registered branch offices (usually the main operational firm) instead of FINRA's default text-relevance top result. Ignored when firmCrd is provided.",
            "default": true
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "Filter individuals by city of their registered office (e.g. 'New York', 'Chicago'). Automatically uppercased before querying. Works best when combined with state."
          },
          "state": {
            "title": "State",
            "type": "string",
            "description": "Filter individuals by US state code (2-letter, e.g. 'NY', 'CA'). Automatically uppercased."
          },
          "zipCode": {
            "title": "ZIP Code (ignored)",
            "type": "string",
            "description": "The public FINRA BrokerCheck API does not support ZIP-code filtering. This field is accepted for backwards compatibility but is ignored. Use city+state instead."
          },
          "examName": {
            "title": "Exam Filter (single)",
            "type": "string",
            "description": "Return ONLY individuals who have passed this exam. Enter the full exam name (e.g. 'Investment Banking Registered Representative Examination') OR the FINRA series code (e.g. 'Series 79' or just '79'). Matching is case-insensitive and ignores spacing/punctuation, and it matches both the exam name and its series code. FINRA's API has no server-side exam filter, so the actor fetches candidates from your search (query/firm/state) and keeps only the matching ones — always combine this with a search scope so the run stays fast. Leave blank to disable."
          },
          "examNames": {
            "title": "Exam Filter (multiple, any-of)",
            "type": "array",
            "description": "Return individuals who have passed ANY of these exams (OR logic). Each entry can be a full exam name or a series code (e.g. ['Series 79', 'Series 7']). Same matching rules as the single Exam Filter. Combined with the single Exam Filter (union) when both are set. Leave empty to disable.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum brokers",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "How many brokers to collect per run."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}