Siftsmith
← Buyer Intent Signals

How to score leads by hiring activity

A company posting jobs has budget and is changing. A company posting jobs and missing the kind of tool you sell is a better account still. This page shows how to turn both into one 0–100 score you can sort a list by: by hand in a spreadsheet, and for a whole account list in one run.

What the score should measure

“Is hiring” is too blunt to rank on. Two numbers from a company’s job board do most of the work:

All three come from public sources you can check yourself: the company’s job board and its homepage. What this is not: third-party intent data. Nothing here tracks which topics a company’s employees read around the web. It scores what a company publishes about itself.

Score a few accounts by hand

1. Count open roles and recent postings

Find the company’s job board. Open its careers page, click into any job and read the address bar: jobs.ashbyhq.com/slug, boards.greenhouse.io/slug or jobs.lever.co/slug give you both the ATS and the board name. (Find which ATS a company uses covers the tricky cases.) Those three ATSs publish a free JSON feed of every open job with its posting date:

# Open roles on Notion's Ashby board
curl -s https://api.ashbyhq.com/posting-api/job-board/notion | jq '.jobs | length'

# How many were published in the last 30 days
# (GNU date; on macOS use: date -u -v-30d +%FT%TZ)
curl -s https://api.ashbyhq.com/posting-api/job-board/notion \
  | jq --arg d "$(date -u -d '30 days ago' +%FT%TZ)" \
       '[.jobs[] | select(.publishedAt >= $d)] | length'

On Greenhouse the feed is boards-api.greenhouse.io/v1/boards/slug/jobs and the date field is first_published; on Lever it’s api.lever.co/v0/postings/slug?mode=json with createdAt in milliseconds. If you don’t use a terminal, count the roles on the board page and eyeball the dates.

2. Turn the two counts into a score

Put open roles in column B and roles posted in the last 30 days in column C. This is the formula we use, and you can paste it as is:

=ROUND(100*(0.6*MIN(1,LOG10(B2+1)/LOG10(301)) + 0.4*IF(B2=0,0,C2/B2)))

Volume is 60% of the score and log-scaled, so going from 3 to 30 roles matters far more than going from 300 to 600 (it tops out at 300). Pace is the other 40%: the share of open roles that are less than 30 days old. A company with 128 open roles, 26 of them new, scores 59. One with 3 roles, 1 new, scores 28.

One correction worth making by hand: if most of a board’s roles share the same posting date, the company probably migrated or re-imported its board, and those dates don’t mean the roles are new. Don’t count them as recent.

3. Check the homepage for your category

Open the homepage, view the source (Ctrl+U, or Cmd+Option+U on a Mac) and search for the script your category leaves behind. For support tools, that’s widget.intercom.io (Intercom), static.zdassets.com (Zendesk), js.driftt.com (Drift) or client.crisp.chat (Crisp). For CRM it’s js.hsforms.net (HubSpot forms) or a force.com script (Salesforce). Check which technologies a list of websites uses has a longer list.

If nothing from your category shows up, raise that account’s score. We multiply it by 1.5, capped at 100. If you couldn’t load the homepage at all, leave the score alone: an unknown isn’t an absence.

That’s three to five minutes per account. Fine for a shortlist of ten; slow for a 300-account territory.

Score a whole list in one run

Buyer Intent Signals does the three steps above for every company in your list and returns one row each. Put domains into Companies on the Apify Store page, pick the category you sell from Target technology category, or send JSON through the API:

{
  "companies": ["ramp.com", "vercel.com", "airtable.com",
                "notion.so", "apple.com"],
  "targetCategory": "Support"
}

It finds each company’s job board on Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Breezy HR or Personio (Workday only when you pass the board explicitly), computes hiringScore with the formula above, checks the homepage against 84 technology fingerprints, and combines the two into buyerIntentScore.

What that run returned (27 September 2026)

InputopenJobspostedLast30dhiringScoreSupport tool on homepagebuyerIntentScoreCharged
ramp.com1586068none100$0.06
vercel.com882056none84$0.06
notion.so1282659Zendesk59$0.06
airtable.com3128Qualified28$0.06
apple.com000none0free

The run cost $0.24: four company reports at $0.06, Apple free. One row, trimmed:

{
  "company": "vercel.com",
  "domain": "vercel.com",
  "hiringFound": true,
  "hiringScore": 56,
  "openJobs": 88,
  "postedLast30d": 20,
  "ats": "greenhouse",
  "boardUrl": "https://boards.greenhouse.io/vercel",
  "matchConfidence": "high",
  "techFound": true,
  "technologiesByCategory": {
    "CMS": ["Contentful"],
    "Frontend": ["Next.js", "Tailwind CSS"],
    "Hosting": ["Vercel"],
    "Fonts": ["Google Fonts"],
    "Marketing": ["Clearbit"]
  },
  "hasTargetCategory": false,
  "buyerIntentScore": 84
}

What to take from it:

The exact scoring rules

No target category setbuyerIntentScore = hiringScore
Category set and found on the homepagebuyerIntentScore = hiringScore
Category set, homepage checked, category not foundround(hiringScore × 1.5), capped at 100
Category set, homepage couldn’t be checkedbuyerIntentScore = hiringScore
No job board with open jobs0

hiringScore is the spreadsheet formula from step 2. On a board flagged bulkRepublish (20+ roles, more than half published within one 24-hour window) those roles still count toward volume but not toward pace. Categories you can target: Analytics, CMS, Frontend, Hosting, Marketing, Support, CRM, Ecommerce, Recruiting, Payments, Video, Fonts and A/B Testing. Coverage is uneven: Support covers Intercom, Drift, Zendesk, Crisp, Tawk.to, Freshchat and Qualified; CRM covers only Salesforce, HubSpot CRM, Pipedrive, Zoho SalesIQ and Freshsales, and only when the homepage references their script.

Pass domains, not names. For a bare name like Ramp the website is guessed as ramp.com (flagged domainGuessed: true); a guess that redirects to a different company’s site isn’t used. An explicit board like greenhouse:stripe has no domain at all, so it gets a hiring score but no tech check.

Other ways to get hiring and tech data

If you want to find new accounts rather than rank a list you already have, the job-data providers index postings and technographics across many companies. You then build your own score on top:

ToolWhat it isPrice (official pricing page)
TheirStackSearchable database of job postings and technographics, with an APIFree plan with 50 company credits and 200 API credits a month; API plans from $49/month for 1,500 credits. 1 credit per job returned; 3 per company, or per company’s full technology list.
PredictLeadsCompany datasets by API, job openings and technology detections included100 free API credits a month; then $0.04 per credit with a $40 minimum monthly charge, falling with volume. One request for a company’s job openings (up to 1,000) is 1 credit; technology detections the same.
Buyer Intent SignalsLive check and score of a list you supply$0.06 per company with an open job board; companies without one aren’t charged; no subscription

Neither provider gives you a ready-made “hiring and missing my category” score; you’d pull both datasets and combine them. They do cover far more technologies than our 84 and can answer “who is hiring” across companies you haven’t listed. We only check the companies you give us, at run time.

Prices are from their public pricing pages, checked 27 September 2026: TheirStack pricing (credit usage from TheirStack’s credits docs), PredictLeads pricing.

What it costs

Company report$0.06 ($60 per 1,000), no subscription

A company is charged when a public job board with at least one open job is found for it. The tech check alone never triggers a charge. These come back as free rows:

Set a maximum total charge for the run and you’re never charged past it. Once it’s reached, every input left over still gets a row with skipped: true, uncharged.

FAQ

What does it cost to score 500 accounts?

At most $30. Only accounts with an open job board count, so a list with many large enterprises or companies that don’t publish jobs costs less. In our five-company example, one of five was free.

Am I charged for a company that already uses my category?

Yes, if it has an open job board. You pay for the report, and hasTargetCategory: true is part of the answer: it tells you to deprioritise that account or pitch a switch.

Does choosing a target category cost more?

No. The price is the same with or without one; the category only changes how the score is calculated.

Is this the same as Bombora or 6sense intent data?

No. Those products infer research activity from content consumption across the web. This reads a company’s own public job board and homepage. It tells you who is growing and what their site runs, not what they are reading.

Can I run it from Clay or a spreadsheet?

Yes: through Apify’s integrations (Clay, Make, Zapier) or the API. Using our tools in Clay has the steps.

Score your list on the Apify Store →