Welcome to the Job Change Signals API
The Job Change Signals API provides timely insights on job changes across the web. Track role transitions and new hires with precise filters for positions, departments, and seniority levels, plus company and person-level LinkedIn targeting.
Job Change 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.
curl -X GET "https://www.trysignalbase.com/api/v2/signals/job-changes?count=true&positions=CEO,CTO&date_preset=last_30d" \
-H "Authorization: Bearer YOUR_API_KEY"
Response:
{
"success" : true ,
"data" : [],
"pagination" : {
"currentPage" : 1 ,
"totalPages" : 5 ,
"totalCount" : 93 ,
"hasNextPage" : true ,
"hasPreviousPage" : false
},
"meta" : {
"endpoint" : "signals.job-changes" ,
"creditsUsed" : 0
}
}
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 : Job change signals aggregated continuously from web sources
Role-aware Filters : Filter by positions, departments, and seniority levels
LinkedIn Targeting : Exact-match filters on person and company LinkedIn URLs
Field-specific Search : Search by person name, company name, new role, or keyword
Flexible Sorting : Sort by date, person name, or company name
Pagination Support : Efficiently retrieve large datasets with up to 100 results per page
Credit-based Usage : Transparent credit consumption per API call
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.
curl -X GET "https://www.trysignalbase.com/api/v2/signals/job-changes?page=1&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
Query Parameters
Parameter Type Default Description pageinteger 1 Page number limitinteger 20 Results per page (max: 100)
Date Filters
Parameter Type Description dateFromstring Filter by date from (ISO-8601 string) dateTostring Filter by date to (ISO-8601 string) date_presetstring Relative date shorthand — takes precedence over dateFrom/dateTo. See Date Presets
Text Search
Parameter Type Description searchstring Free-text search across company name, industry, person name, and role
Exact Match Filters
Parameter Type Description personLinkedinUrlstring Exact LinkedIn URL for a person companyLinkedinUrlstring Exact LinkedIn URL for a company sourcestring Exact match on source: linkedin, press_release, other
Field-specific Search (partial match)
Parameter Type Description person_namestring Search by person name company_namestring Search by company name new_rolestring Search by new role / job title keywordstring Search by keyword tag
Role Category Filters
Parameter Type Description positionsstring Comma-separated position IDs (e.g., CEO,CTO,CFO). See Positions departmentsstring Comma-separated department IDs (e.g., marketing,engineering). See Departments senioritiesstring Comma-separated seniority IDs (e.g., c_level,vp,director). See Seniorities
Sorting
Parameter Type Default Description sort_bystring occurred_atSort field: occurred_at, discovered_at, person_name, company_name sort_orderstring descSort direction: asc or desc
Enum Values
Positions
"ceo", "cto", "cfo", "coo", "vp of engineering", "vp of sales", "vp of marketing",
"head of product", "head of growth", "head of engineering", "engineering manager",
"product manager", "sales manager", "marketing manager", "founder", "co-founder"
Departments
"marketing", "sales", "engineering", "product", "design", "operations", "finance", "people",
"data", "customer_success", "growth", "legal"
Seniorities
"founder", "c_level", "vp", "director", "head", "lead", "manager"
Response Structure
All successful responses follow this structure:
{
"success" : true ,
"data" : [ ... ],
"pagination" : {
"currentPage" : 1 ,
"totalPages" : 10 ,
"totalCount" : 200 ,
"hasNextPage" : true ,
"hasPreviousPage" : false
},
"meta" : {
"endpoint" : "signals.job-changes" ,
"creditsUsed" : 1
}
}
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:
{
"success" : false ,
"error" : "Error message description"
}
Example Usage
Filter by Position and Date Preset
curl -X GET "https://www.trysignalbase.com/api/v2/signals/job-changes?date_preset=last_30d&positions=CEO,CTO" \
-H "Authorization: Bearer YOUR_API_KEY"
Filter by Company and Seniority
curl -X GET "https://www.trysignalbase.com/api/v2/signals/job-changes?company_name=Google&seniorities=c_level" \
-H "Authorization: Bearer YOUR_API_KEY"
Search by New Role with Sorting
curl -X GET "https://www.trysignalbase.com/api/v2/signals/job-changes?new_role=VP%20Engineering&sort_by=occurred_at&sort_order=desc" \
-H "Authorization: Bearer YOUR_API_KEY"
Target by LinkedIn URLs
curl -X GET "https://www.trysignalbase.com/api/v2/signals/job-changes?personLinkedinUrl=https://www.linkedin.com/in/example&companyLinkedinUrl=https://www.linkedin.com/company/example" \
-H "Authorization: Bearer YOUR_API_KEY"