Skip to main content

Welcome to the Hiring Signals API

The Hiring Signals API provides timely insights on open job postings across the web. Track which companies are hiring, what roles they’re filling, and where — with precise filters for positions, departments, seniority levels, team size, applicant counts, and geographic targeting.

Hiring Signals Endpoint

View the complete OpenAPI specification

Count Mode

You can get the total number of results matching any filter combination without consuming credits by adding count=true to your request. This returns an empty data array with full pagination metadata, including totalCount.
Response:
Use count mode to preview how many results match your filters before fetching actual data. This is useful for building filter UIs, showing result counts, or validating queries — all at zero credit cost.

Key Features

  • Real-time Signals: Hiring signals aggregated continuously from web sources
  • Role-aware Filters: Filter by positions, departments, and seniority levels
  • Location Targeting: Filter by country, US state, and city
  • Category Filters: Filter by industry categories and keyword-based subcategories
  • Company Filters: Filter by team size and applicant count ranges
  • Flexible Sorting: Sort by date posted, title, company name, location, or ingestion date
  • Pagination Support: Efficiently retrieve large datasets with up to 100 results per page
  • Credit-based Usage: Transparent credit consumption per API call

Response: company vs. job location

Each row includes companyCountry (employer HQ) and jobCountry (listing location). Signal rows also include companySubcategory when the company has been classified. See Company fields in signal responses for naming conventions shared across signal APIs. The same distinction applies to filtering: the countries parameter matches either country (job listing or company HQ), while job_countries matches the job listing country only. Use job_countries when you care about where the job is, not where the company is based — e.g. a Berlin listing from a US-headquartered company matches job_countries=DE but not job_countries=US.

Service Level

  • Rate Limit: Based on your subscription tier
  • Uptime: 99% guaranteed uptime
  • Data Freshness: Real-time aggregation ensures up-to-date signals
  • Maximum Results: Up to 100 results per page

Authentication

All API endpoints require a Bearer token in the Authorization header.
If you know a company’s website domain or LinkedIn page, query by URL instead of by name. Name search is fuzzy and can return lookalikes (Novartis also matches Novartis UK); URL identifiers match exactly one company.
Accepted input formats. URL identifiers are normalized before matching, so equivalent variants return the same results:
  • company_domain: novartis.com, www.novartis.com, https://www.novartis.com/, https://novartis.com/any/path — scheme, www., port, path and trailing slash are ignored. Values that can’t be reduced to a domain return 400.
  • company_linkedin_url: linkedin.com/company/novartis, https://www.linkedin.com/company/Novartis/http/https, www. and trailing slash are ignored, the slug is case-insensitive. URLs that aren’t LinkedIn company pages (e.g. personal /in/ profiles) return 400.
Strict matching. When a URL identifier is provided, the API never falls back to fuzzy name matching: if no company matches, the result is empty. Identifiers combine with ANDcompany_domain=novartis.com&company_name=Acme returns empty because they disagree. Match confidence. Every result row includes match_confidence:

Query Parameters

Pagination

Date Filters

Text Search & Location

countries and job_countries are ANDed if both are supplied — countries=US&job_countries=GB is almost always empty. Use one or the other, not both.

Category Filters

Role Category Filters

Company Filters

Sorting

Response Structure

All successful responses follow this structure:

Error Handling

The API returns standard HTTP status codes:
  • 200: Success
  • 401: Unauthorized - Invalid or missing API key
  • 429: Rate limit exceeded
  • 500: Internal server error
Error responses include:

Example Usage

Filter by Position and Date Preset

Filter by Country and City

Filter by Job Location Only

Jobs located in Germany or the UK, regardless of where the hiring company is headquartered:

Filter by Department and Seniority with Sorting

Filter by Team Size and Subcategory