Breezy HR Jobs Monitor & Scraper avatar

Breezy HR Jobs Monitor & Scraper

Pricing

from $1.80 / 1,000 current job saveds

Go to Apify Store
Breezy HR Jobs Monitor & Scraper

Breezy HR Jobs Monitor & Scraper

Read public Breezy HR job boards with descriptions, salary and apply links. Track new, changed and removed jobs across complete scans. Export JSON or CSV.

Pricing

from $1.80 / 1,000 current job saveds

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Categories

Share

Read public Breezy HR jobs from company career boards. Get descriptions, salary data and job links in JSON or CSV. Turn on monitoring to see new, changed and removed jobs after a full scan. Pay $0.0018 per saved current job, plus $0.06 per run.

Add a careerUrls list. The default saves up to 10 current jobs. A limit or a source error gives an explicit status in Board status. Check this status before using the data.

Breezy HR Jobs Monitor & Scraper: public input, structured results and supported export

Table of contents

What it does

The Actor reads known public Breezy boards at https://company.breezy.hr/. It gets the public job feed and reads structured job data on detail pages. If a page has no structured block, it reads the visible job description and feed metadata. You can add up to 4 board URLs in one run.

It returns current jobs with one fixed set of fields. Monitoring compares successful full scans. Custom career domains and a search across all Breezy companies are not supported. Use the company's Breezy URL.

Data

Each row has a job ID, title, company, locations, employment types, date, clean description and public job URL. Salary is included when the employer provides structured salary data. salary_text keeps the feed's original salary text.

Missing employer data stays null. A public remote marker may also appear on hybrid roles. Check workplace and the description before treating a job as fully remote.

Quick start

  1. Open Input.
  2. Add https://the-san-francisco-standard.breezy.hr/ to careerUrls.
  3. Keep maxResults: 10 and includeDescription: true.
  4. Click Start.
  5. Open Current jobs. Check job_id, title and salary.
  6. Open Board status. A full scan has status: "complete".
{"careerUrls":["https://the-san-francisco-standard.breezy.hr/"],"maxResults":10}

The board had 6 jobs when tested. Jobs may be added or closed later.

Input

careerUrls is required. Other fields are optional. Unknown fields, wrong types and values outside these limits fail before source requests. Duplicate boards are read once. A public /p/... job URL selects its whole board.

KeyTypeDefaultRange / exampleEffect and advice
careerUrlsstring arrayRequired; UI suggests Standard1–4 HTTPS Breezy rootsAdd known boards. No credentials, custom domains or nonstandard ports.
querystring""Up to 200 characters; "Python"All words must occur in title, company, full description, type or location. Leave empty for all jobs.
locationstring""Up to 200 characters; "US"Case-insensitive part of structured location. Leave empty for all places.
remoteOnlybooleanfalsetrue / falseRequire the employer's TELECOMMUTE marker. This may include hybrid work.
includeDescriptionbooleantruetrue / falseReturn plain description text. Detail pages are still read for other fields and filters.
maxResultsinteger101–50Total saved current jobs across boards. Raise it for a full monitoring scan.
monitorbooleanfalsetrue / falseCompare with the last complete scan of the same stream and settings.
monitorKeystring"default"1–64 letters, digits, _ or -Give each workflow its own name, such as "weekly-tech".

Filters work together: a job must pass every filter. query uses the full description even when includeDescription is false. No matching jobs is a valid complete empty result when every source read succeeds. Detail errors with active filters make the run partial; unknown values are not treated as confident filter results.

Input examples

Several companies

{"careerUrls":["https://plat4mation.breezy.hr/","https://the-san-francisco-standard.breezy.hr/"],"maxResults":50}

This collects current jobs from both boards. Order follows the feed, which can differ from the order shown on the career page.

Remote matching jobs

{"careerUrls":["https://the-san-francisco-standard.breezy.hr/"],"remoteOnly":true,"maxResults":50,"monitor":true,"monitorKey":"remote-news"}

A complete first run sets the baseline. Later complete runs compare the same filtered set.

Output example

This is a trimmed real row from the Quick start board. The omitted fields are described below.

{
"job_id": "48d4a6862c5d",
"title": "AI & Work Reporter, Charter",
"company": "The San Francisco Standard",
"date_posted": "2026-06-02",
"remote": true,
"workplace": "hybrid",
"salary": {"currency":"USD","unit":"YEAR","min":90000,"max":130000,"value":null},
"salary_text": "$90,000 – $130,000 / year",
"url": "https://the-san-francisco-standard.breezy.hr/p/48d4a6862c5d-ai-work-reporter-charter",
"row_status": "complete",
"change_type": "untracked"
}

Output fields

All listed top-level fields are present in every saved row. null means the source did not provide the value, description was turned off, or detail data could not be read. Arrays may be empty.

FieldType / nullExampleMeaning
job_idstring48d4a6862c5dFeed job ID. Use board + ID across companies.
titlestringAI & Work Reporter, CharterDetail title, or feed title on a partial row.
companystring / nullThe San Francisco StandardEmployer name.
company_urlstring / nullhttps://the-san-francisco-standard.breezy.hrPublic employer URL from detail, or board root.
company_logostring / nullnullPublic logo URL.
descriptionstring / nullAI & Work Reporter ...HTML converted to clean text.
employment_typesstring array["FULL_TIME"]Values from structured job data.
date_postedstring / null2026-06-02Detail posting date.
valid_throughstring / nullnullEmployer's closing date, if provided.
locationsobject array[{"city":"San Francisco",...}]Structured locations; see fields below.
applicant_locationsstring array["US"]Published applicant country requirements.
location_textstringSan Francisco, CA, USJoined city, region and country values. May be empty.
remotebooleantrueDetail has TELECOMMUTE, or HTML fallback uses the feed remote flag. Not a guarantee of fully remote work.
salaryobject / null{"currency":"USD",...}Structured salary; see fields below.
urlstringhttps://...breezy.hr/p/...Public job and application page.
sourcestringbreezyhrSource label.
career_site_urlstringhttps://...breezy.hr/Board root used for this row.
scraped_atstring2026-10-03T00:00:00ZScan start time in UTC.
departmentstring / nullnullFeed department.
salary_textstring / null$90,000 – $130,000 / yearOriginal feed salary text. No guessed numeric parsing.
feed_published_atstring / null2026-07-06T15:54:14.718ZFeed date; it can differ from detail date.
feed_remotebooleantrueFeed's remote flag.
workplacestring / nullhybridFeed's work model label value.
detail_sourcestringjsonld / public_html / unavailableSource of detail data. HTML fallback keeps missing structured dates and salary null.
row_statusstringcomplete / partialWhether detail data was read. A partial row may have missing detail fields.
change_typestringnewuntracked, new, changed or unchanged.
first_seen_atstring / null2026-10-03T00:00:00ZFirst full monitored scan that saw the job; null without monitoring.

Each locations item has six string-or-null fields: name (place name, e.g. null), street (street address, e.g. null), city (e.g. San Francisco), region (e.g. CA), postal_code (e.g. null) and country (e.g. US).

A non-null salary has currency (string/null, e.g. USD), unit (string/null, e.g. YEAR), min (number/null, e.g. 90000), max (number/null, e.g. 130000) and value (number/null, e.g. null). Values keep the published currency and period.

Other output surfaces

SurfaceShapeWhat to check
DatasetOne row per unique matching current jobExport or read jobs. Removed jobs are not Dataset rows.
KVS OUTPUTObject: status, rows, boards, changes, error, sourceCommit, schema_versionCheck completeness before updating your job board.
KVS RUN_SUMMARYOUTPUT plus requests, retries, durationMs, startedAtCheck work and timing counters.
KVS CHANGESnew, changed, removed, snapshot_updatednew/changed are ID arrays; removed is an array of {job_id,url}.

Each board report has board, status, available, matched, emitted, detail_errors and reason. Status is complete, partial, not_found or error. reason is a stable code or null. Overall status is complete, partial or error. Counters are integers. error is null or a stable failure code. snapshot_updated is boolean. sourceCommit identifies the code version. schema_version is 1.

Pricing

The price is $0.0018 per saved current job, plus $0.06 per run at the supported 256–512 MB memory range. The price is the same on all Apify plans. New, changed and unchanged saved jobs use the same result price. Removed jobs in CHANGES have no extra charge. The $0.06 start charge also applies to empty, filtered and failed runs. A full filtered scan still reads job pages even when it saves no jobs.

Saved jobsRuns within the 50-row limitPrice
101$0.07800
501$0.15000
100At least 2 separate runs$0.30000
1,000At least 20 separate runs$3.00000

The last two rows are price calculations for separate input sets, not a claim that one run can save 100 or 1,000 jobs. Source errors, empty runs and different batch sizes change the number of starts. Do not repeat the same set to obtain extra unique jobs.

Set Apify's maximum cost per run to at least $0.06 to cover the start event. Use $0.15 for up to 50 saved jobs, or $0.20 with room to spare. A $0.06360 cap allows the start and at most two rows. Use maxResults and the price cap together. A price cap can stop a scan before it is complete. Check OUTPUT.status and snapshot_updated. The 50-row acceptance run took about 53 seconds at 256 MB; source speed can change.

Use cases

  • Build a job board from known companies. Use job_id and career_site_url to update records.
  • Follow hiring changes at target accounts. Read CHANGES after each complete monitored run.
  • Collect research data. Export titles, dates, locations and disclosed salary values.

Monitoring

Set monitor: true and a monitorKey. Use enough maxResults for every matching job. The first full scan marks jobs new. Later scans mark each current job changed or unchanged. Changes compare content, including salary and description, but ignore scrape time.

The Actor stores a snapshot in the account's named key-value store breezy-jobs-monitor-state. Changing boards, filters or includeDescription starts a separate baseline. The stream name alone does not connect different configurations. Deleting this storage loses history.

Only a complete scan replaces the baseline or reports removed jobs. Capped, failed and cancelled scans cannot prove removals. Their new and changed lists describe only the rows seen; do not use them as a full snapshot. Run each stream sequentially. Overlapping runs of the same stream are not supported.

To repeat scans, you can create an Apify schedule yourself. No schedule is created by the Actor.

API and integrations

Start with the same JSON input through the Apify API. Read the returned default Dataset and KVS IDs. The output links in Console show Current jobs, Board status, Run summary and Job changes.

Export Dataset rows as JSON, CSV or Excel. In n8n, Make or your own code, use career_site_url + job_id as the record key. Read OUTPUT.status before replacing records. An AI agent using Apify MCP can pass the same input and read the same results. These are platform integration paths; no external integration is configured by this Actor.

Limits and partial results

  • Up to 4 input boards and 50 saved current jobs per run. The feed itself may contain more jobs.
  • Supported Cloud memory: 256 or 512 MB. The recommended timeout is 210 seconds; the 300-second Store test and larger finite positive timeouts are supported. Unsupported memory or an unlimited timeout is rejected before source work. Each request has a 15-second timeout. The Actor stops source work after 180 seconds or before its Cloud timeout.
  • At most 200 source HTTP attempts, including retries. Feed body limit: 5 MiB. Detail body limit: 2 MiB. Total received source body data is limited to 16 MiB, including unsuccessful responses and retries. SOURCE_BYTE_LIMIT stops further reads; the scan cannot update its monitoring baseline.
  • Only public HTTPS Breezy subdomains are allowed. Private network addresses and redirects are rejected.
  • A blocked feed, invalid JSON or changed source format is an error, not an empty board.
  • A valid empty feed or no filter matches is complete with zero rows.
  • A missing board is not_found. If all boards fail or are missing, the platform run fails. Mixed results are partial.
  • A detail error can save a partial metadata row without active filters. With active filters, an unreadable detail is skipped and the scan stays partial.
  • No private applicant records, employer login, global company discovery or custom domain support.
  • Dataset writes and monitoring snapshots are separate operations. A storage failure stops the scan. A restarted or resurrected run with an existing Dataset stops with RESUME_NOT_SUPPORTED. Start a new run to avoid mixing data from different scans. Do not overlap monitoring runs.

Troubleshooting

No rows: Open Board status. complete can mean an empty board or no filter matches. Remove filters and check the public board.

not_found: Check the Breezy subdomain. An employer may have moved to another platform.

partial: Check the board's reason. RESULT_LIMIT means you need a larger result limit, up to 50. A source or detail error may need a later retry.

No removed jobs: Check snapshot_updated. The scan must be complete. Check that monitorKey, boards and filters are unchanged.

Input error: Use the exact keys above and an HTTPS Breezy root. Do not paste employer dashboard links.

FAQ

Do I need a Breezy account?

No. The Actor reads public employer pages. It is an independent scraper, not a Breezy product.

Why are some values null?

The employer may not publish them. Check row_status for a detail read failure. The Actor does not estimate salary or dates.

Are all remote jobs fully remote?

No. The public marker can also appear on hybrid roles. Check workplace, applicant locations and the description.

Can this replace another Breezy scraper?

The core field names follow a public career-site scraper. Description spacing, location text and result order can differ. This Actor adds status and monitoring fields. Check your mapping before switching.

Support

Open an issue on the Actor page. Include the run ID, public Breezy board URL and the error code. Keep tokens and private data out of your message.