How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
https://the-san-francisco-standard.breezy.hr/in Breezy career URLs. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
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.
Who uses it
Job board builders
Import jobs from known Breezy companies and update them by job ID.
Sales teams
Follow hiring changes at target accounts.
Researchers
Export titles, dates, locations and salary values.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.06 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Current job saved | $0.0018 | One unique matching current job saved to the default Dataset. |
Examples
- One job: about $0.06.
- 1,000 jobs: about $1.86.
- Every day 100 jobs, for 30 days: about $7.20 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 2,600 jobs.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
Do I need a Breezy account?
No. It reads public job boards.
Why are some values empty?
The employer did not publish them. Missing data stays null.
Can it search every Breezy company?
No. You give the boards you want to read.
How many jobs per run?
Up to 50 saved jobs from up to 4 boards.
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.
Details
Step by step on Apify
- Open Input.
- Add
https://the-san-francisco-standard.breezy.hr/tocareerUrls. - Keep
maxResults: 10andincludeDescription: true. - Click Start.
- Open Current jobs. Check
job_id,titleandsalary. - Open Board status. A full scan has
status: "complete".
Use cases
- Build a job board from known companies. Use
job_idandcareer_site_urlto update records. - Follow hiring changes at target accounts. Read
CHANGESafter each complete monitored run. - Collect research data. Export titles, dates, locations and disclosed salary values.
Tips for better results
- Use the company.breezy.hr address. Custom career domains do not work.
- Read the CHANGES record after each complete monitored run.
- Check the workplace field before you call a job fully remote.
Limits and good to know
- 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
completewith zero rows - A missing board is
not_found. If all boards fail or are missing, the platform run fails. Mixed results arepartial - 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
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"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"
}Use it from code
Actor ID: cliqtomedia/breezy-jobs-monitor-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/breezy-jobs-monitor-scraper").call(run_input={
"careerUrls": [
"https://the-san-francisco-standard.breezy.hr/"
],
"query": ""
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~breezy-jobs-monitor-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"careerUrls": ["https://the-san-francisco-standard.breezy.hr/"], "query": ""}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/breezy-jobs-monitor-scraper")
result = tool.invoke({"run_input": {"careerUrls": ["https://the-san-francisco-standard.breezy.hr/"], "query": ""}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (27)
| Field | Type |
|---|---|
company | string |
company_url | string |
company_logo | string |
description | string |
date_posted | string |
valid_through | string |
department | string |
salary_text | string |
feed_published_at | string |
workplace | string |
first_seen_at | string |
job_id | string |
title | string |
location_text | string |
url | string |
source | string |
career_site_url | string |
scraped_at | string |
row_status | string |
change_type | string |
remote | boolean |
feed_remote | boolean |
locations | array |
employment_types | array |
applicant_locations | array |
salary | object |
detail_source | string |
Input settings (8)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Breezy career URLs required | careerUrls | array | ["https://the-san-francisco-standard.breezy.hr/"] |
| Keywords | query | string | "" |
| Location contains | location | string | "" |
| Remote jobs only | remoteOnly | boolean | false |
| Include description | includeDescription | boolean | true |
| Maximum saved jobs | maxResults | integer | 10 |
| Track changes | monitor | boolean | false |
| Monitor stream name | monitorKey | string | "default" |
