Signals API

In addition to our raw jobs data, we also offer intent signals. Customers use these signals to guide sales teams, AI SDR's, and AI Agents more broadly. Access to our Signals API is limited to our enterprise customers for now.

We recommend first reviewing the Jobs Data API page to learn more about the structure of our API, rate limits, and more.

We provide signals in 4 categories today

  • Changes

    • Discrete edits or changes to a source, such as the urls or content on the pages

  • Competitive

    • Tracking source advertising

  • Problems

    • Challenges and opportunities for a source extracted from natural language. These signals indicate sales intent in different problem/opportunity areas

  • Trends

    • Contextualized trends, such as hiring velocity

    • Trends are always identified in the context of a segment (ex: global, regional, local)

API Overview

JobFront's API is hosted at the following root url. Each endpoint is specified below. The most recent Signals API version is currently 'v3'

https://api.jobfront.io/v3/<endpoint>

Authentication

JobFront's API uses Bearer tokens to authenticate API calls. When you make API calls to JobFront, you must include this Bearer token in the Authorization header

Connect with us to get an access token.

Quickstart

Submit a quick GET request to begin accessing this dataset

200 Response

Data Hierarchy

We organize signals into multiple levels of hierarchy as shown below:

Groups -> Categories -> Types -> Individual signals

These different levels of hierarchy correspond to the following URL patterns

Group (problems)

Category (finance)

Type (cash-flow-constraints)

Filter Signals

Use this endpoint to gather all signals from a particular group

GET /v3/signals/<group>

For example, see below response from the 'problems' group:

GET /v3/signals/problems

Definitions

  • evidence_list is a list of strings, directly extracted from job posts or another corpus that provides evidence in the signal being detected, classified, and documented

  • signal_match is a number between [1, 2, 3] which indicates how closely this intent signal matches the definition. Sometimes a clear intent signal "upgrade legacy it" is an obvious 3 (best) match, and sometimes the problem that a company has is tangential to that intent signal. 1 = lowest, 3 = highest match

  • signal_severity is similar to above signal_match. This is a number 1, 2, or 3 where 3 is the highest severity and 1 is the lowest

  • signal_start_at and signal_recent_at is the period where we found evidence that a company had these problems

  • jobs_list is a list of dictionaries that describe metadata for job posts where we found these signals. If you also subscribe to our jobs data, you can match these job_id values to the full job post information.

  • signal_recency is either 'active' or 'inactive' as explained below

  • signal_classification is either 'direct' or 'inferred' as explained below

  • current_value and previous_value fields are not used in problems, but they are used in changes group types.


Signal Categories

Next level down from signal groups is signal categories. See below the different types of categories that we support, within each high-level group (either problems or changes, for now)

Changes Categories

Changes are scoped on a single source.

Most of these change categories are exhaust metadata from our massive scraping engine, although we have a few more arriving soon that are independent systems. Please reach out for us if you'd like to see specific change signals.

Category ID
List of Types

url

domain-url-change - Domain updated

careers-url-change - Careers page url updated

jobboard-url-change - Job board page url updated

content

homepage-content-change - Home page content meaningfully updated

careers-content-change - Careers page content meaningfully updated

tech

tech-change-planned - Technographic analysis found new tech mentioned for the first time in this Source's job postings (experimental)

tech-change-completed - Technographic analysis found new tech mentioned for the first time in this Source's job postings (use this for confirmed registered changes)

location

location-change-planned - Location and team analysis found new location mentioned for the first time in this Source's job postings (experimental)

location-change-completed - Location and team analysis found new location mentioned for the first time in this Source's job postings (use this for confirmed registered changes)

Competitive Categories

The Competitive group is where we publish insights that are competitive in nature, starting with advertising tracking.

Category ID
List of Types

advertising

indeed-ads - Source is/has advertised on Indeed

craigslist-ads - Source is/has advertised on Craigslist

Competitive-specific semantics

We reuse the existing signal_recency and active_only semantics:

  • signal_recency = "active"

    • The company has at least N ads in the recent lookback window on that channel (e.g. ≥ 1 ad in the last 60–90 days).

  • signal_recency = "inactive"

    • No ads in the recent window, but we have a historical record of ads on that surface (e.g. at least N ads in the last 12–24 months).

  • If a company has never been seen advertising on that surface, no signal is emitted for that type.

active_only in the query string works the same as other groups:

  • active_only=true → only signals with signal_recency = "active"

  • active_only=false → both active and inactive advertisers

Problems Categories

Problem intent signals are problems that companies have based on public information that we track. These problems are extracted and structured using AI applied to every job posting for a given source/company.

Category ID
List of Types

finance

cash-flow-constraints - The organization faces challenges with financial liquidity, managing working capital, or balancing income and expenses.

it

outdated-legacy-systems - The company is operating with technological infrastructure that has become obsolete, difficult to maintain, or incompatible with modern solutions

operations

process-inefficiencies - The organization suffers from workflows, procedures, or methodologies that waste resources, time, or effort

strategy-and-leadership

unclear-vision-and-mission - The company lacks clear direction, cohesive strategic priorities, or well-communicated organizational purpose.

sales-and-marketing

low-conversion-rates - The organization struggles to turn prospects into customers at acceptable rates throughout the sales funnel

product-and-r-and-d

poor-product-market-fit - The company's offerings don't adequately address market needs, customer problems, or competitive pressures

customer-service

inconsistent-service-quality - The organization delivers varying levels of service quality across customer interactions, channels, or touchpoints

legal-and-compliance

data-privacy-requirements - The company faces challenges meeting regulatory or industry standards for data protection, privacy, or information security

Trends represent comparative, longitudinal insights derived from how hiring patterns evolve over time within a Segment (a structured slice of the world such as a company, location, function, collection, or any combination of those axes).

A Trend Signal tells you how a segment behaves relative to:

  • Its own historical behavior

  • Similar roles in the broader market (market-level baselines)

  • Other companies, locations, industries, or functions

  • Collections (custom groupings of companies)

Trends can be analyzed at multiple altitudes:

  • Per-Location (city, state, region, country)

  • Per-Function (e.g., ONET, job families)

  • Per-Company (source-level)

  • Per-Collection (enterprise customer–defined groups)

  • Per-Location-Function combination

  • Global (overall market)

Historically, Trends powered our internal AI SDR + AI Marketing systems. We now expose these as structured signals via the JobFront Signals API.

If you would like early access to newly validated trend detectors, please reach out to us—this system is expanding very rapidly.

Category ID
List of Types

hiring

- roles-long-open

- roles-fast-fill

- hiring-surge

- hiring-freeze

- hiring-increase

- hiring-decrease

compensation

- compensation-low

- compensation-high

locations

- geo-expansion

- geo-retraction

- geo-expansion-velocity

- geo-retraction-velocity

- remote-shift

- onsite-shift

org

- functions-overindexed

- functions-underindexed

- new-functions

- retired-functions

Trend-Specific Fields

While all signals share the same core schema, Trend signals may include additional fields inside each job entry of jobs_list, depending on the signal type.

Compensation vs Market

Used in:

  • compensation-low

  • compensation-high

Fields:

Field
Description

job_comp_annual

Annualized compensation for the role

market_median_comp

Median pay benchmark for comparable market segment

segment_median_comp

Median pay for the segment itself

comp_min, comp_max

Raw comp range values if available

width_ratio

Ratio of comp range width vs market norms

Hiring Speed vs Market (Slow / Fast)

Used in:

  • roles-long-open (slow relative to market)

  • roles-fast-fill (fast relative to market)

Fields:

Field
Description

days_open

Days the job has been open

segment_median_days

Median days-to-fill for the segment

market_median_days

Market benchmark (location/function tiered baseline)

days_threshold

Absolute threshold (used for slow/fast variants where applicable)

Hiring Lifecycle (Surge / Slow / Bottleneck / Freeze)

Used in:

  • hiring-freeze (near-zero hiring recently)

  • hiring-surge (surge in hiring recently)

Fields:

Field
Description

days_open

Days the job was open

days_threshold

Minimum days considered “very long open”

avg_days_open, max_days_open

Segment-level descriptors

current_sample, historical_mean

Hiring volume context

Hiring Volume (Level Change Over Time)

Used in:

  • hiring-increase (MoM ≥ factor)

  • hiring-decrease (MoM ≤ factor)

Fields:

Field
Description

sample_size

Current month hiring volume

history_mean, history_std

Descriptive stats used to determine surge

ratio

Current vs baseline ratio (MoM or multi-month baseline)

z_score

Volatility-normalized spike indicator

Remote / Onsite Mix

Used in:

  • remote-shift

  • onsite-shift

Fields:

Field
Description

segment_remote_share

Share of remote roles this month

historical_remote_share

Multi-month baseline remote share

delta_share

Increase or decrease vs baseline

Used in:

  • geo-expansion

  • geo-retraction

  • geo-expansion-velocity

  • geo-retraction-velocity

Fields:

Field
Description

new_locations

Newly active hiring geographies

removed_locations

Geographies that went inactive

current_roles_in_new_locations

# of active roles in new geos

historical_roles_in_removed_locations

Total roles in those geos historically

active_locations_count

Count of currently active geos for this segment

Comp Disclosure (Benchmarking Transparency)

Used in:

  • compensation-low

  • compensation-high

Fields:

Field
Description

segment_comp_disclosure_share

% of segment roles that include comp

market_comp_disclosure_share

% of market roles that include comp

Used in:

  • functions-overindexed

  • functions-underindexed

  • new-functions

  • retired-functions

Fields:

Field
Description

function_id

Internal JobFront job_function_id

is_new_function

Boolean

is_retired_function

Boolean

current_share

Current % of hiring in this function

historical_share

Historical percentage

delta_share

Increase or decrease vs historical norm


Using Job + Segment IDs

Every trend signal still supports rich joins:

ID
Usage

source_id

Join to your Companies / Accounts

job_id

Join to the Jobs Data API for full job metadata

segment_id

Retrieve segment attributes from jobfront_segments_dim

The Trends API makes it easy to:

  • Understand where a company is accelerating or slowing down

  • Detect expansion, retraction, specialization, or organizational shifts

  • Benchmark against the market, industry, geography, or collections

  • Power sales & marketing intelligence, lead scoring, and lifecycle predictions


Filter Signals by Category

You can use the group and category to call an endpoint and return only filtered data:

GET /v3/signals/<group>/<category>

For example, see below response from the 'problems' group and 'finance' category

GET /v3/signals/problems/finance

Response (200)

Filter Signals by Type

Finally, you can retrieve only signals at the finest level of granularity by signal type (as noted in the tables above, for each category)

GET /v3/signals/problems/<category>/<type>

For example, see below signal type 'cash-flow-constraints'

GET /v3/signals/problems/finance/cash-flow-constraints

Response (200)


Query Parameters

Query Param
Type
Default
Notes

page

int

1

1-based page index.

per_page

int

25

Max 1000.

direct_only

bool

true

See below.

active_only

bool

true

See below.

Direct/Inferred & Active/Inactive Signals

Direct signals have direct and immediate evidence of a particular intent. Indirect/Inferred signals represent likely issues, problems, or realities but are inferred and we typically have indirect evidence of a signal. Therefore inferred signals carry less strength vs direct signals.

Similarly, active signals are problems or intents that companies currently have. Inactive signals were signals that were previously active but are no longer active.

GET /v3/signals/problems?direct_only=true

Query Param
Default
Notes

direct_only

true

true → only signals classified as direct. false → include inferred.

active_only

true

true → only active signals. false → include inactive ones.


Error Codes

Status
Meaning

400

Missing or invalid API token.

429

Rate limit exceeded (60 requests / min).

500

Server error.

Last updated