JazzHR Jobs API | Search Every Company Job Board avatar

JazzHR Jobs API | Search Every Company Job Board

Pricing

from $1.00 / 1,000 job records

Go to Apify Store
JazzHR Jobs API | Search Every Company Job Board

JazzHR Jobs API | Search Every Company Job Board

Search live job postings across every company hiring on JazzHR (applytojob.com). No company URL needed. Returns titles, employers, locations, posting dates, apply links, and full descriptions in markdown, HTML, or text, plus a directory of every employer on the platform.

Pricing

from $1.00 / 1,000 job records

Rating

0.0

(0)

Developer

John

John

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

JazzHR Jobs API

Search live job postings across every company hiring on JazzHR (applytojob.com) with one API call. Most JazzHR tools make you supply a company URL first. This one already knows every employer on the platform, so you can search all of them at once, or narrow to a single board. In practice it works as a read-only JazzHR API for public job data: no API keys, no login, nothing to install.

This is an independent tool. It is not affiliated with, endorsed by, or connected to JazzHR or Employ Inc. It reads only public job postings.

What you can extract

FieldWhat it is
title, descriptionMarkdownJob title and the full description, in markdown, HTML, or plain text
companyName, companySlug, companyWebsite, boardUrlThe employer, their site, and their JazzHR board
city, region, postalCode, country, isRemoteWhere the job is, and whether it is remote
employmentType, experienceLevelFull time, part time, contract, and the seniority the employer asked for
datePosted, validThroughWhen the employer posted it and when it expires
applyUrl, canonicalUrlThe application link, plus the employer's own branded careers URL when they use one

A JazzHR API that already knows every employer

You do not need a company URL to start. Leave the input empty and the search covers every employer on the platform.

Switch to the company directory mode and you get the employer list itself: every business hiring on JazzHR, with a live count of their open roles. That is a useful thing to have before you decide which boards are worth pulling in full.

Descriptions come back as markdown, so you can hand them to an LLM without stripping HTML first.

Two things happen quietly that matter more than they sound. About a quarter of live postings publish no structured job data at all; those get read from the page markup instead of coming back half empty. And roughly a fifth of the entries in the platform index point at roles that have already closed, which are skipped and never billed. You pay for jobs you actually receive.

Delta mode handles the rest: turn it on and each scheduled run returns only the postings you have not seen before.

What is applytojob.com?

applytojob.com is the domain where JazzHR hosts its customers' career pages. When a company uses JazzHR to hire, their job board lives at company.applytojob.com, and application emails come from that domain too, which is why so many people search for it after applying somewhere. Every public board hosted there is what this Actor indexes: one search covers all of them.

Use cases

  • Scrape job postings for a niche job board fed by small and mid-sized employers the big aggregators miss.
  • Give an AI career assistant live job data with descriptions it can read directly.
  • Find companies hiring for a role in your territory, then sell to them.
  • Feed job posting data into hiring-velocity dashboards by company, city, or title.
  • Alert a team whenever a competitor posts a new opening.

๐Ÿ”Œ Integrations: turn JazzHR postings into a live feed

One run answers a question. The integrations are how this becomes a pipeline you stop thinking about.

  • Tasks and Schedules. Save your search as an Apify Task, put it on a weekly schedule, and switch on newJobsOnly. From then on the dataset only ever contains postings that appeared since the last run: a self-maintaining new-jobs feed.
  • n8n, Make, and Zapier. Trigger runs and consume results through Apify's integrations, so new postings can land in Slack, Sheets, Airtable, or your CRM.
  • Databases and storage. Push each run's dataset to Postgres, Supabase, or S3 with the standard Apify dataset integrations, and query job posting data with SQL.
  • Webhooks. Fire a webhook on run completion to kick off your own processing the moment a delta run finds something new.
  • MCP. AI agents can run the whole loop themselves; see the Claude section below.

Input parameters

Every field is optional. Running with no input at all returns a sample of jobs from across the platform.

ParameterTypeDefaultWhat it does
startUrlsarrayemptyCompany boards such as https://company.applytojob.com, or individual job URLs. Empty searches every employer.
keywordsarrayemptyJob title words to keep. Applied before each posting is opened, so it also makes the run cheaper.
outputModeselectjobsjobs for full records, urlsOnly for the job index, companiesOnly for the employer directory.
descriptionFormatselectmarkdownmarkdown, html, text, or all.
companies / excludeCompaniesarrayemptyCompany slugs to include or skip. For acme.applytojob.com the slug is acme.
locationstringemptyText match on city, state, postal code, or country.
employmentTypeselectANYFull time, part time, contractor, temporary, intern, or other.
remoteOnlybooleanfalseKeep only remote roles.
postedAfterstringemptyYYYY-MM-DD. Uses the employer's real posting date.
maxItemsinteger100Row cap. The platform holds over 100,000 live jobs, so this is what keeps a first run small.
newJobsOnlybooleanfalseReturn only postings not seen in an earlier run.
firstRunBehaviorselectemitAllOn the first delta run, return everything or just record what exists today.
deltaStoreNamestringjazzhr-seen-jobsNamed store holding the remembered job IDs. Change it to keep separate delta histories per search.
maxConcurrencyinteger10Parallel page reads, up to 25.
proxyConfigurationobjectdirectOptional Apify Proxy settings. Direct connections work; leave off unless you hit blocking.

Example output

{
"id": "job_20260617184930_ZL9U2ROWTQWMZDDD",
"jobId": "vMHpWDZa3l",
"title": "Account Executive",
"companyName": "Ease Inc",
"companySlug": "easeinc",
"companyWebsite": "http://www.ease.io",
"boardUrl": "https://easeinc.applytojob.com",
"applyUrl": "https://easeinc.applytojob.com/apply/vMHpWDZa3l/Account-Executive",
"canonicalUrl": "https://careers.easeinc.com/apply/vMHpWDZa3l/Account-Executive",
"city": "Irvine",
"region": "CA",
"postalCode": "92618",
"country": "US",
"locationText": "Irvine, CA, US",
"isRemote": true,
"employmentType": "FULL_TIME",
"experienceLevel": "Mid Level",
"datePosted": "2026-06-17",
"validThrough": "2026-09-15",
"descriptionMarkdown": "Ease is hiring an Account Executive to help manufacturers improve quality, safety, and operational performance...",
"parseStatus": "full",
"scrapedAt": "2026-08-10T18:22:04Z"
}

The company directory mode returns a different, much smaller row:

{
"companySlug": "easeinc",
"boardUrl": "https://easeinc.applytojob.com",
"jobCount": 17,
"sampleJobTitles": ["Account Executive", "Implementation Manager"],
"scrapedAt": "2026-08-10T18:22:04Z"
}

Pricing

You pay per row returned, and the three output modes are priced differently because they cost very differently to produce. Full job records carry the highest rate since each one is a separate page read. The job index and the company directory are built from a handful of requests, so they are priced far lower and are the cheap way to survey the whole platform before deciding what to pull in full. Nothing is charged for postings that turn out to be expired, for rows removed by your filters, or for jobs suppressed by delta mode. Current rates are on the Store page.

How to get started

  1. Open the Actor and press Start. With no input it returns a sample of jobs from across the platform.
  2. Add keywords to narrow to the roles you care about, or startUrls to target one employer.
  3. Switch outputMode to companiesOnly to see who is hiring before pulling any descriptions.
  4. Raise maxItems once the shape of the output looks right.

View on Apify Store

Ready-made Python and MCP walkthroughs live in the example repo.

๐Ÿ”Œ Use this API from Claude (MCP)

Add this Actor as a tool in Claude Code (free trial), Claude Cowork (free trial), or any other MCP client, through the hosted Apify MCP server:

https://mcp.apify.com/?tools=actors,docs,johnvc/jazzhr-jobs-api

Setup walkthrough:

Apify MCP integration docs: https://docs.apify.com/platform/integrations/mcp

๐Ÿ’ธ Pay per run with crypto (x402)

The JazzHR Jobs API supports agentic payments via the x402 protocol. AI agents and MCP clients can pay for runs in USDC (on Base) with no Apify account or API token needed: point your agent at the Apify MCP server and it can discover, pay for, and run this Actor autonomously. Read the Apify x402 announcement for details.

FAQ

Is this an API or a web scraper?

Both, honestly. Under the hood it reads public pages the way a scraper does. What you get is an API: structured JSON on demand, filters, stable field names, and no HTML in sight unless you ask for it. If you have been trying to scrape job postings yourself, this is the version where someone else maintains the parser.

Do I need a company URL to use this?

No. That is the main difference from other JazzHR tools. Leave startUrls empty and the Actor searches every employer on the platform. Supply a board URL only when you want one specific company.

How many jobs and companies are there?

The platform index currently lists a little over 114,000 postings across roughly 7,500 employers. A portion of those postings have already been filled or withdrawn; the Actor skips them and does not bill for them.

Why do some rows have no posting date?

Employers publish their postings in two different ways. Where a posting carries structured job data, the real posting date and expiry date come with it. Where it does not, the title, company, location, employment type, and description are read from the page instead, and no date is available. The parseStatus field tells you which kind of row you are looking at.

How do I get only jobs posted since my last run?

Turn on newJobsOnly. The Actor remembers the job IDs it has returned and skips them next time. On the very first run, set firstRunBehavior to seedOnly if you want it to record what exists today and return nothing, so the following run is a clean list of new postings.

Can I run it on a schedule?

Yes, and that is the intended way to use it. Save your input as a Task, add a schedule, and turn on delta mode so each run returns only new postings. The Integrations section above shows where to send the results.

How do I use the JazzHR API from other apps?

Every run is reachable over the Apify REST API, so anything that can make an HTTP request can start a search and read the results. n8n, Make, and Zapier all have ready connectors, listed in the Integrations section.

Can AI assistants run this through an MCP server?

Yes. The hosted MCP server URL in the Claude section above registers this Actor as a tool, so an assistant can search postings, pull the company directory, and pay per result without you writing any code.

Can I get salaries?

Salary is not a separate field because most employers on this platform write pay into the job description rather than into a structured field. Search descriptionMarkdown for it.

Why did my run return fewer rows than maxItems?

Either the filters matched fewer jobs than the cap, or the run hit the budget you set for it. The run log states which, along with how many postings were filtered out and how many had already expired.

Is applytojob.com legit?

Yes. It is the hosting domain for JazzHR customer career pages, so a real company you applied to will send mail from it. If an offer arrived from that domain for a job you never applied to, treat it with the same suspicion as any unsolicited offer.

Where does JazzHR post jobs?

Each customer gets a public board on applytojob.com, and JazzHR syndicates postings out to external boards the employer chooses. This Actor reads the public boards, which are the complete, first-party source.

Is scraping this data allowed?

The Actor reads only public job postings and the public sitemap index that the platform itself publishes for search engines in its robots.txt. It signs in to nothing and collects no candidate or applicant data. Job boards are one of the most common public data sources for an applicant tracking system ecosystem, and this one stays strictly on the public side.

Hiring data rarely stops at one platform. These pair well with this Actor:

There are simpler JazzHR tools on the Store, like this one, that fetch a handful of rows from a board URL you already know. Fine for a spot check; this Actor is for when you need the whole platform, filters, and a feed that keeps itself current.


๐ŸŒ About Alpha OSINT

This Actor is part of Alpha OSINT, toolset of financial and operations data sources and APIs. For support or requests for this actor, please start a ticket directly on our support page.

Last Updated: 2026.08.18