> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vintl.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Detect insider buying clusters

> Auto-detects when multiple C-suite executives or directors are buying the same stock
within a rolling time window. Only counts open-market purchases (transaction_code='P')
by officers or directors. Default: 3+ insiders within 14 days.




## OpenAPI

````yaml /openapi/v1.yaml get /v1/insider/clusters
openapi: 3.1.0
info:
  title: Vintl API
  version: 1.0.0
  description: >
    Point-in-time macro-economic and treasury data API.


    The killer feature: `?as_of=DATE` returns what economic data was known at
    any historical date.

    Requires Pro plan or higher — free plan returns latest data only.
  contact:
    name: Vintl Support
    url: https://vintl.io
  license:
    name: Proprietary
servers:
  - url: https://api.vintl.io
    description: Production
  - url: http://localhost:8080
    description: Local development
security:
  - ApiKeyAuth: []
tags:
  - name: Health
    description: Liveness and readiness probes
  - name: Auth
    description: API key validation and plan info
  - name: Treasury
    description: U.S. Treasury yield curve data (1990-present, never revised)
  - name: Macro
    description: Economic indicators with point-in-time vintage tracking
  - name: Series
    description: Series discovery and metadata
  - name: Insider
    description: SEC Form 4 insider trading data with cluster detection
paths:
  /v1/insider/clusters:
    get:
      tags:
        - Insider
      summary: Detect insider buying clusters
      description: >
        Auto-detects when multiple C-suite executives or directors are buying
        the same stock

        within a rolling time window. Only counts open-market purchases
        (transaction_code='P')

        by officers or directors. Default: 3+ insiders within 14 days.
      parameters:
        - name: min_insiders
          in: query
          schema:
            type: integer
            minimum: 1
            default: 3
          description: Minimum number of distinct insiders to qualify as a cluster
        - name: days
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 365
            default: 14
          description: Rolling window in days
        - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: Detected insider buying clusters
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    example: insider_clusters
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/InsiderCluster'
                  results_count:
                    type: integer
                  has_more:
                    type: boolean
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    limit:
      name: limit
      in: query
      schema:
        type: integer
        minimum: 1
        maximum: 1000
        default: 100
  schemas:
    InsiderCluster:
      type: object
      description: >-
        Auto-detected insider buying cluster — 3+ C-suite/directors buying the
        same stock
      properties:
        ticker:
          type: string
          example: NVDA
        issuer_name:
          type: string
        cluster_size:
          type: integer
          description: Number of distinct insiders buying
          example: 3
        total_shares:
          type: string
          example: '150000'
        total_value:
          type: string
          description: Total dollar value of purchases
          example: '1500000.00'
        date_first:
          type: string
          format: date-time
        date_last:
          type: string
          format: date-time
        insiders:
          type: array
          items:
            type: object
            properties:
              owner_name:
                type: string
              officer_title:
                type: string
              shares:
                type: string
              price_per_share:
                type: string
              transaction_date:
                type: string
                format: date-time
              is_director:
                type: boolean
              is_officer:
                type: boolean
    Problem:
      type: object
      description: RFC 9457 Problem Details (Content-Type application/problem+json)
      properties:
        type:
          type: string
          format: uri
          example: https://macrodata.dev/errors/not-found
        title:
          type: string
          example: Not Found
        status:
          type: integer
          example: 404
        detail:
          type: string
          example: series 'INVALID' not found
        instance:
          type: string
          example: /v1/series/INVALID
        request_id:
          type: string
          example: req_19d40c11691b60ece4cc73351271260
        field:
          type: string
          description: Which field caused the error (on validation errors)
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: https://macrodata.dev/errors/unauthorized
            title: Unauthorized
            status: 401
            detail: API key is required. Set the X-API-Key header.
            instance: /v1/ping
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key prefixed with `mda_live_sk_`

````