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_listis a list of strings, directly extracted from job posts or another corpus that provides evidence in the signal being detected, classified, and documentedsignal_matchis 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 matchsignal_severityis similar to above signal_match. This is a number 1, 2, or 3 where 3 is the highest severity and 1 is the lowestsignal_start_atand signal_recent_at is the period where we found evidence that a company had these problemsjobs_listis 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_recencyis either 'active' or 'inactive' as explained belowsignal_classificationis either 'direct' or 'inferred' as explained belowcurrent_valueand 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.
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.
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 withsignal_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.
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 Categories
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.
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-lowcompensation-high
Fields:
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:
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:
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:
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-shiftonsite-shift
Fields:
segment_remote_share
Share of remote roles this month
historical_remote_share
Multi-month baseline remote share
delta_share
Increase or decrease vs baseline
Location Detail / Location Trends
Used in:
geo-expansiongeo-retractiongeo-expansion-velocitygeo-retraction-velocity
Fields:
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-lowcompensation-high
Fields:
segment_comp_disclosure_share
% of segment roles that include comp
market_comp_disclosure_share
% of market roles that include comp
Function Evolution (Org Structure Trends)
Used in:
functions-overindexedfunctions-underindexednew-functionsretired-functions
Fields:
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:
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
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
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
400
Missing or invalid API token.
429
Rate limit exceeded (60 requests / min).
500
Server error.
Last updated