Breezy HR Jobs Scraper
Pricing
from $1.50 / 1,000 results
Breezy HR Jobs Scraper
Scrape every open job posting from any Breezy HR-powered company career board via Breezy's own public JSON feed, no login or browser required. Get job titles, locations, salaries, and publish dates instantly for recruiter pipelines or as a hiring-intent signal for BD teams.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
🎯 What this scrapes
Any employer running its careers page on Breezy HR serves the entire board from one endpoint: https://{company}.breezy.hr/json. This Actor hits it directly — hand it one or more company subdomains (the {company} in https://{company}.breezy.hr, e.g. rhynocare) and it pulls every currently-open posting for that employer in a single response, no pagination to chase, and normalizes it into one row schema. We've verified it end to end against real boards ranging from a 3-posting equipment dealer to a 600+ posting healthcare network, so the same code path holds whether a company has three reqs open or three hundred.
🔥 Features
- 🔑 Keyless public feed — no OAuth, no token, no per-company setup; the same JSON endpoint the careers page itself renders from.
- 🏢 Multi-company in one run — pass many subdomains; rows come back identically shaped, tagged with
company_slug/company_name. - 🧭 Slug or full URL, either works — paste a bare subdomain or the full
https://{company}.breezy.hrlink and we extract the right identifier. - 🚫 Reliable bad-slug detection — Breezy signals an invalid or unused subdomain with a redirect to its marketing site rather than a clean error; we catch that signal precisely and skip the company instead of choking on it or the run silently producing nothing.
- 🔁 Retries with backoff + fingerprint rotation —
curl-cffipresents a real browser handshake (rotated across Chrome / Firefox / Safari profiles) and retries transient429/5xxresponses with exponential backoff up to 5 attempts, so a large multi-company batch finishes instead of dying on the first hiccup. - 🌐 Proxy-routed through Apify Proxy — every request runs through a rotating session, with a fresh exit IP requested the moment anything looks off — the same infrastructure we lean on harder the day a target tightens up.
- 🧱 Rate-limit pacing built in — we back off rather than hammer a board, and partial success is always reported honestly via the run's status message instead of a silent, half-empty dataset.
- 🧊 Clean, typed rows — Pydantic-validated, ISO-8601 timestamps, stable posting IDs. Export JSON / CSV / Excel straight from the Apify Console.
- 💰 Pay only for postings that land — a company with an invalid slug or zero open reqs never gets billed for rows it didn't produce.
💡 Use cases
- Recruiting & talent intelligence — track what a Breezy-hosted employer is hiring for, where, and at what pay band.
- Job-board aggregation — add Breezy coverage alongside SmartRecruiters / Workday / Workable / Teamtailor in one pipeline.
- Labor-market research — sample hiring demand across an industry or region by role and location.
- Hiring-intent signals for BD/SDR teams — a sudden spike in open reqs at a target account is a lead qualifier.
- HR-tech data pipelines — wire structured job rows into your CRM, dashboard, or n8n / Make workflow on a schedule.
⚙️ How to use it
- Click Try for free at the top of the Store listing.
- Add one or more Company slugs — the
{company}from ahttps://{company}.breezy.hrcareers URL (e.g.rhynocare), or paste the full URL. - Optionally adjust Max results per company (default 200) if a board has more open reqs than you need.
- Click Start. Each company's full board comes back in one fetch and rows stream into the dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or pull via the Apify API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
companySlugs | array | ✅ | — | Breezy HR company subdomains (the {company} in https://{company}.breezy.hr, e.g. rhynocare), or full https://{company}.breezy.hr URLs — either form works. |
maxResultsPerCompany | integer | no | 200 | Cap on rows emitted per company, applied client-side after the full board is fetched (no server-side limit param exists on this vendor). |
proxyConfiguration | object | no | {"useApifyProxy": true} | Apify Proxy configuration. |
Example input
{"companySlugs": ["rhynocare", "barloworldequipment"],"maxResultsPerCompany": 200,"proxyConfiguration": { "useApifyProxy": true }}
📤 Output
One dataset item per open job posting.
| Field | Type | Notes |
|---|---|---|
posting_id | string | Stable Breezy posting ID. |
company_slug | string | Normalized subdomain you supplied — kept stable across repeat runs. |
company_name | string | Employer display name. |
title | string | Job title. |
apply_url | string | The real, working posting page — used verbatim, never reconstructed. |
published_date | string | ISO-8601 date the posting went live. |
job_type | string | Human-readable employment type, e.g. "Full-Time". |
department | string | null | Department label; null when the employer didn't set one. |
salary | string | null | Freeform pay text as published (e.g. "$25 – $27 / hour"); null when undisclosed. Never parsed into numeric fields. |
location_city | string | null | Posting city. |
location_state | string | null | State/region abbreviation (e.g. "ON"); null when not applicable. |
location_country | string | null | ISO 3166-1 alpha-2 country code. |
is_remote | boolean | Whether the posting is flagged remote; defaults false when the source doesn't say. |
scraped_at | string | UTC ISO-8601 fetch timestamp. |
Example output
{"posting_id": "5a3b663b95ce","company_slug": "rhynocare","company_name": "RhynoCare","title": "Cook","apply_url": "https://rhynocare.breezy.hr/p/5a3b663b95ce-cook","published_date": "2026-07-25T00:00:00.673Z","job_type": "Full-Time","department": null,"salary": "$25 – $27 / hour","location_city": "St. Catharines","location_state": "ON","location_country": "CA","is_remote": false,"scraped_at": "2026-07-26T15:00:00Z"}
💰 Pricing
Pay-Per-Event — you're charged only when these fire:
| Event | USD | What it covers |
|---|---|---|
actor-start | $0.005 | One-off warm-up per run |
result | $0.0015 | Per job posting written to the dataset |
Example: 1 000 postings ≈ $1.51. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
- Public postings only — the openly published careers board, not authenticated internal/employee views.
- No full description text — Breezy's list endpoint doesn't publish the job-description body; only the posting
apply_urllinks to the full text on the HTML page, which this Actor never fetches. - Company slugs, not company names — you supply the Breezy subdomain from the careers URL; a display name like "RhynoCare" may not match its actual slug.
- Point-in-time snapshot — returns the board as it stands right now; schedule recurring runs to track changes.
- No anti-bot wall observed on this vendor today — Breezy's feed hasn't shown rate-limiting or blocking in our testing, but the retry, backoff, and fingerprint-rotation stack ships anyway and takes over the moment that changes, so a future tightening doesn't turn into a broken run.
❓ FAQ
Do I need a Breezy HR account or API key?
No — every field comes from Breezy's own public JSON feed, the same one the careers page itself renders from.
How do I find a company's slug?
It's in the careers URL: https://{slug}.breezy.hr. Paste that {slug} (e.g. rhynocare), or just paste the full URL — we extract it either way.
Can one run cover several employers?
Yes — put multiple slugs in companySlugs and every row comes back identically shaped, tagged with company_slug / company_name.
What happens if I typo a slug or it doesn't exist?
Breezy redirects unknown subdomains to its marketing site instead of returning a clean error. We detect that redirect, skip the company, and report it plainly in the run's status message — the rest of your batch still completes.
Is this legal?
We fetch public, unauthenticated job-posting data that employers publish for candidates. No login, no private endpoints.
💬 Your feedback
Spotted a bug, hit a company that behaves differently, or need an extra field? Open an issue on the Actor's Issues tab in Apify Console — we ship fixes weekly and read every report.
🔗 Related Devil Scrapes Actors
Hiring intel across the whole ATS landscape? These siblings cover the other major job-board platforms — same keyless, pay-per-result approach:
- SmartRecruiters Jobs Scraper — postings from any SmartRecruiters-hosted employer
- Teamtailor Jobs Scraper — postings from any Teamtailor-powered career site
- Workday Jobs Scraper — postings from any Workday-powered career site
- Workable Jobs Scraper — postings from any Workable-hosted employer board
- BambooHR Jobs Scraper — postings from any BambooHR-hosted careers page
- Recruitee Jobs Scraper — postings from any Recruitee-powered career site
- Multi-ATS Jobs Scraper — one normalized feed across Greenhouse, Lever & Ashby
Browse the full fleet at apify.com/DevilScrapes.