BambooHR Jobs Scraper · Any Company
Pricing
from $0.96 / 1,000 job postings
BambooHR Jobs Scraper · Any Company
Extract job postings from any company's public BambooHR careers board: title, department, location, employment status, posting date and full description, by company subdomain.
Pricing
from $0.96 / 1,000 job postings
Rating
0.0
(0)
Developer
Vivien MORVAN
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract job postings from any company's public BambooHR careers board: title, department, location, employment status, posting date, compensation when published, and full description. No login, no API key.
At a glance
| What you get | Job postings from any company's BambooHR careers page: company, title, department, location, employment status, compensation, date, description. |
| Price | $1.20 per 1,000 postings: a 50-posting test run costs about $0.07, start fee included. |
| Speed | 50 postings in about 25 seconds. No login, no proxy, no browser to configure. |
| Try it | Click Try for free, fill the short form and run: the first 50 postings arrive in under a minute. |
| Keep it fresh | Schedule it daily and keep only the new postings: see "Monitor new postings daily" below. |
What you can do with it
- Monitor any employer on BambooHR. Point it at a company subdomain (for example
avidbotsfromavidbots.bamboohr.com/careers) and get every open posting. - Track several companies at once. Pass a list of subdomains and get one combined, deduplicated dataset.
- Filter to a role or team. Use
keywordsto keep only postings whose title matches, for exampleengineer. - Feed a job board or alert. BambooHR ships no public export for third parties; this Actor reads the same postings the company's own careers widget shows.
Input
| Field | What it does |
|---|---|
companies | BambooHR company subdomains, taken from a company's careers page URL, for example avidbots from avidbots.bamboohr.com/careers. Leave empty to run a default set of companies. |
keywords | Keeps only postings whose title contains this text (case-insensitive). Empty means every posting. |
maxItems | The run stops once this many postings are saved, across all companies combined (default 100). |
includeDescriptions | Fetch each posting's own page for the full description, posting date and compensation when published (default on; one extra request per posting). |
Example input:
{"companies": ["avidbots", "basdensteel"],"keywords": "engineer","maxItems": 100,"includeDescriptions": true}
Output
One record per posting:
{"id": "avidbots:304","company": "avidbots","title": "Technical Support Specialist","department": "Technical Support","location": "Cali, Colombia","employmentStatus": "Full-Time","datePosted": "2021-08-26","compensation": "3841300","url": "https://avidbots.bamboohr.com/careers/304","description": "We are an Avidbots Corp branch located in Colombia, dedicated to offer customer care support..."}
Export the dataset as JSON, CSV or Excel, or read it through the Apify API.
Why this one
- Works on any BambooHR company, not just one. Give it any subdomain and it adapts.
- No browser, no login, no API key. BambooHR's own careers widget endpoint is read directly, so runs are fast and cheap.
- A missing or wrong subdomain never breaks the run. BambooHR answers a company with no careers site with its own marketing page, not a 404; this Actor checks the payload shape, skips it with a clear warning, and keeps going with the rest of the list.
Good to know
compensation, when present, is the raw value BambooHR's own board publishes for that posting; its format (currency, period) is set by the employer and is not standardized across companies.locationprefers the display location the widget renders; when that is empty it falls back to the structured ATS location, then to"Remote"when the posting is flagged remote with no place at all.- Each company's own
robots.txtis checked before every run; a company whose rules disallow the careers board is skipped with a warning rather than failing the whole run. - Lines that carry a recruiting mailbox are removed from descriptions; no individual recruiter's name or direct contact is ever collected.
- A posting that disappears between the list and the detail fetch keeps its listing-level data instead of being dropped.
- This is an unofficial tool, not affiliated with BambooHR, LLC or any employer listed. Check the site terms that apply to your use.
FAQ
Does it work for any company, or only the ones in the default list?
Any company whose careers board is hosted on BambooHR. Use its subdomain (the part before .bamboohr.com) in companies.
How do I find a company's subdomain?
Open the company's own "Careers" page; if it redirects to a *.bamboohr.com/careers address, the part before .bamboohr.com is the subdomain companies expects.
Does it need a browser or a proxy? No. BambooHR's own careers widget endpoint answers plain JSON requests, so runs are fast and cheap.
Try it
Open bamboohr-jobs-scraper on the Apify Store
Why this one
- Works on any BambooHR company, not just one. Give it any subdomain and it adapts.
- No browser, no login, no API key. BambooHR's own careers widget endpoint is read directly, so runs are fast and cheap.
- A missing or wrong subdomain never breaks the run. BambooHR answers a company with no careers site with its own marketing page, not a 404; this Actor checks the payload shape, skips it with a clear warning, and keeps going with the rest of the list.
Who uses it
- Recruiting agencies and HR teams watch which companies hire, for which roles and at which salary, in their market.
- Job boards and aggregators feed their own site with fresh postings in a stable schema, without maintaining a parser.
- B2B sales and lead generation: a company that is hiring is a company that is buying. Filter postings by role to spot prospects early.
- Labour-market research: salaries, skills in demand, remote share and hiring volume over time.
Pricing
Pay per result: $1.20 per 1,000 postings, plus $0.01 per run start with the default 4 GB of memory. For example, 100 postings cost about $0.13. You only pay for the postings you receive, and platform usage is included in that price. Store discounts apply automatically on paid Apify plans: up to 20% off every event on the higher tiers.
Run it from your code
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('bibian/bamboohr-jobs-scraper').call({maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python:
from apify_client import ApifyClientclient = ApifyClient(token="<APIFY_TOKEN>")run = client.actor("bibian/bamboohr-jobs-scraper").call(run_input={"maxItems": 50})items = client.dataset(run["defaultDatasetId"]).list_items().items
Monitor new postings daily and connect your tools
- Schedule it. Save a task, set its publication date filter to the shortest window, and schedule it daily with Apify Schedules. Deduplicate on the
idfield if you keep your own copy. Tick Only new results in the input and each run returns, and charges, only the postings that earlier runs of the same search did not deliver. - Push the results where you work. Add an Apify integration or a webhook to the task: Google Sheets, Slack, Make, Zapier, n8n or your own endpoint, triggered at the end of every run.
- Call it from your stack. The API and the JavaScript and Python clients return the dataset as JSON, CSV or Excel.
- Let an AI agent use it. Through the Apify MCP server, assistants such as Claude or ChatGPT can search the Store, read this page and run the actor as a tool.
Frequently asked questions
Do I need an account, cookies or a proxy for BambooHR? No. The actor reads publicly visible pages only.
Which formats can I export? JSON, CSV, Excel, XML, HTML table or RSS, from the dataset page or through the API.
Is it legal to scrape? The actor collects publicly visible postings and respects the robots.txt rules of the site. How you use the data is your responsibility: check the site's terms and the laws that apply to you, for example the GDPR.
Something does not work? Open an issue in the Issues tab. Every public actor is test-run daily and the broken ones are repaired.
Did this save you time? A short review on the Store page helps other people find the actor, and tells me what to improve next.