Events · US only
Executive changes
- Coverage
- US
- Billing
- 20 cr / thousand calls
Returns changes among a company's executives, directors and auditors: who, which role, appointment or departure, and the effective date, one row per change (executive_change / director_change / auditor_change within event_class = governance). Only disclosed facts are restated, with no profiling of individuals. Equity incentive events (equity_incentive) are available only on the /events timeline.
Response enums list only values allowed by this endpoint; each row returns one string for event_class and one for event_type. Nullable fields return null when undisclosed or inapplicable; empty arrays return [].
- When
tickeris omitted, the endpoint scans across companies:event_type=executive_changecombined withfrom/toreturns every executive change in a given period, which you then narrow to slices such as CFO departures using the returnedrole_type/action. - The endpoint does not offer cross-company queries by person name (no
person=parameter), preventing public filings from being used to build cross-company personal profiles. role_type(ceocfocoochairdirectorother) /action(appointmentdeparturerole_change) /reasonare the flattened form of the envelope'saxis, with the same values; all three are response fields only and are not filterable server-side.
The following response is fictional and illustrates field structure and date relationships; names, event IDs and document links do not represent an actual filing.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | optional | Up to 10 values, comma-separated; when omitted, the endpoint scans across companies; use it with from / to. The market is carried by the canonical ticker itself, so there is no market parameter. Default: all companies. |
| from | date | optional | Start of the event date (event_date) range, inclusive; for a single day, set from = to. |
| to | date | optional | End of the event date range, inclusive. |
| event_type | stringenum | optional | executive_change | director_change | auditor_change; accepts multiple comma-separated values. Default: all. |
| limit | int | optional | Maximum 500. Default: 50. |
| page | int | optional | Starts at 1. Default: 1. |
Sort order: event_date desc, accession_number desc, event_id asc. Paged with limit and page (pages start at 1); fewer rows than limit means the last page.
Response fields
| Field | Type | Description |
|---|---|---|
| event_id | string | Id of a single event; the same value on the typed endpoints and on the timeline |
| ticker | string | Canonical ticker |
| market | stringenum | Fixed value: US |
| event_class | stringenum | Fixed value: governance |
| event_type | stringenum | executive_change | director_change | auditor_change |
| axis | object | Personnel change classifications, for example {"role_type":"cfo","action":"departure","reason":"resignation"}; values match the top-level fields. Missing keys are omitted; auditor changes may return {} |
| source_category | string | SEC 8-K item: typically 8-K:5.02 for executive or director changes and 8-K:4.01 for auditor changes |
| event_date | date | Event date of the personnel or auditor change, falling back to filing_date when absent. The from / to filters use this field; the appointment or departure takes effect on effective_date |
| title | string | One-sentence title |
| stage | stringenum | Lifecycle stage: announced / approved / amended / completed / terminated; describes this event row, not a required sequence for every event type |
| event_group_id | string | The successive filings of the same deal / financing / executive change share one id |
| is_current | bool | Always true; historical filing versions are not returned by this endpoint |
| accession_number | string | SEC accession number |
| form_type | string | Source filing type |
| filing_url | string | Deep link to the official document |
| filing_date | date | Filing date |
| person_name | string | null | Name of the person involved (for auditor_change, the audit firm name), as filed |
| role | string | null | Role title as filed |
| role_type | string | nullenum | Normalized role: ceo cfo coo chair director other; uses the same role_type enum as /executives. |
| action | string | nullenum | appointment | departure | role_change |
| reason | string | nullenum | resignation / retirement / termination / death / other; classified only from filing wording, not inferred. Returns null for non-departures or unidentified reasons; matches axis.reason |
| effective_date | date | null | Appointment or departure effective date; null when undisclosed and may be later than event_date |
| successor_name | string | null | Successor's name; null when not disclosed |
| is_interim | bool | null | Whether the successor is acting or interim; null means undisclosed, not false |
No key yet? Create one under API Keys — it is shown once, so store it where your shell can read it. Connecting an agent over MCP instead? That signs in through the browser and needs no key at all.
Authentication, conventions, rate limits and error shapes are the same for every endpoint — they live on REST API.