/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 75% 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. |
share_class_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. |
issuer_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 ISINs:
$ curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.insiderlayer.com/api/transactions?isin=US02079K1079&isin=US0378331005"
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 |
no | Name of the reporting person or entity, as reported in the original filing. |
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. |
isin |
string |
no | ISIN (International Securities Identification Number) of the traded instrument. Always present. |
share_class_figi |
string |
no | Share-class level FIGI (Financial Instrument Global Identifier) of the traded instrument. Always present. |
issuer_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 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 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
Forms 3, 4, and 5 filings from the U.S. Securities and Exchange Commission's EDGAR system.
Insider transaction reports from the System for Electronic Disclosure by Insiders (SEDI) in Canada.
Management transaction disclosures from SIX Exchange Regulation in Switzerland.
National regulators and stock exchanges across the European Union, mapped to the MAR (Market Abuse Regulation) standard.
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.
ISIN and share_class_figi are always present on every transaction record. issuer_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.