/api/status
Health check endpoint. Returns the current API status.
$ curl https://api.insiderlayer.com/api/status
{ "status": "ok" }
The InsiderLayer API provides structured insider transaction data from 35 countries, covering over 80% of the global stock market. Every transaction is mapped to a single, standardized schema and includes a link back to the original filing.
All API requests require an API key passed via the X-API-Key header. See Authentication for details.
Fetch the most recent insider transactions:
$ curl -H "X-API-Key: YOUR_API_KEY" \
https://api.insiderlayer.com/api/transactions
X-API-Key
required
header
All requests must include your API key in the X-API-Key HTTP header. You can obtain an API key by signing up on our registration page.
/api/status
Health check endpoint. Returns the current API status.
$ curl https://api.insiderlayer.com/api/status
{ "status": "ok" }
/api/transactions
Query for insider transactions. This endpoint returns transactions that match all specified filters. When no filters are specified, the newest transactions are returned up to the specified limit. Multiple values per filter are possible by specifying the parameter multiple times. Comma-separated values are not supported.
| Parameter | Type | Required | Description |
|---|---|---|---|
isin |
string[] |
optional | ISIN of the instrument that was traded. Specify multiple times to filter for multiple ISINs. Each value must be exactly 12 characters. |
figi |
string[] |
optional | Share-class level FIGI of the instrument that was traded. Specify multiple times to filter for multiple FIGIs. Each value must be exactly 12 characters. |
lei |
string[] |
optional | LEI of the issuing company. Specify multiple times to filter for multiple LEIs. Each value must be exactly 20 characters. |
country |
string[] |
optional | ISO 3166-1 alpha-2 country code. Specify multiple times to include transactions from multiple countries. See Data Sources for supported countries. |
transaction_date_from |
date |
optional | Minimum (inclusive) transaction date. Format: YYYY-MM-DD. Only transactions occuring on or after this date will be returned. |
transaction_date_to |
date |
optional | Maximum (exclusive) transaction date. Format: YYYY-MM-DD. Only transactions occuring before this date will be returned. |
publication_date_from |
date |
optional | Minimum (inclusive) publication date. Format: YYYY-MM-DD. Only transactions published on or after this date will be returned. |
publication_date_to |
date |
optional | Maximum (exclusive) publication date. Format: YYYY-MM-DD. Only transactions published before this date will be returned. |
pagination |
string |
optional | Opaque pagination token. Use the _links.next value from a previous response to fetch the next page of results. |
limit |
integer |
optional | Maximum number of results to return. Default: 1000. Minimum: 1. Maximum: 1000. |
Fetch transactions for a specific country:
$ curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.insiderlayer.com/api/transactions?country=DE&limit=5"
Fetch transactions for multiple FIGIs:
$ curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.insiderlayer.com/api/transactions?figi=BBG001S5N8V8&figi=BBG009S3NB21"
Fetch transactions within a date range:
$ curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.insiderlayer.com/api/transactions?transaction_date_from=2026-01-01&transaction_date_to=2026-04-01&country=KR&limit=3"
A successful response returns a JSON object with the following structure:
| Field | Type | Description |
|---|---|---|
_links |
object |
Contains pagination links. See Pagination. |
_links.next |
string | null |
URL to the next page of results. null or absent when there are no more results. |
data |
array |
Array of transaction objects. Each object has the fields described below. |
| Field | Type | Nullable | Description |
|---|---|---|---|
id |
string |
no | Unique identifier for the transaction. May be based on the source system's unique ids, but this is not guaranteed. |
country |
string |
no | ISO 3166-1 alpha-2 country code of the source regulator or exchange. |
source |
string |
no | Identifies the source system. See the Data Sources section for a list of possible values. |
source_link |
string |
no | Direct URL to the original filing on the regulator's or exchange's website. |
reporting_name |
string |
yes | Name of the reporting person or entity, as reported in the original filing. Always present except for transactions reported in Switzerland. |
reporting_position |
string |
no | Position or title of the reporting person within the company, as reported (e.g. "Director", "Vorstand", "CEO"). |
issuer_name |
string |
no | Name of the issuing company, as reported in the original filing. |
figi |
string |
no | Share-class level FIGI (Financial Instrument Global Identifier) of the instrument that was traded. |
lei |
string |
yes | LEI (Legal Entity Identifier) of the issuing company. Present when provided by the source; may be null for some sources. |
security_type |
string |
no | Type of security traded. One of: "share", "other". |
transaction_type |
string |
no | Nature of the transaction. One of: "purchase", "sale", "other". |
transaction_date |
date |
no | Date on which the transaction occurred. Format: YYYY-MM-DD. |
publication_date |
date |
no | Date on which the transaction was published by the source regulator or exchange. Format: YYYY-MM-DD. |
price |
number |
no | Average price per security, in the currency specified by the currency field. |
amount_delta |
number |
no | Change in the number of securities held by the reporting entity. Positive for acquisitions (purchases), negative for disposals (sales). |
amount_post |
number |
yes | Number of securities held by the reporting entity after the transaction. May be null for sources that do not report this value. |
currency |
string |
no | ISO 4217 currency code for the price column (e.g. "EUR", "USD", "KRW"). May not be the origin country's currency. |
Results are paginated with a maximum of 1000 transactions per page (configurable via the limit parameter).
When a response contains a full page, it includes a _links.next URL that can be used to fetch the next page.
Simply follow this URL in subsequent requests to iterate through all results.
The pagination token is an opaque string derived from the timestamp of the last returned transaction.
| Status Code | Description |
|---|---|
200 |
Success. The response body contains the requested data. |
400 |
Bad Request. One or more parameters are invalid. The response body includes a message field with details. |
403 |
Forbidden. The API key is missing or invalid. |
500 |
Internal Server Error. The request could not be processed due to a server-side issue. |
InsiderLayer collects insider transaction data from regulatory filings and stock exchange disclosures. Each source is mapped to a unified schema. Below are the currently implemented sources with their specific characteristics.
Data is sourced from the EDGAR system of the U.S. Securities and Exchange Commission (SEC). Officers, directors, and beneficial owners of more than 10% of any class of equity securities must file their transactions. The source covers US companies as well as foreign companies listed on US exchanges.
secSource URL: sec.gov
Data is sourced from the BaFin (Bundesanstalt für Finanzdienstleistungsaufsicht) Directors' Dealings database. Managers of publicly traded German companies must report transactions involving shares or financial instruments of their own company.
bafinSource URL: bafin.de
Data is sourced from the SER (SIX Exchange Regulation) Managemeng Transactions database. Executives, directors and senior managers of publicly traded Swiss companies, as well as founding sponsors of SPACs, must report transactions involving shares or financial instruments of their own company.
serSource URL: ser-ag.com
Data is sourced from the National Stock Exchange of India (NSE). Promoters, directors, and key managerial personnel of listed companies must disclose their holdings and transactions.
nseSource URL: nseindia.com
Data is sourced from the Beijing Stock Exchange (BSE), Shenzhen Stock Exchange (SZSE), and Shanghai Stock Exchange (SSE), as well as the Hong Kong Stock Exchange (HKEX). Directors, supervisors, and senior management of listed companies must report changes in their shareholdings.
HK country code.bse / szse / sse / hkexSource URLs: bse.cn · szse.cn · sse.com.cn · hkex.com.hk
Data is sourced from the OpenDART system operated by the Financial Supervisory Service (FSS) of South Korea. Major shareholders, officers, and their relatives must report changes in shareholdings of listed Korean companies.
dartSource URL: dart.fss.or.kr
Data is sourced from the System for Electronic Disclosure by Insiders (SEDI) operated by the Canadian Securities Administrators (CSA). Directors, senior officers, and 10% security holders of Canadian reporting issuers must report their transactions to SEDI, including transactions in shares, debt securities, and derivatives such as options, rights, and warrants.
sediSource URL: sedi.ca
Data is sourced from the National Storage Mechanism (NSM) operated by the Financial Conduct Authority (FCA). Persons discharging managerial responsibilities (PDMRs) and persons closely associated with them must disclose their transactions in shares or related financial instruments of UK listed issuers. The notifications are filed in the standard format of Article 19 of the UK Market Abuse Regulation.
nsmSource URL: data.fca.org.uk
National regulators and stock exchanges across the European Union and European Economic Area, under the common Market Abuse Regulation (MAR) framework.
Transactions by 10%-holders of listed companies reported through Japan's EDINET system under the Financial Instruments and Exchange Act (FIEA).
Insider transaction reports from the Maya disclosure system of the Tel Aviv Stock Exchange (TASE), the only exchange in Israel.
Insider transaction reported by the three major exchanges in South Africa, the Johannesburg Stock Exchange, A2X Markets, and Cape Town Stock Exchange.
Sign up on our registration page to receive a free API key with access to 7-day lagged data and 10,000 requests per day.
Rate limits depend on your plan. See our pricing page for details. The Basic plan allows 10,000 requests per day.
Data freshness depends on the source. Most regulators publish filings within 1-5 business days of the transaction. Our system checks for updates every hour. The Basic plan provides data with a 7-day lag; higher tiers provide realtime access.
Yes. Most array parameters support multiple values by specifying the parameter multiple times. For example: ?country=DE&country=KR returns transactions from both Germany and South Korea. Comma-separated values are not supported.
The share-class level figi uniquely identifies the traded instrument and is always present on every transaction record. The ticker symbol is also always available, but may not be globally unique (e.g. GLE could refer to Global Engine Holdings in the US, or Société Générale in France. lei is present when the source provides it, which varies by market.
Commercial display requires a Commercial license. Attribution to InsiderLayer.com as the data source is appreciated for all uses, but not required for personal/internal use.