Skip to main content

Command Palette

Search for a command to run...

Using an Insider Transaction API to Mimic Insider Portfolios

Published
6 min read

After a long time, hello again, Hashnode! After a break of 2 years, I’m taking some time again to focus on my personal finance projects which led me to get into yet another API hunt.

You might have heard of mimicking insider portfolios. Some investors just can’t be bothered with analyzing stock or fund performance, chasing analyst ratings, portfolio managers or market movements to build portfolios - they simply mimic what people in higher places are doing. Selling the stocks they are selling and buying the stocks they are buying. There are people who have made bags of money with this method.

To test this approach on a data environment, I found this Insider Transactions API from an API provider I previously used and quite liked.


What This Insider Transaction API Offers

Apart from the technical efficiency, the two most important features I’m expecting from this Insider Transaction API:

  1. It provides real-time insider data so I can react in real-time

  2. How many shares were sold, their values, insider’s position before and after the transaction (a.k.a just how major the transaction is)

The API satisfied me in both aspects. An insider transaction is only publicly available after the relevant SEC report (unless otherwise made public in the media, and I’m talking about US stocks, of course). This API brings the insider transaction data in JSON, in real-time with the SEC filing, allowing some real-time action in portfolio mimicking.

The insider movement data also includes all aspects of the reports, from company details, insider metadata, to the classification of the trading, shares sold, pre- and post-share holdings of the insider and even footnotes, which sometimes provide legal insights into the transaction. This can be particularly useful for compliance use-cases.


Example output from insider transactions API

I’ve used AMZN as the example stock. In the output, we see the last three insider transactions within AMZN in a single output, with structured details about both the traded stocks and the insider. Pretty much all the details I wanted for this project.

DISCLAIMER: My focus is on US stocks. It seems to me that this API takes into consideration SEC reports, so the coverage might be limited to the US. Better contact them if you are looking for other regions.

{
  "status": {
    "code": 200,
    "message": "OK",
    "details": ""
  },
  "result": {
    "basic": {
      "document_type": "4",
      "issuer": {
        "company_cik": "1018724",
        "company_name": "AMAZON COM INC",
        "company_ticker": "AMZN",
        "isin": "US0231351067"
      }
    },
    "output": [
      {
        "period_of_report": "2025-10-01",
        "reporting_owner": [
          {
            "owner_id": {
              "owner_cik": "1936006",
              "name": "Herrington Douglas J"
            },
            "address": {
              "street1": "P.O. BOX 81226",
              "street2": "",
              "city": "SEATTLE",
              "stateOrCountry": "WA",
              "postal_code": "98108-1226"
            },
            "owner_role": {
              "is_director": 0,
              "is_officer": 1,
              "is_ten_percent_owner": 0,
              "is_other": 0,
              "insider": "CEO Worldwide Amazon Stores"
            }
          }
        ],
        "non_derivative_table": [
          {
            "security": "Common Stock, par value $.01  per share",
            "activity_date": "2025-10-01",
            "deemed_execution_date": "",
            "transaction": {
              "code": "S, footnoteId: F1",
              "equity_swap": "0, footnoteId: F1"
            },
            "transaction_timeliness": "",
            "transaction_amounts": {
              "shares": "2500",
              "share_per_price": "217.10",
              "currency": "USD",
              "acquired_disposed_code": "D"
            },
            "post_transaction": {
              "holding": "515507"
            },
            "ownership_nature": {
              "direct_or_indirect": "D",
              "ownership": ""
            }
          },
          {
            "security": "Common Stock, par value $.01  per share",
            "activity_date": "",
            "deemed_execution_date": "",
            "transaction": {
              "code": "",
              "equity_swap": ""
            },
            "transaction_timeliness": "",
            "transaction_amounts": {
              "shares": "",
              "share_per_price": "",
              "currency": "USD",
              "acquired_disposed_code": ""
            },
            "post_transaction": {
              "holding": "6596.674"
            },
            "ownership_nature": {
              "direct_or_indirect": "I",
              "ownership": "Amazon.com 401(k) plan account"
            }
          }
        ],
        "footnotes": [
          {
            "id": "F1",
            "text": "This transaction was effected pursuant to a Rule 10b5-1 trading plan adopted by the reporting person on 11/07/2024."
          }
        ],
        "signature": [
          {
            "signature_date": "2025-10-03",
            "signature_name": "/s/ by Susan K. Jong as attorney-in-fact for Douglas J. Herrington, CEO Worldwide Amazon Stores",
            "remarks": "Exhibit 24 Power of Attorney"
          }
        ]
      },
      {
        "period_of_report": "2025-09-10",
        "reporting_owner": [
          {
            "owner_id": {
              "owner_cik": "1630567",
              "name": "Huttenlocher Daniel P"
            },
            "address": {
              "street1": "P.O. BOX 81226",
              "street2": "",
              "city": "SEATTLE",
              "stateOrCountry": "WA",
              "postal_code": "98108-1226"
            },
            "owner_role": {
              "is_director": 1,
              "is_officer": 0,
              "is_ten_percent_owner": 0,
              "is_other": 0,
              "insider": ""
            }
          }
        ],
        "derivative_table": [
          {
            "derivatives": {
              "security": "Restricted Stock Unit Award",
              "activity_date": "2025-09-10",
              "deemed_execution_date": "",
              "transaction": {
                "code": "A",
                "equity_swap": "0"
              },
              "transaction_timeliness": "",
              "transaction_amounts": {
                "shares": "4695",
                "share_per_price": "0",
                "currency": "USD",
                "acquired_disposed_code": "A"
              },
              "post_transaction": {
                "shares_owned": "4695"
              },
              "ownership_nature": {
                "direct_or_indirect": "D"
              }
            }
          }
        ],
        "footnotes": [
          {
            "id": "F1",
            "text": "Converts into Common Stock on a one-for-one basis."
          },
          {
            "id": "F2",
            "text": "Subject to the reporting person's continued service as a director of the issuer, this award will vest and convert into shares of Common Stock of the issuer at a rate of 1,565 shares on each of November 15, 2026, November 15, 2027, and November 15, 2028."
          }
        ],
        "signature": [
          {
            "signature_date": "2025-09-10",
            "signature_name": "/s/ by Mark F. Hoffman as attorney-in-fact for Daniel P. Huttenlocher",
            "remarks": ""
          }
        ]
      },
      {
        "period_of_report": "2025-09-10",
        "reporting_owner": [
          {
            "owner_id": {
              "owner_cik": "1209522",
              "name": "RUBINSTEIN JONATHAN"
            },
            "address": {
              "street1": "P.O. BOX 81226",
              "street2": "",
              "city": "SEATTLE",
              "stateOrCountry": "WA",
              "postal_code": "98108-1226"
            },
            "owner_role": {
              "is_director": 1,
              "is_officer": 0,
              "is_ten_percent_owner": 0,
              "is_other": 0,
              "insider": ""
            }
          }
        ],
        "derivative_table": [
          {
            "derivatives": {
              "security": "Restricted Stock Unit Award",
              "activity_date": "2025-09-10",
              "deemed_execution_date": "",
              "transaction": {
                "code": "A",
                "equity_swap": "0"
              },
              "transaction_timeliness": "",
              "transaction_amounts": {
                "shares": "4695",
                "share_per_price": "0",
                "currency": "USD",
                "acquired_disposed_code": "A"
              },
              "post_transaction": {
                "shares_owned": "4695"
              },
              "ownership_nature": {
                "direct_or_indirect": "D"
              }
            }
          }
        ],
        "footnotes": [
          {
            "id": "F1",
            "text": "Converts into Common Stock on a one-for-one basis."
          },
          {
            "id": "F2",
            "text": "Subject to the reporting person's continued service as a director of the issuer, this award will vest and convert into shares of Common Stock of the issuer at a rate of 1,565 shares on each of November 15, 2026, November 15, 2027, and November 15, 2028."
          }
        ],
        "signature": [
          {
            "signature_date": "2025-09-10",
            "signature_name": "/s/ by Mark F. Hoffman as attorney-in-fact for Jonathan Rubinstein",
            "remarks": ""
          }
        ]
      }
    ]
  }
}

NOTE: Since my last post, GPT has become king in coding. For that reason, I won’t be sharing any basic code snippets because it is so easy to get GPT to write you one. If you want to exchange ideas on specific features to build and their implementation using this insider transactions data, contact me in the comments! 🙏


That’s A Wrap For The Insider Transactions API!

I don’t like to keep my posts too long and the main purpose of my blog is to introduce developers in finance to new APIs (I know just how hard it can get to find reliable data sources), so these are my initial thoughts on the Insider Transactions API by this provider.

I’m sharing the API documentation by Finnworlds if anyone’s interested.

The API can be used to 🔎 build trading signals to detect insider movements before earnings, 🔎 build tools that allow people to mimic portfolios and buy/sell/hold actions of executives, 🔎 compliance and similar use cases.

Happy to exchange ideas with fellow investors/developers!