Hiring Velocity

Track company hiring pace with department breakdowns, location distribution, and historical trend analysis to identify growth signals.

Overview

Hiring Velocity measures how aggressively a company is hiring—and where that growth is focused.

We track open roles across 21M+ companies, computing hiring velocity as a percentage of current headcount and breaking it down by department, location, seniority, and contract type. Historical comparisons show whether hiring is accelerating, steady, or decelerating over 30/60/90 day windows.

The result: you can identify companies in growth mode, understand which departments have budget, and time outreach to moments when teams are actively building—not just maintaining.

Available Subtypes

Subtype EnumCategoryDescription
hiringVelocityhiringAggregate hiring metrics showing company hiring pace and breakdowns

Signal Categories

Signals are organized into these categories:

CategoryDescription
hiringHiring activity metrics

Schema

{
  "signal_id": "28748077-b474-4365-8af6-0d7fbfc04d18",
  "signal_type": "hiring-velocity",
  "signal_subtype": "hiringVelocity",
  "detected_at": "2025-12-21T11:00:06Z",
  "association": "company",
  "company": {
    "name": "Hill's Pet Nutrition, Inc.",
    "domain": "hillspet.com",
    "linkedin_url": "linkedin.com/company/hill%27s-pet-nutrition",
    "industries": [
      "Pet Food Manufacturing"
    ],
    "employee_count_low": 2,
    "employee_count_high": 10
  },
  "data": {
    "takeaway": "Hiring velocity: Very aggressive for a small company. When companies with < 100 employees have open roles exceeding 20% of current headcount, that's considered hyper-growth.",
    "numberOfEmployees": 6,
    "numberOfOpenRoles": 6,
    "hiringVelocityPct": 100,
    "historicalComparison": {
      "rolesOpenedLast30d": 6,
      "rolesOpenedPrev30d": 13,
      "rolesOpenedPrev60d": 6,
      "trend": "decelerating"
    },
    "departments": [
      {
        "category": "management",
        "count": 15,
        "pct": 250
      },
      {
        "category": "sales",
        "count": 14,
        "pct": 233.3
      },
      {
        "category": "finance",
        "count": 5,
        "pct": 83.3
      },
      {
        "category": "operations",
        "count": 4,
        "pct": 66.7
      },
      {
        "category": "engineering",
        "count": 3,
        "pct": 50
      }
    ],
    "locations": [
      {
        "category": "Tokyo, Japan",
        "count": 4,
        "pct": 66.7
      },
      {
        "category": "Prague, Czechia",
        "count": 3,
        "pct": 50
      },
      {
        "category": "Topeka, Kansas, United States",
        "count": 2,
        "pct": 33.3
      }
    ],
    "seniority": [
      {
        "category": "manager",
        "count": 15,
        "pct": 250
      },
      {
        "category": "non_manager",
        "count": 12,
        "pct": 200
      },
      {
        "category": "director",
        "count": 1,
        "pct": 16.7
      }
    ]
  }
}

Field Reference

Core Fields

FieldTypeRequiredDescription
signal_idstring (UUID)Unique identifier for this signal
signal_typestringAlways "hiring-velocity"
signal_subtypestringAlways "hiringVelocity" (hiringVelocity)
detected_atstring (ISO 8601)Timestamp when signal was detected
associationstringAlways "company"

Company Object

FieldTypeRequiredDescription
company.namestringCompany name
company.domainstringCompany website domain
company.linkedin_urlstring (URL)LinkedIn company URL
company.industriesarray[string]Industry classifications
company.employee_count_lowintegerLower bound of employee count
company.employee_count_highintegerUpper bound of employee count

Data Object

FieldTypeRequiredDescription
data.takeawaystringHuman-readable velocity context
data.numberOfEmployeesintegerTotal employee count
data.numberOfOpenRolesintegerTotal open positions
data.hiringVelocityPctfloatOpen roles as percentage of headcount
data.historicalComparison.rolesOpenedLast30dintegerRoles opened in last 30 days
data.historicalComparison.rolesOpenedPrev30dintegerRoles opened 30-60 days ago
data.historicalComparison.rolesOpenedPrev60dintegerRoles opened 60-90 days ago
data.historicalComparison.trendstringTrend direction based on historical comparison (accelerating, steady, decelerating)
data.departmentsarray[object]Department breakdown with category, count, pct
data.departments[].categorystringDepartment category (see allowed values above)
data.departments[].countintegerNumber of open roles in this department
data.departments[].pctfloatPercentage of total open roles (may exceed 100% as roles can belong to multiple categories)
data.locationsarray[object]Location breakdown with category, count, pct
data.locations[].categorystringLocation name (city, state, country)
data.locations[].countintegerNumber of open roles in this location
data.locations[].pctfloatPercentage of total open roles (may exceed 100% as roles can be in multiple locations)
data.seniorityarray[object]Seniority breakdown with category, count, pct
data.seniority[].categorystringSeniority level category (c_level, director, founder, head, manager, non_manager, owner, partner, president, vice_president)
data.seniority[].countintegerNumber of open roles at this seniority
data.seniority[].pctfloatPercentage of total open roles (may exceed 100% as roles can span multiple seniority levels)
data.contractsarray[object]Contract type breakdown with category, count, pct
data.contracts[].categorystringContract type (full time, part time, contract, remote, etc.)
data.contracts[].countintegerNumber of open roles with this contract type
data.contracts[].pctfloatPercentage of total open roles (may exceed 100% as roles can have multiple contract attributes)

Coverage

  • Refresh: Weekly
  • Coverage: 21,000,000 companies