Company Hiring Signals: Hiring Score, No LinkedIn Data avatar

Company Hiring Signals: Hiring Score, No LinkedIn Data

Pricing

from $50.00 / 1,000 companies

Go to Apify Store
Company Hiring Signals: Hiring Score, No LinkedIn Data

Company Hiring Signals: Hiring Score, No LinkedIn Data

$0.045 per company. One row of hiring signals for each company you give: a 0 to 100 hiring score, open jobs, jobs posted in the last 7 and 30 days, job age, top teams and locations, leadership and first hires. Read live from its career page. A domain in, one row out, for Clay or a sheet. No login.

Pricing

from $50.00 / 1,000 companies

Rating

0.0

(0)

Developer

Don Mangu

Don Mangu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

Company Hiring Signals gives you one row of hiring signals for each company you name, read live from its career page when you run it. You get a 0 to 100 hiring score, open jobs, jobs posted in the last 7 and 30 days, how old the open jobs are, the top departments and locations, the job function and seniority mix, and open leadership and first-hire roles. $0.045 per company, whatever the size of its job board. No API key or login. No personal data.

Every field is a number or plain text, with no lists or nested objects, so one company in gives one row out. That fits a Clay column, a Google Sheet or a CSV file. Give a company website such as stripe.com, a job board link, or a plain company name.

  • Sales and RevOps teams score an account list by how actively each company hires, and find accounts that just opened sales, data or leadership roles.
  • Recruiters and agencies see which target companies are growing and in which teams and places.
  • Investors and analysts track hiring at portfolio and peer companies week by week.

Try it now. Click Try for free and create a free Apify account, no credit card needed. The form is filled in with stripe.com (Greenhouse), ramp.com (Ashby), notion.so (Ashby), figma.com (Greenhouse) and linear.app (Ashby). Click Start to get 5 rows for $0.225 in a few seconds.

Use it in Clay: a domain in, one row out

  1. In Clay, connect your Apify account once in Settings > Connections (Apify, with your Apify API token).

  2. In your table, click Add enrichment, search for Run Apify Actor and pick conserving_celerytop/company-hiring-signals.

  3. Enter the input with your domain column inserted where /Domain is. Keep the key in quotes, not the column token:

    {"companies": [/Domain]}
  4. Run one row first and check it. Then click the result cell, hover over a field such as hiringScore, and click Add as column.

The result is the run's dataset: one row for that domain. A company is charged once per run, also when its board is empty or not found, so keep Clay's Autoupdate off until one row works. Clay counts the call as an action on your own Apify key, with no Clay data credits.

For one call per table instead of one per row, paste up to 500 domains into Companies in Apify Console, or send them through the Apify API, and import the dataset.

What you get

One row per company, in this order. An example row from a run on 2026-09-26:

{
"rowType": "company",
"company": "notion.so",
"companyName": null,
"companyDomain": "notion.so",
"ats": "ashby",
"boardUrl": "https://jobs.ashbyhq.com/notion",
"matchedBy": "name",
"companyStatus": "ok",
"hiringScore": 98,
"openJobs": 128,
"jobsPostedLast7Days": 9,
"jobsPostedLast30Days": 26,
"newestPostedAt": "2026-09-25T13:40:48.475Z",
"oldestOpenJobDays": 427,
"medianJobAgeDays": 52,
"topDepartmentsText": "Sales (41); Engineering (16); Outcomes Architect (14); People (11); Marketing (10)",
"topLocationsText": "San Francisco, California (59); New York, New York (16); Dublin, Ireland (15); Tokyo, Japan (15); Paris, France (6)",
"jobFunctionMix": "sales 27%, engineering 20%, customer_success 13%, marketing 9%, people_hr 8%, operations 7%, it_security 5%, finance 3%, design 2%, data 2%, education 2%, legal 2%, other 1%, product 1%",
"seniorityMix": "lead_manager 22%, entry 3%, intern 3%, director 2%, senior 1%",
"remoteShare": 0,
"salaryCoverage": 0,
"leadershipRolesText": "Head of Demand Engine; Head of Early Career Recruiting",
"firstHireRolesText": "",
"toolsNamed": null,
"newJobs": null,
"closedJobs": null,
"previousCheckAt": null,
"charged": true,
"chargedEvent": "company-lookup",
"warning": null,
"error": null,
"fetchedAt": "2026-09-26T16:49:18.595Z"
}
FieldWhat it holds
companyThe entry as you gave it
companyNameThe company name the job board gives, when it gives one
companyDomainThe website you gave, else the domain most of its job links use
atsThe job board system, such as greenhouse, lever or ashby
boardUrlThe job board the numbers come from
matchedByHow the board was found: link, website, directory, name or name variant
companyStatusRead this first. ok means jobs were read. See Statuses and charges
hiringScore0 to 100, see How the hiring score works
openJobsOpen jobs that pass your filters
jobsPostedLast7DaysOf those, jobs posted in the last 7 days
jobsPostedLast30DaysOf those, jobs posted in the last 30 days
newestPostedAtPosting date of the newest job
oldestOpenJobDaysDays since the oldest open job was posted
medianJobAgeDaysMedian days since the open jobs were posted
topDepartmentsTextUp to 5 departments with the most jobs, with counts
topLocationsTextUp to 5 locations with the most jobs, with counts
jobFunctionMixShare of open jobs per job function, such as sales or engineering
seniorityMixShare of open jobs per level read from the title. Titles with no level are not counted, so the shares can add up to less than 100%
remoteShareShare of jobs that can be done fully remote, 0 to 1
salaryCoverageShare of jobs with a published salary, 0 to 1
leadershipRolesTextUp to 5 open director, VP and C-level titles, newest first
firstHireRolesTextUp to 5 first or founding hire titles, newest first
toolsNamedWith Include job description: up to 15 tools the job posts name most, such as Python, Snowflake or Salesforce
newJobsWith New and closed jobs: how many jobs are new since the previous check
closedJobsWith New and closed jobs: how many jobs closed since the previous check
previousCheckAtWith New and closed jobs: time of the previous check
chargedtrue when this company was charged in this run
chargedEventThe event charged: company-lookup or new-jobs-check
warningWhat to double check, such as a plain name that may belong to another company
errorWhy there are no numbers, when something went wrong
fetchedAtWhen the lookup started

A list is joined into one text, such as "Sales (41); Engineering (16)". An empty text means there are none, and null means the value is not known. The dataset view Hiring signals shows these columns, all but chargedEvent and fetchedAt. The COMPANIES record in the key-value store also has each company's status with companyTotalOpenJobs (all open jobs, before filters) and companyMatchedJobs.

How the hiring score works

hiringScore adds three parts, 100 points at most:

PartPointsFull points at
Open jobs (openJobs)40100 open jobs
Jobs posted in the last 30 days (jobsPostedLast30Days)4030 jobs
Jobs posted in the last 7 days (jobsPostedLast7Days)2010 jobs

Each part is points x min(1, log(1 + count) / log(1 + full)), and the sum is rounded. The log makes the first jobs count most, so a small company that just started hiring does not score zero next to a large one:

  • 1 open job, posted this week: 20.
  • 10 open jobs, 3 of them posted this month and 1 this week: 43.
  • 30 open jobs, 4 posted this month and none this week: 49.
  • 100 or more open jobs, 30 or more posted this month and 10 or more this week: 100.

The counts use only the jobs that pass your filters, so with Department set to sales it is a score of sales hiring. It is null when the board gives no posting dates (HiringThing, Trakstar Hire, and Freshteam without Include job description) or the company could not be read.

Input

The simplest input is a list of companies:

{"companies": ["stripe.com", "ramp.com", "notion.so", "figma.com", "linear.app"]}

Every field:

{
"companies": ["stripe.com", "https://jobs.lever.co/palantir", "linear"],
"companyLists": ["ai-companies"],
"excludeCompanies": ["openai.com"],
"department": "sales",
"location": "United States",
"postedSince": "90 days",
"includeDescription": false,
"onlyNewJobs": false,
"monitorName": "default"
}
  • Companies (companies): up to 500 per run. A website works when it links to its job board, a job board link always works, and a plain name works for many companies. A name can belong to another company with the same name: warning then says so.
  • Ready-made company lists (companyLists): ai-companies (179), tech-companies (311), remote-first (90), europe-tech (65) and startups (250). Each company in a list costs the same as one you type.
  • Exclude companies (excludeCompanies): names, websites or board links to leave out, not read and not charged.
  • Department, Location and Posted since (department, location, postedSince): count only the jobs that match. The score and every count then describe those jobs.
  • Include job description (includeDescription): adds toolsNamed, and first hires that only the job text mentions.
  • New and closed jobs since my last check and Monitor name (onlyNewJobs, monitorName): see below.

How much does it cost?

$0.045 per company, less on paid Apify plans, whatever the number of jobs on its board.

EventPriceWhen
Company (company-lookup)$0.045 per company; $0.0428 on Starter, $0.0405 on Scale, $0.036 on BusinessOne row of signals, also when the board is empty, not found or fails
Repeat monitor check (new-jobs-check)$0.002 per started 1,000 open jobsA later check with New and closed jobs instead of company-lookup
Description block (job-details)$0.01 per started 200 jobsOnly with Include job description, on JazzHR, Paylocity, Freshteam, JOIN, Polymer, Workday, Eightfold, ClearCompany, GoHire and HiringThing portals. Other boards include descriptions at no extra cost

Invalid entries, boards we do not read, websites we cannot open and duplicates are free. 1,000 companies cost $45, or $36 on the Business plan. Apify's free plan gives $5 of credit a month, which covers about 110 companies. In a normal run, Apify platform usage is included.

Weekly signals on a schedule

Turn on New and closed jobs since my last check and save the run as a task with a weekly or daily schedule. Each row then also has newJobs and closedJobs since the previous check, and previousCheckAt. The first check of a company costs $0.045, and each later check $0.002 per started 1,000 open jobs on its board. What you received is saved in your own Apify account, per Monitor name and set of filters, so use one monitor name per Clay table or list.

Statuses and charges

companyStatusMeaningCharged
okJobs were read and match your filtersYes
no_matching_jobsOpen jobs exist, but none match your filtersYes
no_open_jobsThe board has no open jobsYes
not_foundNo board was found under this name or linkYes
source_errorThe board failed or sent unreadable dataYes
no_job_board_foundWe read the website but found no job boardYes
website_unavailableWe could not open the websiteNo
unsupported_job_boardA board we do not read, or a site that opts out. error says whyNo
invalid_inputNot a link, website or nameNo
duplicateAnother entry was the same boardNo
skipped_time_limitTime ran out before this company was readNo
skipped_spending_limitYour spending limit could not cover this companyNo
internal_errorSomething failed on our side. error says whatOnly if it happened after we read the job board

Every company gets its row, also when it has no numbers, so your table keeps one row per company.

FAQ

It reads only job postings that companies publish on public job boards for applicants, with no login, and it follows robots.txt on company websites and on Workday and Eightfold sites. It returns counts and job titles, never names, emails or phone numbers of people. It skips sites whose terms do not clearly allow this use. We cannot give legal advice, so check that your use follows the laws and terms that apply to you.

What are the limits?

Up to 500 companies per run, and up to 1,000 entries in Exclude companies. It reads 22 job boards, including Greenhouse, Lever, Ashby, Workday, Workable, Personio, Teamtailor and Recruitee. A company that posts jobs only on LinkedIn or Indeed, or on a board we do not read, has no numbers here. A website must link to its job board, else the name is tried, which can match another company with the same name. Boards without posting dates give null for the date fields and the score.

How fresh are the numbers?

As fresh as the company's job board when you run it. Each run reads the boards again, and fetchedAt says when.

How is this different from ATS Jobs API?

ATS Jobs API is the same reader with every option. It returns one row per job, or a summary with lists and objects per company, and it has more filters. Use it when you need the jobs themselves. This Actor returns only the flat hiring signals row, with a short form, for tables and CRMs.

Why is a company not found?

Its website may not link to its job board, or its name on the board differs. Paste the job board link instead, such as https://jobs.ashbyhq.com/linear. Open any job on the company's careers page to find it.

This Actor is not affiliated with or endorsed by Greenhouse, Lever, Ashby, Workday, Eightfold, Clay or any other company named here. Their names are trademarks of their owners. An employer or job board that wants us to stop reading its site can open an issue, and we add it to our blocklist.

Support

Found a problem or need another field? Open an issue on the Issues tab. For the jobs themselves, use ATS Jobs API.