{
  "openapi": "3.0.1",
  "info": {
    "title": "📈 SEC Insider Trading Scraper",
    "description": "Turn raw SEC Form 4 filings into alert-ready insider trades. Search by ticker, company, insider, CIK, or date. Get one row per trade with shares, price, value, role, decoded action, and precomputed cluster signals. Export, run via API, schedule, or integrate with other tools.",
    "version": "0.1",
    "x-build-id": "f4U7Ze52w7MTkPN3I"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/skootle~sec-form4-insider-trades/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-skootle-sec-form4-insider-trades",
        "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/skootle~sec-form4-insider-trades/runs": {
      "post": {
        "operationId": "runs-sync-skootle-sec-form4-insider-trades",
        "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/skootle~sec-form4-insider-trades/run-sync": {
      "post": {
        "operationId": "run-sync-skootle-sec-form4-insider-trades",
        "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": {
          "contactEmail": {
            "title": "Contact email (required by SEC)",
            "type": "string",
            "description": "Required. SEC.gov Fair Access policy requires every request to include a real contact email in the User-Agent header. Use your work email; SEC may contact you about unusual usage. Stored encrypted; never displayed publicly."
          },
          "tickers": {
            "title": "Issuer tickers",
            "type": "array",
            "description": "Stock tickers to pull Form 4 filings for (e.g. ['AAPL', 'TSLA', 'NVDA']).",
            "items": {
              "type": "string"
            }
          },
          "issuerNames": {
            "title": "Issuer company names",
            "type": "array",
            "description": "Full or partial issuer company names (e.g. ['Apple Inc', 'Tesla']).",
            "items": {
              "type": "string"
            }
          },
          "ciks": {
            "title": "Issuer or insider CIKs",
            "type": "array",
            "description": "Specific 10-digit Central Index Keys to look up. Use issuer CIKs to track a company; use insider CIKs to track a specific person's filings across companies.",
            "items": {
              "type": "string"
            }
          },
          "insiderNames": {
            "title": "Insider names",
            "type": "array",
            "description": "Reporting-owner names to search for (e.g. ['Jeff Bezos', 'Elon Musk']).",
            "items": {
              "type": "string"
            }
          },
          "startDate": {
            "title": "Start date",
            "type": "string",
            "description": "ISO date (YYYY-MM-DD) for earliest filing date. Defaults to 30 days ago."
          },
          "endDate": {
            "title": "End date",
            "type": "string",
            "description": "ISO date (YYYY-MM-DD) for latest filing date. Defaults to today."
          },
          "emitClusterSignals": {
            "title": "Emit cluster-buy / cluster-sell signals",
            "type": "boolean",
            "description": "Run a rolling-window detection across all parsed transactions and emit one signal record per detected cluster (3+ unique insiders buying/selling the same issuer within N days).",
            "default": true
          },
          "clusterWindowDays": {
            "title": "Cluster rolling-window days",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many days insiders' transactions must occur within for a cluster signal. Default 5.",
            "default": 5
          },
          "clusterMinInsiders": {
            "title": "Cluster minimum insiders",
            "minimum": 2,
            "maximum": 20,
            "type": "integer",
            "description": "Minimum number of distinct insiders required to fire a cluster signal. Default 3.",
            "default": 3
          },
          "maxFilings": {
            "title": "Max Form 4 filings",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Upper bound on filings fetched. Each filing typically contains 1-5 transactions. Default 10 (trial); production 100-1000.",
            "default": 10
          },
          "maxTransactions": {
            "title": "Max transaction rows",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Upper bound on transaction rows pushed. Used as a safety cap independent of filings.",
            "default": 5000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}