Oracle, Taleo, BambooHR & Rippling Jobs Scraper (+5 more ATS) avatar

Oracle, Taleo, BambooHR & Rippling Jobs Scraper (+5 more ATS)

Pricing

from $1.25 / 1,000 jobs

Go to Apify Store
Oracle, Taleo, BambooHR & Rippling Jobs Scraper (+5 more ATS)

Oracle, Taleo, BambooHR & Rippling Jobs Scraper (+5 more ATS)

Get open jobs from companies on Oracle Recruiting, Taleo, BambooHR, Rippling, Teamtailor, Breezy, JazzHR, Jobvite or Gem. Input: company names or career-site URLs; optional title and location filters. Returns per job: title, company, location, salary, posted date, URL. Default: 20 jobs per company.

Pricing

from $1.25 / 1,000 jobs

Rating

0.0

(0)

Developer

Bence Kadi

Bence Kadi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

Oracle, Taleo, BambooHR & Rippling Jobs Scraper: export jobs from 9 ATS career sites

What is Oracle, Taleo, BambooHR & Rippling Jobs Scraper?

This Actor collects job postings from company career sites on nine applicant tracking systems (ATS): Oracle Recruiting Cloud (Oracle Fusion HCM), Oracle Taleo, BambooHR, Rippling, Teamtailor, Breezy HR, JazzHR, Jobvite and Gem. You type company names, websites or career-site URLs and get every open job as JSON, CSV or Excel, with title, locations, work mode, department, posting date, salary and description.

It detects each company's ATS and reads the public job feed that the ATS publishes. No browser, no login, no API key.

What makes it different

  • Auto-detects the ATS. Type Polestar, fly.io or Nutanix; all 9 platforms are checked.
  • Finds Oracle tenants for you. Oracle career sites hide behind codes like hdjq.fa.us2.oraclecloud.com. Type the company's domain (e.g. emerson.com) and the Actor follows the careers links on its website to the right career site. Backup and "FOR REFERENCE ONLY" sites are skipped.
  • No 10,000-job wall. Oracle's search stops at 10,000 results. Big boards are split by job category, so you get them all (Marriott: 12,900+ of 12,973).
  • Same schema as our other job scrapers. With our Greenhouse/Lever/Ashby and Workday Actors that is 16 ATSs in one format.
  • Salary included. Pay fields from Rippling, BambooHR and Oracle, and ranges like "$120,000 – $150,000" parsed from descriptions.
  • Only new jobs. Monitoring mode outputs, and charges for, only postings you haven't seen before.
  • GDPR-friendly. Recruiter contact fields are never read; e-mails and phone numbers are removed from descriptions.

Use cases: Generate leads (build B2B prospect lists, lead enrichment & validation) · Research markets & competitors (track competitors, build market datasets, track trends, profile companies & due diligence) · Developer tools (monitor & alert on website changes).

Use cases

  • Sales and lead generation (hiring signals): large employers on Oracle and Taleo, and growing SMBs on BambooHR, Rippling and Teamtailor.
  • Recruiting and staffing agencies: watch target accounts and react to new openings the same day.
  • Job boards and aggregators: fill your board with direct-from-employer postings.
  • Market and labour research: track headcount growth, locations and pay ranges across companies.
  • Job alerts: send a daily Slack message, e-mail or Google Sheet of new postings at your target companies.
  • AI agents and RAG apps: give an LLM fresh, structured job data through the API or the Apify MCP server.

Data fields you get

FieldDescriptionExample
titleJob titleFinance Manager
companyWhat you typedPolestar
companyNameEmployer or business unit, when publishedCommercial & Investment Bank
atsPlatform the job came fromoracle
jobIdJob ID on the ATS210795927
url / applyUrlJob page / application formhttps://jobs.jobvite.com/nutanix/job/oUQKAfwO
locationPrimary locationCologne, Germany
locationsAll locations["Cologne, Germany"]
country / countryCodeCountry and ISO code, when knownUnited States / US
workModeremote, hybrid, onsite or emptyhybrid
employmentTypeAs publishedFull time
department / teamAs publishedGlobal Sales
seniorityJob level, when publishednull
postedDate / updatedDateISO dates (UTC), when published2026-10-05T00:03:48Z
salaryMin / salaryMaxParsed pay range156750 / 215000
salaryCurrency / salaryPeriodCurrency, YEAR/MONTH/HOUR...USD / YEAR
salaryTextOriginal pay text$156,750.00-$215,000.00
description / descriptionHtmlPlain text and/or HTMLWe have an opportunity...
boardUrlJob boardhttps://polestar.teamtailor.com/jobs
isNewtrue in monitoring modetrue
scrapedAtScrape time (UTC)2026-10-05T02:12:15Z

How to use Oracle, Taleo, BambooHR & Rippling Jobs Scraper

  1. Open the Actor and enter company names, websites or career-site URLs, one per line. The prefill is Polestar (Teamtailor), Nutanix (Jobvite) and a JPMorgan Chase Oracle career site, 20 jobs each. It finishes in about 10 seconds and costs about $0.08.
  2. Optional: set job title keywords, locations, remote jobs only or posted within N days. Set Max jobs per company to 0 to get every job.
  3. Click Start.
  4. Open the Output tab and download JSON, CSV, Excel or HTML, or connect Google Sheets, Zapier, Make or n8n.
  5. To get only new jobs every day, turn on Only new jobs and create a Schedule (see Integrations and scheduling).

Input guide

Company names, websites or career-site URLs (companies)

One per line. For a name, the Actor tries the company's likely board address on each selected platform. RUN_SUMMARY lists the ATS and board found for each company, so you can check the match.

  • Good: Polestar, fly.io, emerson.com, or a career-site URL such as https://jpmc.fa.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1001. A single job link works too; the whole board is scraped.
  • Bad: Polestar jobs in Sweden (put places in Locations and words in Job title keywords).
  • Tip: Oracle and Taleo tenant codes can't be guessed from a name. Use the company's domain, or paste the career-site URL.
  • Warning: some companies load their careers links with JavaScript (e.g. Marriott, International Paper), so the name doesn't work. Click a job on their careers page and paste that URL.
  • Warning: Greenhouse, Lever, Ashby, Workable, Recruitee, Personio and Workday boards are not scraped here. RUN_SUMMARY names the right sister scraper when it sees one.

URLs it understands:

ATSURL pattern
Oracle Recruiting Cloudhttps://{tenant}.fa.{region}.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1
Taleohttps://{company}.taleo.net/careersection/2/jobsearch.ftl
Teamtailorhttps://{company}.teamtailor.com (or a Teamtailor custom domain)
BambooHRhttps://{company}.bamboohr.com/careers
Breezy HRhttps://{company}.breezy.hr
Ripplinghttps://ats.rippling.com/{board}/jobs
JazzHRhttps://{company}.applytojob.com/apply
Jobvitehttps://jobs.jobvite.com/{company}/jobs
Gemhttps://jobs.gem.com/{company}

Platforms to check (platforms)

Which ATSs to try for a name. All 9 by default; fewer is faster. URLs are always detected.

Find the job board via the company website (scanCompanyWebsite)

On by default. If a name finds no board, the Actor opens the domain you typed (or name.com), follows up to 3 careers links on that site and collects the ATS links there. This finds Oracle tenants such as hdjq.fa.us2.oraclecloud.com for emerson.com. It doesn't work on careers pages built with JavaScript.

Job title keywords (titleKeywords)

Comma-separated. A job is kept if its title contains ANY of the words (case-insensitive). The filter runs before job pages are opened, so it also makes runs faster.

  • Good: engineer, data, nurse
  • Warning: intern also matches "International". Use internship when that matters.

Locations (locations)

A job is kept if its locations, country or country code contain ANY of these as a whole word or phrase (case-insensitive), so US matches "Remote - US" but not "Austin" or "Australia".

  • Good: United States, US, Germany, Stockholm, Remote
  • Bad: San Fran. Partial words don't match; write the full name, San Francisco.
  • Warning: Taleo and Jobvite jobs have no country field, only the location text (e.g. San Jose, California). A country filter can drop them; use a city or state.

Remote jobs only (remoteOnly)

Keeps only jobs with workMode = remote. Jobs with unknown work mode are dropped.

Posted within (days) (postedWithinDays)

Only jobs posted in the last N days, e.g. 7. JazzHR and Jobvite don't publish a date, so their jobs are always kept.

Max jobs per company (maxJobsPerCompany)

A limit per company, not per run. 0 means no limit. The Console prefill is 20; the default via API, MCP or an AI agent is 20; set 0 for all jobs.

Jobs removed by any filter are not saved, don't count toward the limit and are not charged.

Only new jobs (onlyNewJobs) and Monitor name (monitorName)

See Monitoring mode below.

Output options

  • descriptionFormat: text (default), html, both or none. none is fastest: it skips the per-job pages on Oracle, Taleo, BambooHR, Breezy, Rippling, JazzHR and Jobvite, so some fields (salary, and the posting date on BambooHR and Rippling) may be empty.
  • stripContactInfo (default on): removes e-mails and phone numbers from descriptions. Keep it on to avoid storing personal data.

Advanced

  • proxyConfiguration: off by default. These are public career sites; enable a proxy only if you see blocking errors in the log.

Example input:

{
"companies": ["Polestar", "fly.io", "emerson.com", "https://valero.taleo.net/careersection/2/jobsearch.ftl", "Rippling"],
"titleKeywords": "engineer, nurse, sales",
"locations": ["United States", "Remote"],
"postedWithinDays": 30,
"maxJobsPerCompany": 0,
"onlyNewJobs": false
}

Output

Each job is one item in the run's dataset. Here is one real item from the prefill run on 2026-10-05 (description shortened). Jobs from the other eight platforms have exactly the same fields.

{
"title": "Lead Software Engineer and ML Engineer - Sales Copilot",
"company": "https://jpmc.fa.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1001",
"companyName": "Commercial & Investment Bank",
"ats": "oracle",
"jobId": "210795927",
"url": "https://jpmc.fa.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1001/job/210795927",
"applyUrl": "https://jpmc.fa.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1001/job/210795927/apply",
"location": "Jersey City, NJ, United States",
"locations": ["Jersey City, NJ, United States"],
"country": "United States",
"countryCode": "US",
"workMode": null,
"employmentType": "Full time",
"department": "Technology",
"team": "Software Engineering",
"seniority": null,
"postedDate": "2026-10-05T00:03:48Z",
"updatedDate": null,
"salaryMin": 156750,
"salaryMax": 215000,
"salaryCurrency": "USD",
"salaryPeriod": "YEAR",
"salaryText": "$156,750.00-$215,000.00",
"description": "We have an opportunity to impact your career and provide an adventure where you can push the limits of what's possible.\nAs a Lead Software Engineer at JPMorganChase…",
"descriptionHtml": null,
"boardUrl": "https://jpmc.fa.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1001/requisitions",
"scrapedAt": "2026-10-05T02:12:15Z"
}

Notes:

  • Field coverage depends on the ATS. In a 29-company test run, title, URL and description were filled for all jobs; salary for 100% of Gem jobs, 57% on Rippling, 26% on Taleo, 23% on Oracle, 21% on BambooHR and 12% on Jobvite.
  • Taleo's location is whatever the employer configured, sometimes an organisation name.
  • Empty values are null, so every item has the same columns in CSV and Excel.

Dataset views

The Output tab has two views of the same data:

ViewWhat it shows
JobsA compact table: title, company, ATS, location, work mode, posted date, salary range and link. Best for a quick look.
Full detailsAdds company name, department, team, employment type, all locations, country code, salary text, description and apply link.

Every export contains all fields, whichever view you look at. The run also writes a RUN_SUMMARY record to the key-value store: per company, the ATS and board found, jobs listed and saved, Oracle career sites, and companies not found (with a hint if they use Greenhouse, Lever, Workday & co.).

How to export the data

  • In the Console: Output tab > Export > JSON, CSV, Excel, HTML, XML or RSS. You can pick fields and the view.
  • Google Sheets: add the Google Sheets integration to the Actor or a schedule (Integrations tab), or use =IMPORTDATA("https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=csv&token=<TOKEN>").
  • API: https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=json (also csv, xlsx, xml). Add &view=overview for the compact table.

Pricing

This Actor uses pay per event. You pay $1.25 per 1,000 jobs ($0.00125 per job saved to the dataset), plus Apify's standard Actor start fee of $0.00005 per run. Platform compute is included in the price.

Example runJobs savedCost
Prefill test (3 companies, 20 jobs each)60about $0.08
20 companies, 50 jobs each1,000about $1.25
Emerson on Oracle, all open jobs1,055about $1.32
Daily monitoring, ~50 new jobs per day for 30 days1,500about $1.88 per month

What you don't pay for:

  • jobs removed by your filters (title, location, remote, posted date),
  • jobs already seen in monitoring mode,
  • companies where no job board was found,
  • malformed postings that couldn't be parsed (skipped),
  • the RUN_SUMMARY record.

To cap spending, set Max charge per run in the run options; the Actor stops cleanly at that limit and keeps what it saved. Apify's free plan includes monthly platform credit you can use for this Actor.

Use it via API

Get your API token in the Apify Console under Settings > API & Integrations. The examples below run the Actor, wait for it to finish and read the jobs.

JavaScript / Node.js (npm install apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('kadi_bence/ats-plus-jobs-scraper').call({
companies: ['Polestar', 'emerson.com', 'Rippling'],
titleKeywords: 'engineer, sales',
locations: ['United States', 'Remote'],
maxJobsPerCompany: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`${items.length} jobs`, items[0]);

Python (pip install apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("kadi_bence/ats-plus-jobs-scraper").call(run_input={
"companies": ["Polestar", "emerson.com", "Rippling"],
"titleKeywords": "engineer, sales",
"locations": ["United States", "Remote"],
"maxJobsPerCompany": 100,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["ats"], job["title"], job["location"], job["salaryMin"], job["url"])

cURL (runs the Actor and returns the jobs in one request; best for runs under 5 minutes)

curl -X POST "https://api.apify.com/v2/acts/kadi_bence~ats-plus-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["Polestar", "Nutanix"], "maxJobsPerCompany": 20}'

Apify CLI

$apify call kadi_bence/ats-plus-jobs-scraper --input '{"companies": ["Polestar", "Nutanix"], "maxJobsPerCompany": 20}' --output-dataset

MCP server for AI agents (Claude, Cursor, VS Code and other MCP clients)

Add the Apify MCP server with this Actor as a tool. Your client will ask you to sign in to Apify (OAuth), or you can send your token as an Authorization: Bearer YOUR_APIFY_TOKEN header.

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?actors=kadi_bence/ats-plus-jobs-scraper"
}
}
}

Then ask your agent, for example: "Find all open sales jobs at Polestar and Rippling, and tell me which ones list a salary range."

Integrations and scheduling

  • Schedules: Schedules > Create new, pick this Actor (or a saved task) and a time, e.g. daily at 07:00. Each run gets its own dataset.
  • Webhooks: on the Integrations tab, add a "Run succeeded" webhook to send the run and dataset ID to your server.
  • Zapier, Make and n8n: trigger "Actor run finished", then "Get dataset items", then send jobs to Slack, e-mail, a CRM or Airtable.
  • Google Sheets: the Google Sheets integration appends each run's jobs to a sheet; the easiest job-alert setup.
  • Slack and e-mail: Apify's built-in integrations can notify you when a run finishes.

Monitoring mode (only new jobs)

Turn on Only new jobs (onlyNewJobs: true) and schedule the Actor:

  1. The first run outputs all matching jobs and saves their IDs as a baseline.
  2. Every later run outputs only jobs that weren't returned before.
  3. You pay only for those new jobs.

In monitoring mode every output item has isNew: true. The "already seen" list is kept in a named key-value store (ats-plus-jobs-monitor) in your own Apify account, one list per monitor name and job board. Only saved jobs are added, so a job your filters dropped can appear later if you change the filters. Give two schedules on the same companies (e.g. engineers and sales) different Monitor names. To start over, use a new monitor name.

Other job scrapers by the same developer

All of them use the same output fields where possible, so you can merge datasets.

Related company data for B2B leads: SEC Form D Scraper (startup funding rounds), New Business Filings USA (newly registered companies) and Website Tech Stack Detector (technologies a company uses).

FAQ

How does it work? Is there an official API? There is no single official jobs API for these ATSs. Each vendor publishes its own public job feed for career sites (Oracle REST endpoints, Teamtailor RSS, BambooHR, Breezy, Rippling and Gem JSON, Taleo, JazzHR and Jobvite job pages), and each needs the company's board name or tenant code. The Actor finds the board, reads the feed, opens each job for the description where needed, and returns one schema. No browser is used.

Which platforms are supported? Why not SmartRecruiters or iCIMS? The nine listed above, incl. Teamtailor custom domains and Taleo Enterprise career sections. We only read sources that allow it: SmartRecruiters' and Pinpoint's robots.txt block automated access, SuccessFactors' career hosts disallow crawling, and iCIMS shows a bot challenge. We don't work around those.

How many jobs can I get? Is there a limit? All published jobs. With maxJobsPerCompany: 0 you get every job, including Oracle boards above 10,000 jobs.

How fast is it? The prefill takes about 10 seconds. A full run of 1,460 jobs (Emerson on Oracle, Rippling, Nutanix on Jobvite) took 77 seconds. Most platforms need one request per job for the description; descriptionFormat: none gives a faster list-only run.

A company wasn't found, or the wrong one was. Why? Oracle and Taleo tenant codes can't be guessed from a name, and some websites load their careers links with JavaScript: paste a job URL instead. Name detection uses the board's public name (e.g. polestar.teamtailor.com); for generic names, check companyName and boardUrl.

Why do I get fewer jobs than the career site shows? Usually because of a filter or maxJobsPerCompany. RUN_SUMMARY shows how many jobs each board lists and how many were saved. remoteOnly drops jobs with unknown work mode, and a country in Locations can drop Taleo and Jobvite jobs.

Why are some salaries or dates empty? Many postings don't publish pay. Salary comes from the ATS's pay fields or a clear range in the description. JazzHR and Jobvite don't publish a posting date.

Do I need proxies? No. These are public endpoints and requests are polite and low-volume.

Is it legal to scrape these career sites? The Actor reads only the public career sites and job feeds that ATS vendors publish for candidates. It checks robots.txt (and honours crawl-delay), doesn't log in, never reads recruiter-contact fields, and removes e-mails and phone numbers from descriptions by default, so it doesn't collect personal data (GDPR). You are responsible for how you use the data, including the site's terms and data-protection law in your country.

Can I use it from Python or another app? Yes. Use the Apify API, the JavaScript or Python client, the CLI, or the MCP server, as shown in Use it via API.

How do I get only new jobs every day? Turn on Only new jobs and create a schedule. See Monitoring mode.

The run failed or a field is missing. What should I do? Open an issue on the Issues tab with the run link or your input. Fixes usually land within 24–48 hours. See the changelog below for recent changes.

Need a custom version?

I build custom scrapers, scheduled data feeds and integrations (CSV, Excel, Google Sheets, API, MCP for AI agents). Tell me the sites and fields you need:

More low-cost Actors by the same developer, built on official APIs and public data:

All my Actors: apify.com/kadi_bence

Changelog

  • 2026-10-05, 1.0: first public release: 9 ATS platforms with auto-detection, company-website scan for Oracle/Taleo/Teamtailor custom domains, Oracle 10,000+ job boards, unified schema with salary, title/location/remote/date filters, monitoring mode.