Breezy HR Jobs Scraper icon

Jobs

Breezy HR Jobs Scraper

Scrape every open job posting from any Breezy HR-powered company career board via Breezy's own public JSON feed — titles, locations, salaries, publish dates, apply URLs. One scraper, every Breezy employer, no login or browser required.

Free Apify credit covers a first run. No credit card to try.

What this Actor 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.

What we handle for you

  • 🔑 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.hr link 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 rotationcurl-cffi presents a real browser handshake (rotated across Chrome / Firefox / Safari profiles) and retries transient 429/5xx responses 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.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
companySlugs array yes Breezy HR company subdomain, e.g. "rhynocare" (the employer identifier in https://{company}.breezy.hr/), or a full https://{company}.breezy.hr URL — the slug is regex-extracted. A plain string with no "breezy.hr"…
maxResultsPerCompany integer no Cap postings emitted per company, applied client-side after fetching (no server-side limit/offset param exists on this vendor).
{
  "companySlugs": [
    "rhynocare",
    "barloworldequipment"
  ],
  "maxResultsPerCompany": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

posting_idcompany_slugcompany_nametitleapply_urlpublished_datejob_typedepartmentsalarylocation_citylocation_statelocation_countryis_remote

{
  "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 \u2013 $27 / hour",
  "location_city": "St. Catharines",
  "location_state": "ON",
  "location_country": "CA",
  "is_remote": false,
  "scraped_at": "2026-07-26T15:00:00Z"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result emitted$0.0015Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

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_url links 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.

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.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run