{
  "openapi": "3.1.0",
  "info": {
    "title": "SEC Form 4 Insider Trade Alerts",
    "version": "1.0.0",
    "summary": "A public company's recent Form 4 insider buy/sell filings as structured data, live from SEC EDGAR, with plain-English context per transaction.",
    "description": "Live SEC Form 4 insider buy and sell filings turned into structured data with plain-English context per transaction, built for fintech and research tools.\n\nGenerated from the service's own TypeScript contract types, so this document describes what the API actually returns. Operated by EAC Ventures, LLC.\n\nSubscribe, including the free tier: https://rapidapi.com/aervik-labs-aervik-labs-default/api/sec-form-4-insider-trade-alerts-api\n\nKnown limits:\n- Only EDGAR’s recent filing window is read, and amended filings (Form 4/A) are not read, so a returned transaction may since have been amended.\n- Only filings that name the requested company as the issuer are returned; its own filings as an insider in another company are excluded.\n- In a joint filing, each transaction is shown under the first-listed reporting owner only.\n- Post-transaction holdings are those on the row’s ownership line (direct or indirect), not the insider’s total position.\n- is_rule_10b5_1_plan: false means the row’s footnotes do not say it was under a plan, not that there was no plan.\n- AI notes are written for at most 20 transactions per request; later rows get a template note marked as not AI-written.\n- Forms 3, 5 and 144 are not read.\n- Informational, not investment advice.\n\nSources, freshness and live health: https://aerviklabs.com/sources.json (https://aerviklabs.com/data-sources/#sec-form4-alerts). What we do when something cannot be established: https://aerviklabs.com/trust/\n\nThis OpenAPI document is available under the MIT License (Copyright (c) 2026 EAC Ventures, LLC). Use of the API itself is governed by its Terms of Service, not by that license.",
    "contact": {
      "name": "Aervik Labs",
      "url": "https://aerviklabs.com/about/"
    },
    "x-aervik-provenance": {
      "sources_json": "https://aerviklabs.com/sources.json",
      "data_sources_page": "https://aerviklabs.com/data-sources/#sec-form4-alerts",
      "trust_page": "https://aerviklabs.com/trust/",
      "read_method": "live",
      "known_limits": [
        "Only EDGAR’s recent filing window is read, and amended filings (Form 4/A) are not read, so a returned transaction may since have been amended.",
        "Only filings that name the requested company as the issuer are returned; its own filings as an insider in another company are excluded.",
        "In a joint filing, each transaction is shown under the first-listed reporting owner only.",
        "Post-transaction holdings are those on the row’s ownership line (direct or indirect), not the insider’s total position.",
        "is_rule_10b5_1_plan: false means the row’s footnotes do not say it was under a plan, not that there was no plan.",
        "AI notes are written for at most 20 transactions per request; later rows get a template note marked as not AI-written.",
        "Forms 3, 5 and 144 are not read.",
        "Informational, not investment advice."
      ]
    },
    "termsOfService": "https://insider.aerviklabs.com/terms"
  },
  "externalDocs": {
    "description": "Product page",
    "url": "https://aerviklabs.com/apis/sec-form4-alerts/"
  },
  "servers": [
    {
      "url": "https://sec-form-4-insider-trade-alerts-api.p.rapidapi.com",
      "description": "RapidAPI gateway"
    }
  ],
  "security": [
    {
      "RapidApiKey": []
    }
  ],
  "paths": {
    "/insider-transactions": {
      "get": {
        "operationId": "getInsiderTransactions",
        "summary": "A company's recent SEC Form 4 insider transactions, by ticker or CIK",
        "parameters": [
          {
            "$ref": "#/components/parameters/RapidApiHost"
          },
          {
            "name": "ticker",
            "in": "query",
            "required": false,
            "description": "Stock ticker, 1-10 letters, optionally with . or - (for example BRK.B). Case-insensitive. Provide ticker or cik.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z.\\-]{1,10}$"
            }
          },
          {
            "name": "cik",
            "in": "query",
            "required": false,
            "description": "SEC Central Index Key, 1-10 digits, leading zeros optional. When both cik and ticker are given, cik is used.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{1,10}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "How many of the company's most recent Form 4 filings to examine. It counts filings, not transactions: one filing can report several.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 25,
              "default": 5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InsiderTransactionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "RapidApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-RapidAPI-Key",
        "description": "Your RapidAPI application key."
      }
    },
    "parameters": {
      "RapidApiHost": {
        "name": "X-RapidAPI-Host",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string",
          "const": "sec-form-4-insider-trade-alerts-api.p.rapidapi.com"
        }
      }
    },
    "schemas": {
      "Company": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "ticker": {
            "type": [
              "string",
              "null"
            ]
          },
          "cik": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "ticker",
          "cik"
        ]
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable code. On 404, company_not_found means no SEC-registered company has that ticker; no_filings_found means none of the Form 4s examined names the company as the issuer: its recent EDGAR filing list has none, or each one examined reports the company as a reporting owner in another company. message says which, and whether older filings went unexamined."
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "error",
          "message"
        ],
        "description": "Every non-2xx JSON response from the API itself. `error` is a stable machine-readable code; `message` is for humans and may change. Codes this API can return: `ambiguous_ticker`, `company_not_found`, `edgar_api_error`, `internal_error`, `invalid_cik`, `invalid_limit`, `invalid_ticker`, `method_not_allowed`, `missing_input`, `no_filings_found`, `not_found`, `provider_misconfigured`, `unauthorized`. RapidAPI answers authentication, subscription and rate-limit failures itself, in its own format."
      },
      "InsiderTransactionRow": {
        "type": "object",
        "properties": {
          "insider_name": {
            "type": "string"
          },
          "insider_cik": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "transaction_type": {
            "type": "string"
          },
          "transaction_code": {
            "type": "string"
          },
          "acquired_disposed_code": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "A",
              "D",
              null
            ]
          },
          "security_title": {
            "type": "string"
          },
          "is_derivative": {
            "type": "boolean"
          },
          "shares": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_per_share": {
            "type": [
              "number",
              "null"
            ]
          },
          "transaction_value_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Computed by this API as shares times price_per_share, as the filing states them. null when either is missing, and on a derivative row whose price_per_share is 0: on an exercise or conversion that column is often 0 by the form's instructions, and the price paid is the conversion or exercise price, which this field does not use."
          },
          "transaction_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "post_transaction_holdings": {
            "type": [
              "number",
              "null"
            ],
            "description": "The amount the filing states on this row's ownership line (ownership_type) after the transaction. One line only, not the reporting person's total holdings. On a derivative row it counts that derivative security, not shares."
          },
          "ownership_type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "direct",
              "indirect",
              null
            ]
          },
          "is_rule_10b5_1_plan": {
            "type": "boolean",
            "description": "True only when that transaction's own footnote places it under a Rule 10b5-1 trading plan. False means not stated for this row, not that the transaction was made outside a plan."
          },
          "ai_significance_note": {
            "type": "string",
            "description": "Plain-English context written from this transaction's filing data. Informational only, not investment advice. If a model-written note could not be produced, the text says so."
          },
          "accession_number": {
            "type": "string"
          },
          "filing_date": {
            "type": "string"
          },
          "period_of_report": {
            "type": [
              "string",
              "null"
            ]
          },
          "filing_index_url": {
            "type": "string"
          }
        },
        "required": [
          "insider_name",
          "insider_cik",
          "role",
          "transaction_type",
          "transaction_code",
          "acquired_disposed_code",
          "security_title",
          "is_derivative",
          "shares",
          "price_per_share",
          "transaction_value_usd",
          "transaction_date",
          "post_transaction_holdings",
          "ownership_type",
          "is_rule_10b5_1_plan",
          "ai_significance_note",
          "accession_number",
          "filing_date",
          "period_of_report",
          "filing_index_url"
        ]
      },
      "InsiderTransactionsResponse": {
        "type": "object",
        "properties": {
          "company": {
            "$ref": "#/components/schemas/Company"
          },
          "filings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InsiderTransactionRow"
            },
            "description": "One entry per reported transaction, newest filing first: by filing_date, then by the time SEC EDGAR accepted each filing (EDGAR's own list order if that time is missing). Only Form 4 filings that name the requested company as the issuer are included; a filing where the company is itself a reporting owner in another company's stock is left out, so fewer filings than limit can come back. A filing that was retrieved but could not be read in full fails the request (502) rather than being left out."
          },
          "disclaimer": {
            "type": "string",
            "description": "The same notice on every successful response: this data is informational and is not investment advice. It also states what is not read — amended filings (Form 4/A), Form 4s older than the requested window, and filings where the company is a reporting owner in another issuer — and that a jointly filed transaction is shown under the first-listed reporting owner."
          },
          "narrative_provider": {
            "type": "string"
          },
          "narrative_status": {
            "type": "string",
            "enum": [
              "ok",
              "degraded"
            ],
            "description": "ok, or degraded when AI-written notes are enabled and at least one note in this response was not written by the model (the model call failed, or the request passed the per-request AI note limit). Each such note says so in its own text."
          },
          "data_source": {
            "type": "string"
          },
          "generated_at": {
            "type": "string"
          }
        },
        "required": [
          "company",
          "filings",
          "disclaimer",
          "narrative_provider",
          "narrative_status",
          "data_source",
          "generated_at"
        ]
      }
    }
  }
}
