Company Jobs Finder & New-Jobs Monitor (11 ATS) avatar

Company Jobs Finder & New-Jobs Monitor (11 ATS)

Pricing

from $1.50 / 1,000 job returneds

Go to Apify Store
Company Jobs Finder & New-Jobs Monitor (11 ATS)

Company Jobs Finder & New-Jobs Monitor (11 ATS)

Give company websites, get every open job from their job board: Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor, BambooHR, Workday, Breezy. Working filters, no duplicates, and a monitor mode that returns only new jobs.

Pricing

from $1.50 / 1,000 job returneds

Rating

0.0

(0)

Developer

Southern Data

Southern Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

Give it a list of company websites. For each one it finds the company's job board (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor, BambooHR, Workday, Breezy) and returns every open job as one clean row. Or switch to monitor mode and schedule it: each run returns only the jobs that are new since the last run.

  • Domain in, jobs out. linear.app, https://notion.com, a careers page, or a board link such as https://jobs.lever.co/acme. One company list, all providers, one output format.
  • Only official public job-board feeds. The same feeds the companies use to publish their jobs on their own careers pages. No logins, no bypassing protection, no LinkedIn or Indeed scraping.
  • Filters that work on every board. Title, excluded words, location, department, workplace type (remote/hybrid/onsite) and posting date are applied by this Actor to every job, whatever the provider supports. The run summary tells you how many jobs each filter removed, so you can see it working.
  • No duplicates. Repeat postings of the same job (one per hiring slot) are merged into one row by default (duplicatesMerged says how many), and a board reached from two inputs is listed once.
  • New-jobs monitor. Remembers which jobs it has already seen in a named key-value store in your account, so a daily schedule plus a webhook or Slack/email integration gives you "new jobs at these companies" alerts.

Pricing

EventPriceWhen
company-checked$0.001A company's job board was found and read
job$0.0015Each job row returned (all-jobs mode)
new-job$0.003Each new job returned in monitor mode

1,000 jobs from 50 companies cost $1.55. A daily monitor of 100 companies costs $0.10 per run plus $0.003 per new job. Free: companies where no board is found, invalid input, duplicate inputs, jobs removed by your filters, and the jobs a monitor has already shown you. The log shows the cost before the run starts. Set Maximum cost per run and the Actor stops cleanly there (the rest of the list goes to the REMAINING record, free).

Quick start

  1. Click Try for free.
  2. Paste company websites, one per line (or comma-separated), or paste a link to a CSV / TXT file or a Google Sheet (shared as "Anyone with the link can view") in companiesFileUrl. A column named website, domain, url, company website, careers url (or similar) is used automatically.
  3. Optional: add filters, e.g. title engineer, location berlin, germany, remote.
  4. Click Start. Open the Output tab: Jobs, Job details, Companies (not found / no match) or All fields. Download as CSV, Excel or JSON.

Monitor: set What to return to new_jobs, give it a Monitor name (e.g. my-target-accounts), and add a daily schedule. The first run saves the current jobs as the baseline (only company-checked is charged; turn on Return current jobs on the first run if you want them too). Every later run returns only jobs that weren't there before.

Via API:

curl -X POST "https://api.apify.com/v2/acts/southern-data~company-jobs-finder/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"companies":["linear.app","notion.com","https://jobs.lever.co/palantir"],"titleKeywords":["engineer"],"locationKeywords":["remote","europe"]}'

Shorthand works too when you already know the board: greenhouse:figma, lever:palantir, ashby:linear, workday:tenant/Site@wd5.

Example row

A real row from a monitor run (new_jobs mode, input ashby:ramp), trimmed:

{
"rowType": "job",
"input": "ashby:ramp",
"company": "Ramp",
"ats": "ashby",
"boardUrl": "https://jobs.ashbyhq.com/ramp",
"detectionMethod": "ats_url_input",
"confidence": "high",
"status": "ok",
"jobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"jobKey": "2eh88o1bsuoru",
"title": "Security Engineer, Cloud",
"department": "Engineering",
"team": "Backend",
"location": "New York, NY (HQ)",
"locations": ["New York, NY (HQ)", "Remote (Canada)", "Remote (US)", "Miami, FL"],
"country": "United States",
"workplaceType": "hybrid",
"employmentType": "Full-Time",
"postedAt": "2026-04-07T17:12:35.753Z",
"jobUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application",
"salaryMin": 211400,
"salaryMax": 290600,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salaryText": "$211.4K – $290.6K • Offers Equity",
"duplicatesMerged": 0,
"isNew": true,
"firstSeenAt": "2026-11-01T03:11:26.006Z"
}

Every row has the same 41 fields (missing values are null), so CSV exports line up. jobKey is stable across runs, so you can deduplicate in your own database. Companies with nothing to return get one rowType: "company" row explaining why (board_not_found, no_open_jobs, no_matching_jobs, invalid_input, duplicate_board, not_processed, error), all free.

How it finds the job board

  1. Board links you give are used as they are.
  2. The company website: the homepage and up to 6 careers pages are read (robots.txt respected) for links or embeds of a supported provider. This is the most reliable path (detectionMethod: link_on_site, confidence: high).
  3. Name lookup: if the site links no board, the company name is tried on each provider. A guessed board is only used when it really belongs to the company: its postings link to the company's domain, or its name matches and the website mentions that provider (slug_match). A board that merely shares the name is rejected.

How accurate is it?

Tested in November 2026 on real companies, with default settings:

TestResult
Tuning set: 40 companies with a public board on a supported provider35 of 40 found (20 via a link on the website, 15 via name lookup), 0 wrong boards
Held-out set: 28 companies with open jobs, not used while building21 of 28 found, 0 wrong boards. Misses: 3 use their own or an unsupported system (e.g. Rippling, Revolut's site blocks bots), 2 use a board name that can't be guessed (e.g. Trade Republic → traderepublicbank), 1 empty board, 1 unclear
Companies with no supported board (should return nothing)9 of 9 correctly returned board_not_found — no false matches

So expect roughly 3 in 4 company websites to resolve on tech/startup lists, and no wrong company's jobs. When the website doesn't link its board and the name can't be guessed, paste the board link (or shorthand) instead: those always work.

What's in each field, per provider

Fields are only as complete as the provider's public feed:

Dept.CountryWorkplace typePosted dateSalaryDescription
Greenhouse✅—from location text only✅—✅
Lever✅ + team✅~60%✅when published✅
Ashby✅✅✅✅when published✅
Workable✅✅✅✅—✅
SmartRecruiters✅✅✅✅—✅ (1 request per job)
Recruitee✅✅✅✅when published✅
Personio✅—partly✅—✅
Teamtailorpartly✅✅✅—✅
BambooHR✅✅✅read per jobwhen published✅ (1 request per job)
Workday—per jobrarely"Posted N days ago" → date; exact date per job—✅ (1 request per job)
Breezy✅✅—✅✅—

What it does NOT do (please read)

  • It needs a website or board link, not a company name. Stripe alone is rejected (free) with a message; stripe.com works.
  • Workday is best-effort. Workday boards are found only when the website links a myworkdayjobs.com board. Big companies with a custom career site on top of Workday (e.g. Salesforce, Adobe) are missed; paste the board link (https://acme.wd5.myworkdayjobs.com/External) if you have it. Only the "Posted N days ago" text is in the list; exact dates and all locations are read per job when your filters need them (up to 300 per company).
  • Board names that can't be guessed are missed unless the website links them (see the accuracy table).
  • One board per company. The first supported board found is read; a second board (e.g. a separate one for a subsidiary or country) is not. Add it as its own input.
  • Unsupported systems (company-built career sites, Rippling, iCIMS, Taleo, SuccessFactors, Join, etc.) return board_not_found, free.
  • Descriptions are capped at 20,000 characters. On boards that need one request per job (Workday, BambooHR, SmartRecruiters) they are read for up to 300 matching jobs per company; the COMPANIES record notes when that limit was hit.
  • Monitor mode notes:
    • A new job that your filters remove is remembered as seen; it won't appear later if you change the filters. Change the Monitor name to start a fresh baseline.
    • Don't run the same monitor twice at the same time (the second run may repeat jobs).
    • Jobs not seen for 90 days are forgotten, so a job reposted after 90+ days counts as new.
    • Without a Monitor name, the memory is tied to the exact company list; editing the list starts a new memory. Set a name to avoid that.
  • postedWithinDays drops undated jobs (rare; counted in RUN_SUMMARY.jobsRemovedByFilter).
  • Keyword matching is by word start: engineer matches Engineering Manager; sales also matches Salesforce Admin — add salesforce to Job title does NOT contain if you don't want those.

Records in the key-value store

  • RUN_SUMMARY: counts per status, jobs removed by each filter, duplicates merged, events charged, the monitor store used.
  • COMPANIES: one entry per input: status, board, detection method, jobs on board / matched / returned, notes.
  • REMAINING: inputs not processed (max cost reached or maxCompanies), ready to re-run.

Speed

Fast: most boards are read in one or a few requests. Measured in the Apify cloud: 25 companies in 13 seconds; 3,000 jobs from Bosch and Workday in 34 seconds. Detail requests (Workday/BambooHR dates, per-job descriptions) are slower: ~45 seconds for a filtered run over 6 large boards with descriptions. 512 MB memory is plenty (a 4,400-job board used 130 MB).

Bad input never fails the run: if nothing usable is given, the run ends with a clear message and $0 charged.

Good to combine with

Responsible use

Job postings are published by the companies to be shown widely, and this Actor uses the providers' official public job-board feeds. Please link back to the original jobUrl when you republish a job, and respect each provider's terms if you build a job board on top.

Support

Found a company whose board we missed or misread? Open an issue on the Issues tab with the website. Bug reports are usually fixed within a few days.