---
title: "List hiring signals"
method: GET
path: "/v1/hiring-signals"
tags: ["hiring-signals"]
---

# List hiring signals

`GET /v1/hiring-signals`

## Request

- Base URL: `https://api.datahyena.com`
- URL: `https://api.datahyena.com/v1/hiring-signals`
- Auth: API key in header `X-API-Key`

Returns hiring signals read from companies' own job boards and careers pages, newest first: leadership openings, founding roles, team scaling, technology hiring (beta) and hard-to-fill roles. Build-outs, surges, freezes, country expansion and filled leadership roles appear as weekly history accumulates. Each signal carries the roles behind it, with salary and technologies where the posting states them. Costs one credit per returned signal.

## Query parameters

- `cursor` string
- `companyId` string
- `domain` string
- `eventType` string[]
- `function` string[]
- `seniority` string[]
- `technologies` string[]
- `roleFamily` string[]
- `countries` string[]
- `activeOnly` boolean
- `includeTotal` boolean
- `since` string
- `until` string
- `limit` number

## Response `200`

Request accepted. The number of records returned may be lower than limit when credits or data run out.

- object
  - `success` true, required
  - `data` PublicHiringSignalResponseItem[], required
    - `id` string, required
    - `eventType` string, required
    - `function` string, required: The function the signal is about, or all for company-wide signals.
    - `seniority` object, nullable, required
    - `roleFamily` object, nullable, required: The role family the signal is about, for example sales_development or revops.
    - `country` CountryDto, required
      - `code` string, required: ISO 3166-1 alpha-2 country code.
      - `name` string, required: Human-readable country name.
    - `technologies` string[], required: Technologies named across the roles behind the signal.
    - `announcedAt` string, required: When the signal started.
    - `endedAt` object, nullable, required: When every role behind it closed.
    - `active` boolean, required: Whether any role behind the signal is still open.
    - `roleCount` number, required: Number of open roles behind the signal.
    - `roles` HiringRoleDto[], required: Up to 10 roles behind the signal.
      - `title` string, required
      - `function` string, required
      - `seniority` string, required
      - `roleFamily` object, nullable, required
      - `location` object, nullable, required
      - `postedAt` object, nullable, required
      - `url` object, nullable, required
      - `salary` HiringSalaryDto, required
        - `min` object, nullable, required
        - `max` object, nullable, required
        - `currency` object, nullable, required
        - `interval` 'year' | 'month' | 'week' | 'day' | 'hour', nullable, required
      - `technologies` string[], required: Technologies the role names.
    - `board` string, required: The company's hiring platform.
    - `discoveredAt` string, required
    - `company` PublicCompanyDto, required
      - `id` object, nullable, required
      - `name` string, required
      - `domain` object, nullable, required
      - `website` object, nullable, required: 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` object, nullable, required
      - `linkedinHandle` object, nullable, required
      - `linkedinUrl` object, nullable, required
      - `linkedinGeoId` object, nullable, required
      - `linkedinIndustryId` object, nullable, required
      - `naicsCode` object, nullable, required: NAICS 2022 code derived from the industry classification. Null when no honest mapping exists.
      - `naicsLevel` 2 | 3 | 4, nullable, required: Depth of naicsCode: 2 = sector, 3 = subsector, 4 = industry group.
      - `hqCity` object, nullable, required
      - `hqCountry` CountryDto, required
        - `code` string, required: ISO 3166-1 alpha-2 country code.
        - `name` string, required: Human-readable country name.
      - `industryGroup` object, nullable, required
      - `industrySubTags` string[], required
      - `verticals` string[], required
      - `employeeCountBucket` object, nullable, required
      - `foundedYear` object, nullable, required
      - `businessModel` object, nullable, required
  - `pagination` PublicPagination, required
    - `hasMore` boolean, required: Whether another page is available.
    - `nextCursor` object, nullable, required: Cursor to pass to the next request. Null when hasMore is false.
    - `total` number: Total records matching the filters across all pages. Present only when includeTotal=true; the same on every page of a listing.
  - `meta` PublicResponseMeta, required
    - `endpoint` string, required: Stable endpoint identifier for logging and support.
    - `creditsUsed` number, required: Credits consumed by this request after the response size is known.
    - `creditsRemaining` object, nullable, required: Workspace credits remaining after this request.
    - `notice` string: 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.

## Other responses

- `400`: Invalid query parameter, body, or pagination cursor.
- `401`: Missing, invalid, or disabled API key.
- `402`: Workspace has no credits available for the request.
- `403`: Request blocked by abuse prevention policy.
- `429`: Rate limit exceeded for this workspace and plan.

---

[API](https://skmtc.dev/datahyena/apis/datahyena-public-api.md) · [All operations](https://skmtc.dev/datahyena/apis/datahyena-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/datahyena/apis/datahyena-public-api/revisions/0de0060625e4?raw)
