Breezy HR Jobs & Careers Scraper
Pricing
from $6.15 / 1,000 results
Breezy HR Jobs & Careers Scraper
Scrape open jobs from any company career board on Breezy HR. Extract job title, department, location, employment type, salary, posting date, apply URL and full description. Add multiple companies in one run. Export JSON, CSV or Excel. No login or API key.
Pricing
from $6.15 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 days ago
Last modified
Categories
Share
Breezy HR Jobs & Careers Scraper
Here is one real result, with every field the actor returns (the descriptionHtml and descriptionText are trimmed for length; every value shown is real):
{"title": "Business Development Manager, Indonesia, Duolingo (Contract)","company": "Duolingo","companyHandle": "duolingo","companyLogo": null,"department": "Business Development","location": "Jakarta, ID","city": "Jakarta","state": null,"country": "Indonesia","countryCode": "ID","streetAddress": null,"isRemote": false,"remoteLabel": null,"locations": [{ "location": "Jakarta, ID", "city": "Jakarta", "state": null, "country": "Indonesia", "countryCode": "ID", "streetAddress": null, "isRemote": false, "remoteLabel": null }],"employmentType": "Contract","employmentTypeId": "contract","salary": null,"salaryMin": null,"salaryMax": null,"salaryCurrency": null,"salaryPeriod": null,"educationRequirements": null,"experienceRequirements": null,"publishedDate": "2026-08-05T17:04:53.845Z","url": "https://duolingo.breezy.hr/p/8455faa88f35-business-development-manager-indonesia-duolingo-contract","applyUrl": "https://duolingo.breezy.hr/p/8455faa88f35-business-development-manager-indonesia-duolingo-contract/apply","positionId": "8455faa88f35","friendlyId": "8455faa88f35-business-development-manager-indonesia-duolingo-contract","descriptionHtml": "<p>Our mission at Duolingo is to develop the best education in the world and make it universally available...</p>","descriptionText": "Our mission at Duolingo is to develop the best education in the world and make it universally available. It's a big mission, and that's where you come in! ...","observedAt": "2026-08-10T14:17:35.687Z","error": null}
The most complete Breezy HR jobs scraper available. It returns every field a Breezy HR careers board exposes for an open role (title, department, structured location, employment type, salary when published, posting date, apply URL and the full HTML and plain-text description), lets you scrape many company boards in one run, and gives you client-side filters plus optional AI add-ons to target exactly the jobs you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor takes one or more Breezy HR company career board handles, reads each board's public job feed, optionally fetches each position page for the full description and salary, applies your filters, and writes one normalized record per job to the run's dataset. You can paste a bare handle (duolingo), a full board URL, or a specific job URL; the scraper normalizes it to the handle.
Each record carries the listing fields (title, company, department, structured location with city/state/country, employment type, apply URL and posting date) and, when withDetails is on, the full HTML and plain-text description plus salary range, education and experience requirements when the employer publishes them. Client-side filters (keyword, remote only, employment type, department, location, posted-after date, salary bounds) run on top. Optional paid AI add-ons (job summary, skills and seniority, salary estimate) and a contact enrichment add-on are off by default and billed per job only when they return usable output.
Quickstart
Open the actor, paste this into the input, and press Run. It scrapes up to 10 jobs across four Breezy HR boards with full details.
{"companies": ["duolingo", "new-incentives", "irestorelaser", "ourassistants"],"maxJobs": 10,"withDetails": true}
companies is the only required field. Leave searchQuery and the other filters empty to return every open job on each board.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
companies | string[] | yes | (none) | Breezy HR boards to scrape. Use the company handle (duolingo), the full board URL, or a specific job URL; each is normalized to the handle. One entry per company. |
maxJobs | integer | no | 10 | Maximum jobs to collect across all companies (1 to 1000000). Free Apify plans are capped at 10. |
withDetails | boolean | no | true | When on, each job includes the full HTML and plain-text description plus salary, education and experience requirements. When off, only listing fields are collected (faster). |
searchQuery | string | no | (empty) | Keep only jobs matching this keyword against title, department, location and description (case-insensitive). |
remoteOnly | boolean | no | false | When on, keep only jobs flagged as remote. |
employmentType | string | no | (empty) | Keep only jobs whose employment type contains this text (full, part, contract, intern). |
department | string | no | (empty) | Keep only jobs whose department contains this text. |
location | string | no | (empty) | Keep only jobs whose location, city, state or country contains this text. |
postedAfter | string | no | (empty) | Keep only jobs published on or after this ISO date (2026-01-31). |
minSalary | integer | no | (empty) | Keep only jobs whose published salary maximum is at least this amount. Jobs without a salary are kept. |
maxSalary | integer | no | (empty) | Keep only jobs whose published salary minimum is at most this amount. Jobs without a salary are kept. |
withJdSummary | boolean | no | false | Paid add-on. Adds a 2-3 sentence AI summary of each description. Billed per job only when a summary is produced. |
withSkills | boolean | no | false | Paid add-on. Extracts required skills, technologies and a seniority level from each description. Billed per job only when tags are produced. |
withSalaryEstimate | boolean | no | false | Paid add-on. Estimates a market salary range for jobs with no published salary. Billed per job only when an estimate is produced. |
enrichContacts | boolean | no | false | Paid add-on. For results without an email, attempt to find a public business contact email and name. Billed per attempt, plus an extra charge only when an email is found. |
enrichContactsMax | integer | no | 50 | Cap how many results the contact add-on tries to enrich. Free Apify accounts are capped at 3. |
Filters combine with logical AND and run client-side after each board is fetched. AI and contact add-ons require a paid Apify plan and are disabled for free accounts.
Output reference
One dataset item per job. Types: string, integer, number, boolean, object[], or null when the value is absent.
| Field | Type | Description |
|---|---|---|
title | string | Job title. |
company | string | Company display name. |
companyHandle | string | Breezy HR board handle. |
companyLogo | string | Company logo URL, or null. |
department | string | Department, or null. |
location | string | Full location label as shown on the board. |
city | string | City, or null. |
state | string | State/region, or null. |
country | string | Country name, or null. |
countryCode | string | Two-letter country code, or null. |
streetAddress | string | Street address, or null. |
isRemote | boolean | true when the role is flagged remote, else false or null. |
remoteLabel | string | Remote details label, or null. |
locations | object[] | All locations for the role, each with the same location fields as above. |
employmentType | string | Employment type label (Full-Time, Contract, ...). |
employmentTypeId | string | Employment type id (full_time, contract, ...). |
salary | string | Salary as a single label when published, or null. |
salaryMin | number | Minimum salary when published, or null. |
salaryMax | number | Maximum salary when published, or null. |
salaryCurrency | string | Salary currency code, or null. |
salaryPeriod | string | Salary period (YEAR, HOUR, ...), or null. |
educationRequirements | string | Education requirement when published, or null. |
experienceRequirements | string | Experience requirement when published, or null. |
publishedDate | string | ISO 8601 posting timestamp. |
url | string | Public job posting URL. |
applyUrl | string | Direct apply URL. |
positionId | string | Breezy position id. |
friendlyId | string | Human-readable position slug. |
descriptionHtml | string | Full job description as HTML (only with withDetails). |
descriptionText | string | Full job description as plain text (only with withDetails). |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. Boards with no public feed emit a single item with a populated error field instead. |
When AI add-ons are enabled, extra fields are added per job: aiJdSummary, aiSkills, aiTechnologies, aiSeniority, aiSalaryEstimateMin, aiSalaryEstimateMax, aiSalaryEstimateCurrency, aiSalaryEstimateBasis, aiSalaryEstimateConfidence. When the contact add-on is enabled, contact fields such as enrichedContactEmail and enrichedContactName are added.
Example output record
Real record from a live run (input {"companies": ["duolingo"], "maxJobs": 10}, description trimmed for length):
{"title": "Business Development Manager, Indonesia, Duolingo (Contract)","company": "Duolingo","companyHandle": "duolingo","department": "Business Development","location": "Jakarta, ID","city": "Jakarta","country": "Indonesia","countryCode": "ID","isRemote": false,"employmentType": "Contract","employmentTypeId": "contract","salary": null,"publishedDate": "2026-08-05T17:04:53.845Z","url": "https://duolingo.breezy.hr/p/8455faa88f35-business-development-manager-indonesia-duolingo-contract","applyUrl": "https://duolingo.breezy.hr/p/8455faa88f35-business-development-manager-indonesia-duolingo-contract/apply","positionId": "8455faa88f35","friendlyId": "8455faa88f35-business-development-manager-indonesia-duolingo-contract","descriptionText": "Our mission at Duolingo is to develop the best education in the world and make it universally available...","observedAt": "2026-08-10T14:17:35.687Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~breezy-hr-jobs-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"companies":["duolingo"],"maxJobs":25,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~breezy-hr-jobs-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"companies":["duolingo","new-incentives"],"remoteOnly":true,"maxJobs":100}'
Apify CLI:
apify call scrapers_lat/breezy-hr-jobs-scraper \--input '{"companies":["duolingo"],"searchQuery":"manager"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per job returned (
resultevent). Adetailsevent is charged when the full detail page is fetched and parsed. See the pricing tab for current prices. - No charge on failure. A board with no public feed emits a single item with a populated
errorfield and is not charged. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results, including add-on charges. - Free Apify plans are capped at 10 jobs per run. Upgrade for higher
maxJobs. - AI and contact add-ons require a paid Apify plan and are billed per job only when they return usable output.
FAQ and troubleshooting
What handle do I use?
The subdomain of the careers board. A board at duolingo.breezy.hr has the handle duolingo. You can also paste the full board URL or a specific job URL.
A company returned an error saying no public board. Why? That handle has no public Breezy HR feed (the board is private, moved, or the handle is wrong). Error rows are not charged.
Do I get the full job description?
Yes, when withDetails is on (the default). Each job includes descriptionHtml and descriptionText, plus salary and requirement fields when the employer publishes them.
Can I scrape many companies at once?
Yes. Add every handle to companies. maxJobs caps the total across all boards.
How do I get only remote or only full-time roles?
Set remoteOnly to true, or set employmentType to full. Filters combine with AND.
Is this an official Breezy HR tool? No. This actor is independent and has no affiliation with Breezy HR. It reads only publicly available job board data.
Related scrapers
- Ashby Jobs Scraper: Open jobs from Ashby-hosted career boards.
- Greenhouse Jobs Scraper: Open jobs from Greenhouse career boards.
- Lever Jobs Scraper: Open jobs from Lever career boards.
- BambooHR Jobs Scraper: Open jobs from BambooHR career boards.
- Recruitee Jobs Scraper: Open jobs from Recruitee career boards.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Breezy HR. Accesses only publicly available job board data.
