Hiring Velocity
Track company hiring pace with department breakdowns, location distribution, and historical trend analysis to identify growth signals.
Aggregate hiring metrics showing company hiring pace, department breakdowns, and historical trends.
Why This Signal Matters
- Growth indicator - High hiring velocity signals company expansion and budget
- Department focus - See which teams are growing fastest
- Trend analysis - Compare 30/60/90 day hiring patterns
- Location insights - Understand geographic expansion
Available Subtypes
| Subtype Enum | Category | Description |
|---|---|---|
hiringVelocity | hiring | Aggregate hiring metrics showing company hiring pace and breakdowns |
Signal Categories
Signals are organized into these categories:
| Category | Description |
|---|---|
hiring | Hiring activity metrics |
Schema
{
"signal_id": "1327e29c-f215-4c14-85e3-4d7a1782a986",
"signal_type": "hiring-velocity",
"signal_subtype": "hiringVelocity",
"detected_at": "2025-12-31T12:47:26Z",
"association": "company",
"company": {
"name": "Illumina",
"domain": "illumina.com",
"linkedin_url": "linkedin.com/company/illumina",
"industries": [
"Biotechnology Research"
],
"employee_count_low": 5001,
"employee_count_high": 10000
},
"data": {
"takeaway": "Hiring velocity: Moderate growth for a very large company. When companies with > 5000 employees have open roles between 1% and 5% of their workforce, that's considered steady hiring.",
"numberOfEmployees": 7501,
"numberOfOpenRoles": 79,
"hiringVelocityPct": 1.05,
"historicalComparison": {
"rolesOpenedLast30d": 79,
"rolesOpenedPrev30d": 38,
"rolesOpenedPrev60d": 19,
"trend": "increasing"
},
"departments": [
{
"category": "engineering",
"count": "59",
"pct": 74.7
},
{
"category": "sales",
"count": "40",
"pct": 50.6
},
{
"category": "management",
"count": "32",
"pct": 40.5
},
{
"category": "quality_assurance",
"count": "19",
"pct": 24.1
},
{
"category": "directors",
"count": "15",
"pct": 19.0
}
],
"locations": [
{
"category": "San Diego, California, United States",
"count": "45",
"pct": 57.0
},
{
"category": "Singapore, Singapore",
"count": "25",
"pct": 31.6
},
{
"category": "India",
"count": "10",
"pct": 12.7
},
{
"category": "Cambridge, United Kingdom",
"count": "6",
"pct": 7.6
},
{
"category": "Shanghai, China",
"count": "5",
"pct": 6.3
}
],
"seniority": [
{
"category": "non_manager",
"count": "96",
"pct": 121.5
},
{
"category": "manager",
"count": "28",
"pct": 35.4
},
{
"category": "director",
"count": "11",
"pct": 13.9
},
{
"category": "head",
"count": "1",
"pct": 1.3
}
],
"contracts": [
{
"category": "full time",
"count": "101",
"pct": 127.8
},
{
"category": "commission",
"count": "58",
"pct": 73.4
},
{
"category": "remote",
"count": "38",
"pct": 48.1
},
{
"category": "hybrid",
"count": "18",
"pct": 22.8
},
{
"category": "all levels",
"count": "17",
"pct": 21.5
}
]
}
}Field Reference
Core Fields
| Field | Type | Required | Description |
|---|---|---|---|
signal_id | string (UUID) | ✓ | Unique identifier for this signal |
signal_type | string | ✓ | Always "hiring-velocity" |
signal_subtype | string | ✓ | Always "hiringVelocity" (hiringVelocity) |
detected_at | string (ISO 8601) | ✓ | Timestamp when signal was detected |
association | string | ✓ | Always "company" |
Company Object
| Field | Type | Required | Description |
|---|---|---|---|
company.name | string | ✓ | Company name |
company.domain | string | ✓ | Company website domain |
company.linkedin_url | string (URL) | LinkedIn company URL | |
company.industries | array[string] | Industry classifications | |
company.employee_count_low | integer | Lower bound of employee count | |
company.employee_count_high | integer | Upper bound of employee count |
Data Object
| Field | Type | Required | Description |
|---|---|---|---|
data.takeaway | string | Human-readable velocity context | |
data.numberOfEmployees | integer | Total employee count | |
data.numberOfOpenRoles | integer | Total open positions | |
data.hiringVelocityPct | float | Open roles as percentage of headcount | |
data.historicalComparison.rolesOpenedLast30d | integer | Roles opened in last 30 days | |
data.historicalComparison.rolesOpenedPrev30d | integer | Roles opened 30-60 days ago | |
data.historicalComparison.rolesOpenedPrev60d | integer | Roles opened 60-90 days ago | |
data.historicalComparison.trend | string | Trend direction based on historical comparison (increasing, steady, decreasing) | |
data.departments | array[string] | Department breakdown with category, count, pct | |
data.departments[].category | string | Department category (see allowed values above) | |
data.departments[].count | string | Number of open roles in this department | |
data.departments[].pct | float | Percentage of total open roles (may exceed 100% as roles can belong to multiple categories) | |
data.locations | array[string] | Location breakdown with category, count, pct | |
data.locations[].category | string | Location name (city, state, country) | |
data.locations[].count | string | Number of open roles in this location | |
data.locations[].pct | float | Percentage of total open roles (may exceed 100% as roles can be in multiple locations) | |
data.seniority | array[string] | Seniority breakdown with category, count, pct | |
data.seniority[].category | string | Seniority level category (c_level, director, founder, head, manager, non_manager, owner, partner, president, vice_president) | |
data.seniority[].count | string | Number of open roles at this seniority | |
data.seniority[].pct | float | Percentage of total open roles (may exceed 100% as roles can span multiple seniority levels) | |
data.contracts | array[string] | Contract type breakdown with category, count, pct | |
data.contracts[].category | string | Contract type (full time, part time, contract, remote, etc.) | |
data.contracts[].count | string | Number of open roles with this contract type | |
data.contracts[].pct | float | Percentage of total open roles (may exceed 100% as roles can have multiple contract attributes) |
Coverage
- Refresh: Weekly
- Coverage: 21,000,000 companies
Updated about 7 hours ago
