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 sources

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

Advanced Analytics Fields

FieldTypeDescription
data.historicalComparisonobjectHistorical context. Contains rolesOpenedLast30d (integer), rolesOpenedPrev30d (integer), rolesOpenedPrev60d (integer), trend (string: "accelerating", "steady", "decelerating")
data.netFlowRateobjectNet hiring flow rate. Contains pct7d (float), pct30d (float), pct90d (float), relevance (string)
data.relevancefloat (0.0-1.0)Score indicating how actionable this signal is for sales outreach
data.velocityChangeobjectVelocity change over time. Contains pct7d (float), pct30d (float), pct90d (float)

Contact [email protected] to get started.