{
  "openapi": "3.0.1",
  "info": {
    "title": "SEC Form 4 Insider Trading Scraper: Buys & Sells",
    "description": "Pull SEC Form 4 insider trades by ticker, CIK, insider name or the whole market, back to 2003, no login or API key: 100 rows in 19 seconds. Each row is one transaction line: code, shares, price, value, holding after, roles, footnotes, Rule 10b5-1 flag. JSON or CSV, pay per row.",
    "version": "0.1",
    "x-build-id": "FzbWV6e4Q7IGSUoe8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~sec-form-4-insider-trading-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-sec-form-4-insider-trading-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/automation_craft~sec-form-4-insider-trading-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-sec-form-4-insider-trading-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/automation_craft~sec-form-4-insider-trading-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-sec-form-4-insider-trading-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": {
          "tickers": {
            "title": "Company tickers",
            "type": "array",
            "description": "Stock ticker symbols of listed companies, for example AAPL, TSLA or BRK-B (BRK.B is read as BRK-B). Each is matched to its company through the SEC's list of listed tickers; a ticker the SEC does not list gets a free status row. Rows are the insider trades in these companies' shares.",
            "items": {
              "type": "string"
            }
          },
          "issuerCiks": {
            "title": "Company CIK numbers",
            "type": "array",
            "description": "SEC Central Index Keys (CIK) of the companies whose insiders you want, with or without leading zeros (320193 or 0000320193), or an EDGAR company link. Use a CIK for a company that has no ticker.",
            "items": {
              "type": "string"
            }
          },
          "companyNames": {
            "title": "Company names",
            "type": "array",
            "description": "Names of listed companies, for example Apple Inc. A name is used only when exactly one listed company carries it (letters and digits compared; case, punctuation and spacing aside). Otherwise a free status row lists the nearest listed names. Given as one text instead of a list, put one name per line.",
            "items": {
              "type": "string"
            }
          },
          "insiderCiks": {
            "title": "Insider CIK numbers",
            "type": "array",
            "description": "CIKs of reporting owners (the insiders: officers, directors, 10% owners, funds), or their EDGAR links. Rows are every trade they reported, at every company. With companies given too, only their trades in those companies.",
            "items": {
              "type": "string"
            }
          },
          "insiderNames": {
            "title": "Insider names",
            "type": "array",
            "description": "Names of insiders as the SEC writes reporting owners, last name first, for example Musk Elon or Huang Jen Hsun. A row is kept when one reporting owner's name holds every word (whole words, any case). With companies given too, only their trades in those companies. Given as one text, put one name per line.",
            "items": {
              "type": "string"
            }
          },
          "accessionNumbers": {
            "title": "Accession numbers or filing links",
            "type": "array",
            "description": "Form 3, 4 or 5 filings to read as asked, by accession number (0001104659-26-075213) or EDGAR filing link. A bare accession number is looked up under the CIK its first ten digits name; for a filing an agent filed, paste its EDGAR link. The row filters below apply; the filing date window and form settings do not. Cannot be combined with companies or insiders.",
            "items": {
              "type": "string"
            }
          },
          "daysBack": {
            "title": "Days back (filing date)",
            "minimum": 0,
            "maximum": 9000,
            "type": "integer",
            "description": "Read filings filed in the last N days (0 = today only, by the SEC's US Eastern date). Cannot be combined with dateFrom."
          },
          "dateFrom": {
            "title": "Filed from",
            "type": "string",
            "description": "First filing date to read, YYYY-MM-DD. Insider filings are XML from 2003-06-30; older ones are counted, not delivered."
          },
          "dateTo": {
            "title": "Filed to",
            "type": "string",
            "description": "Last filing date to read, YYYY-MM-DD (default: today)."
          },
          "maxAgeHours": {
            "title": "Max age (hours)",
            "minimum": 1,
            "maximum": 17520,
            "type": "integer",
            "description": "Only filings the SEC accepted in the last N hours, by their exact acceptance time (one more request per filing with matching lines; the acceptance time is then on every row). Filings are found by filing date from the day the window starts, so a filing the SEC dates earlier than that day is not read. Cannot be combined with dateFrom, dateTo or daysBack."
          },
          "formTypes": {
            "title": "Forms",
            "type": "array",
            "description": "Which ownership forms to read. Form 4 (the default) reports a change within two business days; Form 5 is the annual statement of late or exempt trades; Form 3 is the first statement of holdings (holding rows only).",
            "items": {
              "type": "string",
              "enum": [
                "4",
                "5",
                "3"
              ],
              "enumTitles": [
                "Form 4: changes in ownership",
                "Form 5: annual statement",
                "Form 3: initial holdings"
              ]
            }
          },
          "includeAmendments": {
            "title": "Include amendments (4/A, 5/A, 3/A)",
            "type": "boolean",
            "description": "Read amended filings too (on by default). An amendment row carries isAmendment and the date of the original filing."
          },
          "preset": {
            "title": "Preset",
            "enum": [
              "open_market_buys",
              "open_market_sales",
              "officer_trades",
              "planned_sales",
              "large_trades",
              "ten_percent_owner_trades"
            ],
            "type": "string",
            "description": "A ready made filter set. It fills only the filters you leave empty; a filter you set yourself is used as you set it. Open market buys: code P, shares. Open market sales: code S, shares. Officer trades: P and S by officers. Planned sales: S under a Rule 10b5-1 plan. Large trades: P and S of USD 1,000,000 or more. 10% owner trades: P and S by 10% owners."
          },
          "transactionCodes": {
            "title": "Transaction codes",
            "type": "array",
            "description": "Only lines with these SEC transaction codes. P and S are open market purchases and sales; A grants; M exercises; F shares withheld for taxes; G gifts. Empty: every code.",
            "items": {
              "type": "string",
              "enum": [
                "P",
                "S",
                "A",
                "M",
                "F",
                "G",
                "D",
                "C",
                "X",
                "O",
                "J",
                "I",
                "L",
                "W",
                "Z",
                "K",
                "E",
                "H",
                "U",
                "V"
              ],
              "enumTitles": [
                "P: open market or private purchase",
                "S: open market or private sale",
                "A: grant or award",
                "M: option or derivative exercise (exempt)",
                "F: tax or exercise price paid in shares",
                "G: gift",
                "D: disposition to the issuer",
                "C: conversion of a derivative",
                "X: in the money exercise",
                "O: out of the money exercise",
                "J: other acquisition or disposition",
                "I: discretionary transaction",
                "L: small acquisition",
                "W: will or inheritance",
                "Z: voting trust",
                "K: equity swap",
                "E: short derivative expiration",
                "H: long derivative expiration",
                "U: tender in a change of control",
                "V: voluntarily reported early"
              ]
            }
          },
          "acquiredDisposed": {
            "title": "Acquired or disposed",
            "enum": [
              "A",
              "D"
            ],
            "type": "string",
            "description": "Only acquisitions (A) or only disposals (D). Empty: both."
          },
          "minTransactionValue": {
            "title": "Minimum value (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Only lines worth at least this many US dollars (shares times price per share). A line whose price the filing gives only in a footnote, or not at all, has no known value and is left out by this filter."
          },
          "maxTransactionValue": {
            "title": "Maximum value (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Only lines worth at most this many US dollars. Lines without a known value are left out by this filter."
          },
          "minShares": {
            "title": "Minimum shares",
            "minimum": 0,
            "type": "number",
            "description": "Only lines of at least this many shares."
          },
          "transactionDateFrom": {
            "title": "Traded from",
            "type": "string",
            "description": "Only lines with a transaction date on or after this day, YYYY-MM-DD (the filing date window still decides which filings are read)."
          },
          "transactionDateTo": {
            "title": "Traded to",
            "type": "string",
            "description": "Only lines with a transaction date on or before this day, YYYY-MM-DD."
          },
          "securityTables": {
            "title": "Securities",
            "type": "array",
            "description": "Common stock lines (non-derivative table), options and other derivative lines (derivative table), or both (default).",
            "items": {
              "type": "string",
              "enum": [
                "non-derivative",
                "derivative"
              ],
              "enumTitles": [
                "Non-derivative (shares)",
                "Derivative (options, units, warrants)"
              ]
            }
          },
          "insiderRoles": {
            "title": "Insider roles",
            "type": "array",
            "description": "Only filings where a reporting owner holds one of these roles. Empty: every role.",
            "items": {
              "type": "string",
              "enum": [
                "director",
                "officer",
                "ten_percent_owner",
                "other"
              ],
              "enumTitles": [
                "Director",
                "Officer",
                "10% owner",
                "Other"
              ]
            }
          },
          "officerTitleContains": {
            "title": "Officer title contains",
            "type": "string",
            "description": "Only filings where an insider's officer title holds every word of this text (whole words, any case), for example CEO, Chief Financial Officer or President."
          },
          "rule10b5_1": {
            "title": "Rule 10b5-1 trading plans",
            "enum": [
              "any",
              "only",
              "exclude"
            ],
            "type": "string",
            "description": "Keep every line (any), only planned trades (only), or leave planned trades out (exclude). A trade counts as planned when the filing ticks the Rule 10b5-1 box (Forms filed from April 2023) or its footnotes or remarks name Rule 10b5-1."
          },
          "excludeEntityInsiders": {
            "title": "Leave out funds and companies as insiders",
            "type": "boolean",
            "description": "Leave out filings whose every reporting owner is a fund, trust or company (a name with a word such as LLC, LP, Inc, Trust, Fund, Partners, Capital or Holdings)."
          },
          "footnoteTextContains": {
            "title": "Footnote or remarks text contains",
            "type": "string",
            "description": "Only lines whose footnotes or the filing's remarks contain this text (any case), for example 10b5-1, gift, trust or weighted average."
          },
          "includeHoldingRows": {
            "title": "Holding lines as rows",
            "type": "boolean",
            "description": "Deliver the holding lines of Forms 4 and 5 (positions reported without a trade) as rows of their own, charged as Insider holding. Off by default: they are attached to every transaction row as holdings, free. Form 3 lines are always holding rows."
          },
          "includeAcceptanceTime": {
            "title": "Acceptance time",
            "type": "boolean",
            "description": "Read each delivered filing's header page for the exact time the SEC accepted it (acceptedAt, US Eastern with offset). One more request per filing with rows, no extra charge."
          },
          "includeIssuerSummaries": {
            "title": "Company summaries",
            "type": "boolean",
            "description": "At the end of the run, one free row per company: transactions, insiders, open market buys and sells (count, shares, dollars), net buying and the top insiders, over the rows this run delivered."
          },
          "detectClusterBuys": {
            "title": "Cluster buys",
            "type": "boolean",
            "description": "At the end of the run, one free row per cluster: open market purchases (code P) by several different insiders of one company within a few days, over the rows this run delivered."
          },
          "clusterMinInsiders": {
            "title": "Cluster: insiders",
            "minimum": 2,
            "maximum": 50,
            "type": "integer",
            "description": "Different insiders a cluster needs (default 3). Only with detectClusterBuys."
          },
          "clusterWindowDays": {
            "title": "Cluster: days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Days a cluster may span, by transaction date (default 14). Only with detectClusterBuys."
          },
          "clusterIncludeEntities": {
            "title": "Cluster: count funds and companies",
            "type": "boolean",
            "description": "Count insiders whose name is a fund, trust or company toward a cluster (on by default). Only with detectClusterBuys."
          },
          "sortBy": {
            "title": "Sorted list by",
            "enum": [
              "filingDate",
              "transactionDate",
              "value",
              "shares",
              "ticker",
              "signalScore"
            ],
            "type": "string",
            "description": "Also save every delivered row in this order to the run's key-value store (record SORTED-ROWS): filing date, transaction date, value, shares, ticker or signal score. The dataset keeps the reading order (newest filing first)."
          },
          "sortOrder": {
            "title": "Sort order",
            "enum": [
              "desc",
              "asc"
            ],
            "type": "string",
            "description": "Highest first (desc, default) or lowest first (asc). Only with sortBy."
          },
          "outputProfile": {
            "title": "Row format",
            "enum": [
              "full",
              "compact"
            ],
            "type": "string",
            "description": "full (default): nested lists of insiders, footnotes and holdings. compact: one flat row per line for spreadsheets and AI agents (lists joined into text)."
          },
          "includePersonalData": {
            "title": "Include personal data",
            "type": "boolean",
            "description": "All public data is always delivered, so this setting has no effect (it is kept so saved inputs keep working)."
          },
          "maxItems": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The run stops after this many transaction and holding rows (default 100). Status, summary and company rows are free and not counted."
          },
          "maxFilingsPerCompany": {
            "title": "Maximum filings per company",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "At most this many filings with delivered rows per company (newest first); the run goes on for the other companies."
          },
          "maxRowsPerCompany": {
            "title": "Maximum rows per company",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "At most this many rows per company; the run goes on for the other companies."
          },
          "maxFilingsRead": {
            "title": "Maximum filings read",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after reading this many filings, whatever they matched (for example the latest 500 Form 4s of the market)."
          },
          "maxRunSeconds": {
            "title": "Run time budget (seconds)",
            "minimum": 30,
            "maximum": 86400,
            "type": "integer",
            "description": "Stop reading after this many seconds and finish with what was delivered."
          },
          "maxRequestsPerSecond": {
            "title": "Requests per second",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "Pace of requests to the SEC, 1 to 4 per second (default 4, under the SEC's fair access limit of 10)."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed: the SEC answers the run's own address, and one Apify datacenter proxy session is the single fallback when it refuses. Turn on Apify Proxy to send every request through that session."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}