datahyena-com Exec Moves API

Executive job-change signals across tracked companies and people.

Operations 1

GET /v1/exec-moves List executive moves #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/datahyena-com:datahyena-com-exec-moves-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

datahyena-com-exec-moves-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Datahyena Public Exec Moves API
  description: Read-only API for funding events, acquisitions, executive moves, hiring signals, companies, and investors.
  version: '1.0'
  contact: {}
servers:
- url: https://api.datahyena.com
  description: Production
security:
- apiKey: []
tags:
- name: exec-moves
  description: Executive job-change signals across tracked companies and people.
  x-displayName: Executive Moves
paths:
  /v1/exec-moves:
    get:
      description: Returns executive appointment, promotion, departure, and transition events ordered by announcement date, newest first. Costs one credit per returned record.
      operationId: exec_moves_list
      parameters:
      - name: cursor
        required: false
        in: query
        description: Opaque pagination cursor returned as pagination.nextCursor.
        schema:
          type: string
      - name: companyId
        required: false
        in: query
        description: Company UUID filter.
        schema:
          example: 01jykbrpavr3zdvcpzxv
          type: string
      - name: domain
        required: false
        in: query
        description: Return only moves at the company with this domain. Matches the company's primary domain or any domain it has redirected from; a full URL is accepted. A domain we do not hold yet returns an empty page with status 202, a Retry-After header and meta.discovery.status 'building' while we look the company up; call again after that many seconds.
        schema:
          example: stripe.com
          type: string
      - name: includeTotal
        required: false
        in: query
        description: Also return pagination.total, the number of records matching these filters across all pages. Costs no credits; adds a count query, so ask for it when you need the list size.
        schema:
          example: true
          type: boolean
      - name: personId
        required: false
        in: query
        description: Person UUID filter.
        schema:
          example: 01jykbrpavr3zdvcpzxw
          type: string
      - name: countries
        required: false
        in: query
        description: Headquarters country codes (OR). Repeat the query key for multiple values.
        schema:
          example:
          - US
          - GB
          type: array
          items:
            type: string
            enum:
            - AD
            - AE
            - AF
            - AG
            - AI
            - AL
            - AM
            - AO
            - AR
            - AS
            - AT
            - AU
            - AW
            - AX
            - AZ
            - BA
            - BB
            - BD
            - BE
            - BF
            - BG
            - BH
            - BI
            - BJ
            - BL
            - BM
            - BN
            - BO
            - BQ
            - BR
            - BS
            - BT
            - BW
            - BY
            - BZ
            - CA
            - CD
            - CF
            - CG
            - CH
            - CI
            - CK
            - CL
            - CM
            - CN
            - CO
            - CR
            - CU
            - CV
            - CW
            - CY
            - CZ
            - DE
            - DJ
            - DK
            - DM
            - DO
            - DZ
            - EC
            - EE
            - EG
            - EH
            - ER
            - ES
            - ET
            - FI
            - FJ
            - FK
            - FM
            - FO
            - FR
            - GA
            - GB
            - GD
            - GE
            - GF
            - GG
            - GH
            - GI
            - GL
            - GM
            - GN
            - GP
            - GQ
            - GR
            - GT
            - GU
            - GW
            - GY
            - HK
            - HN
            - HR
            - HT
            - HU
            - ID
            - IE
            - IL
            - IM
            - IN
            - IQ
            - IR
            - IS
            - IT
            - JE
            - JM
            - JO
            - JP
            - KE
            - KG
            - KH
            - KI
            - KM
            - KN
            - KP
            - KR
            - KW
            - KY
            - KZ
            - LA
            - LB
            - LC
            - LI
            - LK
            - LR
            - LS
            - LT
            - LU
            - LV
            - LY
            - MA
            - MC
            - MD
            - ME
            - MF
            - MG
            - MH
            - MK
            - ML
            - MM
            - MN
            - MO
            - MP
            - MQ
            - MR
            - MS
            - MT
            - MU
            - MV
            - MW
            - MX
            - MY
            - MZ
            - NA
            - NC
            - NE
            - NG
            - NI
            - NL
            - 'NO'
            - NP
            - NR
            - NU
            - NZ
            - OM
            - PA
            - PE
            - PF
            - PG
            - PH
            - PK
            - PL
            - PM
            - PR
            - PS
            - PT
            - PW
            - PY
            - QA
            - RE
            - RO
            - RS
            - RU
            - RW
            - SA
            - SB
            - SC
            - SD
            - SE
            - SG
            - SH
            - SI
            - SK
            - SL
            - SM
            - SN
            - SO
            - SR
            - SS
            - ST
            - SV
            - SX
            - SY
            - SZ
            - TC
            - TD
            - TG
            - TH
            - TJ
            - TK
            - TL
            - TM
            - TN
            - TO
            - TR
            - TT
            - TV
            - TW
            - TZ
            - UA
            - UG
            - US
            - UY
            - UZ
            - VA
            - VC
            - VE
            - VG
            - VI
            - VN
            - VU
            - WF
            - WS
            - YE
            - YT
            - ZA
            - ZM
            - ZW
            - unknown
      - name: naicsCode
        required: false
        in: query
        description: 'NAICS 2022 code for the company. Matches the code and everything beneath it, so "51" also returns 5132 and 5173. Any 2- to 6-digit NAICS code is accepted; codes deeper than we classify (e.g. 541511) match at their deepest classified parent (5415). Sector ranges work: "31-33" returns all manufacturing. Pass "unknown" for companies we could not classify.'
        schema:
          example: '5132'
          type: string
          enum:
          - '11'
          - '111'
          - '1114'
          - '113'
          - '114'
          - '21'
          - '2111'
          - '212'
          - '22'
          - '2211'
          - '2213'
          - '23'
          - '236'
          - '2361'
          - '238'
          - '2382'
          - 31-33
          - '311'
          - '3111'
          - '3115'
          - '3116'
          - '3117'
          - '3118'
          - '3121'
          - '3122'
          - '313'
          - '315'
          - '316'
          - '3162'
          - '321'
          - '322'
          - '3222'
          - '323'
          - '325'
          - '3253'
          - '3254'
          - '3255'
          - '3256'
          - '3261'
          - '327'
          - '3272'
          - '331'
          - '332'
          - '3323'
          - '3325'
          - '3328'
          - '3331'
          - '3332'
          - '3334'
          - '3341'
          - '3342'
          - '3343'
          - '3344'
          - '3345'
          - '335'
          - '3351'
          - '3352'
          - '3353'
          - '3359'
          - '336'
          - '3361'
          - '3363'
          - '3364'
          - '3365'
          - '3366'
          - '337'
          - '3372'
          - '3391'
          - '3399'
          - '42'
          - '4231'
          - '4233'
          - '4234'
          - '4235'
          - '4236'
          - '4238'
          - '4244'
          - '4245'
          - '4246'
          - '4247'
          - '4248'
          - 44-45
          - '4411'
          - '4441'
          - '4451'
          - '4491'
          - '4561'
          - '4571'
          - '458'
          - '4591'
          - '4593'
          - 48-49
          - '4811'
          - '482'
          - '483'
          - '484'
          - '485'
          - '4851'
          - '4853'
          - '4921'
          - '493'
          - '51'
          - '5121'
          - '5122'
          - '5131'
          - '5132'
          - '5161'
          - '5162'
          - '5173'
          - '519'
          - '5192'
          - '52'
          - '5221'
          - '5231'
          - '5239'
          - '5241'
          - '5242'
          - '53'
          - '5311'
          - '5312'
          - '532'
          - '5322'
          - '54'
          - '5411'
          - '5412'
          - '5413'
          - '5414'
          - '5415'
          - '5416'
          - '5417'
          - '5418'
          - '5419'
          - '5511'
          - '56'
          - '5613'
          - '5614'
          - '5615'
          - '5616'
          - '5617'
          - '562'
          - '5621'
          - '611'
          - '6111'
          - '6113'
          - '6114'
          - '6115'
          - '621'
          - '6213'
          - '6214'
          - '6215'
          - '6216'
          - '622'
          - '623'
          - '6241'
          - '6242'
          - '6244'
          - '71'
          - '7111'
          - '7112'
          - '7115'
          - '712'
          - '7132'
          - '7139'
          - '721'
          - '722'
          - '7225'
          - '81'
          - '811'
          - '8111'
          - '812'
          - '8121'
          - '8123'
          - '8129'
          - '813'
          - '8131'
          - '8132'
          - '8134'
          - '8139'
          - '92'
          - '9211'
          - '9221'
          - '9281'
          - unknown
      - name: roleSeniority
        required: false
        in: query
        description: Role seniority filters. Repeat the query key for multiple values.
        schema:
          example:
          - c_level
          type: array
          items:
            type: string
            enum:
            - c_level
            - vp_level
            - founder
      - name: moveType
        required: false
        in: query
        description: Move type filters. Repeat the query key for multiple values.
        schema:
          example:
          - appointment
          - promotion
          type: array
          items:
            type: string
            enum:
            - appointment
            - promotion
            - departure
            - transition
      - name: since
        required: false
        in: query
        description: Return events announced on or after this date (YYYY-MM-DD). ISO-8601 timestamps are also accepted.
        schema:
          example: '2026-05-01'
          type: string
      - name: until
        required: false
        in: query
        description: Return events announced on or before this date (YYYY-MM-DD, inclusive). ISO-8601 timestamps are also accepted.
        schema:
          example: '2026-05-30'
          type: string
      - name: limit
        required: false
        in: query
        description: Maximum records to return.
        schema:
          minimum: 1
          maximum: 100
          default: 20
          type: number
      responses:
        '200':
          description: Request accepted. The number of records returned may be lower than limit when credits or data run out.
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - data
                - pagination
                - meta
                properties:
                  success:
                    type: boolean
                    enum:
                    - true
                    example: true
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PublicExecMoveEventResponseItem'
                  pagination:
                    $ref: '#/components/schemas/PublicPagination'
                  meta:
                    $ref: '#/components/schemas/PublicResponseMeta'
        '400':
          description: Invalid query parameter, body, or pagination cursor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorEnvelope'
              example:
                success: false
                error:
                  code: INVALID_INPUT
                  message: limit must not be greater than 100
                meta:
                  requestId: 019e8a3c-9f0b-7c12-88ab-1d2e3f4a5b6c
        '401':
          description: Missing, invalid, or disabled API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorEnvelope'
              example:
                success: false
                error:
                  code: UNAUTHORIZED
                  message: Missing or invalid API key.
                meta:
                  requestId: 019e8a3c-9f0b-7c12-88ab-1d2e3f4a5b6c
        '402':
          description: Workspace has no credits available for the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorEnvelope'
              example:
                success: false
                error:
                  code: PAYMENT_REQUIRED
                  message: Workspace has no credits remaining. Top up to continue.
                meta:
                  requestId: 019e8a3c-9f0b-7c12-88ab-1d2e3f4a5b6c
        '403':
          description: Request blocked by abuse prevention policy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorEnvelope'
              example:
                success: false
                error:
                  code: FORBIDDEN
                  message: Request blocked by abuse prevention policy.
                meta:
                  requestId: 019e8a3c-9f0b-7c12-88ab-1d2e3f4a5b6c
        '429':
          description: Rate limit exceeded for this workspace and plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorEnvelope'
              example:
                success: false
                error:
                  code: TOO_MANY_REQUESTS
                  message: Rate limit exceeded for this workspace and plan.
                meta:
                  requestId: 019e8a3c-9f0b-7c12-88ab-1d2e3f4a5b6c
      security:
      - apiKey: []
      summary: List executive moves
      tags:
      - exec-moves
components:
  schemas:
    PublicExecMoveEventResponseItem:
      type: object
      properties:
        id:
          type: string
          example: 019e8a3c-0a12-7e88-a3d1-4f5a6b7c8d9e
        person:
          $ref: '#/components/schemas/ExecMovePersonDto'
        role:
          type: string
          example: Chief Financial Officer
        roleSeniority:
          type: string
          enum:
          - c_level
          - vp_level
          - founder
          example: c_level
        moveType:
          type: string
          enum:
          - appointment
          - promotion
          - departure
          - transition
          example: appointment
        announcedAt:
          type:
          - object
          - 'null'
          example: '2026-05-29T00:00:00.000Z'
        effectiveDate:
          type:
          - object
          - 'null'
          example: '2026-06-15T00:00:00.000Z'
        discoveredAt:
          type: string
          example: '2026-05-30T12:00:00.000Z'
        company:
          $ref: '#/components/schemas/PublicCompanyDto'
        fromCompany:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/PublicCompanyDto'
      required:
      - id
      - person
      - role
      - roleSeniority
      - moveType
      - announcedAt
      - effectiveDate
      - discoveredAt
      - company
      - fromCompany
    CountryDto:
      type: object
      properties:
        code:
          type: string
          example: US
          description: ISO 3166-1 alpha-2 country code.
        name:
          type: string
          example: United States
          description: Human-readable country name.
      required:
      - code
      - name
    PublicResponseMeta:
      type: object
      properties:
        endpoint:
          type: string
          example: funding_events.list
          description: Stable endpoint identifier for logging and support.
        creditsUsed:
          type: number
          example: 20
          description: Credits consumed by this request after the response size is known.
        creditsRemaining:
          type:
          - object
          - 'null'
          example: 980
          description: Workspace credits remaining after this request.
        notice:
          type: string
          example: No events on record for this company.
          description: 'Present only when a lookup resolved nothing. Absence of a company is an ordinary outcome here, not a failed request: records are built from funding, acquisition and executive-move announcements, so a company that has not appeared in one is simply not covered.'
        discovery:
          description: Present when we held nothing for an exact domain and have started researching it. Ask again later; nothing is charged meanwhile.
          allOf:
          - $ref: '#/components/schemas/DiscoveryMeta'
      required:
      - endpoint
      - creditsUsed
      - creditsRemaining
    PublicErrorEnvelope:
      type: object
      properties:
        success:
          type: boolean
          enum:
          - false
          example: false
        error:
          $ref: '#/components/schemas/PublicErrorBody'
        meta:
          $ref: '#/components/schemas/PublicErrorMeta'
      required:
      - success
      - error
      - meta
    PublicCompanyDto:
      type: object
      properties:
        id:
          type:
          - object
          - 'null'
          example: 019e8a3c-2b10-7c44-8a1f-9d8e7c6b5a40
        name:
          type: string
          example: Acme AI
        domain:
          type:
          - object
          - 'null'
          example: acme.ai
        website:
          type:
          - object
          - 'null'
          example: https://www.acme.ai/
          description: The address the company website loads at, which can differ from domain (for example a www host). Null when no working site is known.
        description:
          type:
          - object
          - 'null'
          example: AI workflow automation for enterprise revenue teams.
        linkedinHandle:
          type:
          - object
          - 'null'
          example: acme-ai
        linkedinUrl:
          type:
          - object
          - 'null'
          example: https://www.linkedin.com/company/acme-ai
        linkedinGeoId:
          type:
          - object
          - 'null'
          example: '90000084'
        linkedinIndustryId:
          type:
          - object
          - 'null'
          example: '4'
        naicsCode:
          type:
          - object
          - 'null'
          example: '5132'
          description: NAICS 2022 code derived from the industry classification. Null when no honest mapping exists.
        naicsLevel:
          type:
          - number
          - 'null'
          example: 4
          enum:
          - 2
          - 3
          - 4
          description: 'Depth of naicsCode: 2 = sector, 3 = subsector, 4 = industry group.'
        hqCity:
          type:
          - object
          - 'null'
          example: San Francisco
        hqCountry:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/CountryDto'
        industryGroup:
          type:
          - object
          - 'null'
          example: Software Development
        industrySubTags:
          example:
          - Artificial Intelligence
          - Sales Automation
          type: array
          items:
            type: string
        verticals:
          example:
          - ai
          - fintech
          type: array
          items:
            type: string
        employeeCountBucket:
          type:
          - object
          - 'null'
          example: 51-200
        foundedYear:
          type:
          - object
          - 'null'
          example: 2021
        businessModel:
          type:
          - object
          - 'null'
          example: B2B SaaS
      required:
      - id
      - name
      - domain
      - website
      - description
      - linkedinHandle
      - linkedinUrl
      - linkedinGeoId
      - linkedinIndustryId
      - naicsCode
      - naicsLevel
      - hqCity
      - hqCountry
      - industryGroup
      - industrySubTags
      - verticals
      - employeeCountBucket
      - foundedYear
      - businessModel
    ExecMovePersonDto:
      type: object
      properties:
        id:
          type:
          - object
          - 'null'
          example: 019e8a3c-2b10-7c44-8a1f-9d8e7c6b5a40
        name:
          type: string
          example: Jane Doe
        linkedinHandle:
          type:
          - object
          - 'null'
          example: jane-doe
        linkedinUrl:
          type:
          - object
          - 'null'
          example: https://www.linkedin.com/in/jane-doe
      required:
      - id
      - name
      - linkedinHandle
      - linkedinUrl
    PublicErrorMeta:
      type: object
      properties:
        requestId:
          type: string
          example: 019e8a3c-9f0b-7c12-88ab-1d2e3f4a5b6c
          description: Request id when one was attached by the server.
    DiscoveryMeta:
      type: object
      properties:
        status:
          type: string
          example: building
          enum:
          - building
        domain:
          type: object
          example: acme.com
        retryAfterSeconds:
          type: number
          example: 300
          description: Seconds to wait before asking again. Research usually completes within hours.
        note:
          type: string
          example: We had not read this company yet and have started now.
      required:
      - status
      - domain
      - retryAfterSeconds
    PublicPagination:
      type: object
      properties:
        hasMore:
          type: boolean
          example: true
          description: Whether another page is available.
        nextCursor:
          type:
          - object
          - 'null'
          example: eyJpZCI6IjAxOWU4YTNjLTJiMTAtN2M0NC04YTFmLTlkOGU3YzZiNWE0MCJ9
          description: Cursor to pass to the next request. Null when hasMore is false.
        total:
          type: number
          example: 1284
          description: Total records matching the filters across all pages. Present only when includeTotal=true; the same on every page of a listing.
      required:
      - hasMore
      - nextCursor
    PublicErrorBody:
      type: object
      properties:
        code:
          type: string
          enum:
          - INVALID_CURSOR
          - INVALID_INPUT
          - UNAUTHORIZED
          - FORBIDDEN
          - NOT_FOUND
          - PAYMENT_REQUIRED
          - TOO_MANY_REQUESTS
          example: INVALID_INPUT
        message:
          type: string
          example: limit must not be greater than 100
        details:
          type: object
          additionalProperties: true
          description: Optional machine-readable context for validation errors.
      required:
      - code
      - message
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key