Hireology Jobs API
Query jobs from Hireology boards through one API with ?source=hireology — plus how Hireology's public careers API really behaves.
Hireology is a hiring platform for multi-location US businesses: auto dealer
groups, healthcare, retail, hospitality. Boards live at
careers.hireology.com/<path>, and behind them sits the best-shaped source in
this pool. Descriptions arrive inline at 100 rows per request, so a whole
board is one or two calls with no detail fetch and no HTML parsing. There are
23,905 Hireology postings in this dataset — a number that moves hourly, so read
it from /v1/meta rather than trusting this sentence.
Try it#
curl -G https://api.hyperjobs.io/v1/jobs \
-H "Authorization: Bearer $HYPERJOBS_KEY" \
--data-urlencode "source=hireology" \
--data-urlencode "time_frame=7d" \
--data-urlencode "limit=2"{
"data": [
{
"id": "hireology:8412337",
"title": "Salesperson",
"company": {
"slug": "6thavenuehonda",
"name": "6th Avenue Honda",
"domain": "6thavenuehonda.com",
"website": "https://6thavenuehonda.com",
"logo": "https://media.licdn.com/dms/image/…",
"industry": "Motor Vehicle Manufacturing",
"employee_count": 62
},
"location": {
"remote": false,
"countries": ["United States"],
"cities": ["Stillwater"],
"regions": ["OK"],
"raw": ["Stillwater, OK"]
},
"employment_type": ["FULL_TIME"],
"work_arrangement": null,
"seniority": null,
"salary": {
"min": 24000,
"max": 60000,
"currency": null,
"unit": "YEAR",
"annual_min": 24000,
"annual_max": 60000,
"summary": null
},
"skills": ["sales", "customer service"],
"taxonomies": ["Sales"],
"apply_url": "https://careers.hireology.com/6thavenuehonda/8412337/description",
"url": "https://careers.hireology.com/6thavenuehonda/8412337/description",
"source": "hireology",
"posted_at": "2026-07-09T13:32:51.875Z",
"expires_at": null,
"updated_at": "2026-07-14T06:11:02.000Z"
}
],
"total": 2,
"limit": 2,
"offset": 0
}How Hireology boards actually work#
One call per 100 postings, bodies included:
curl "https://api.hireology.com/v2/public/careers/<path>?page=1&page_size=100"<path> is the segment from careers.hireology.com/<path>; the
<slug>.hireology.careers hostname maps to the same value. page_size is
genuinely honored here (the default is a needlessly chatty 10), so most boards
are a single request. job_description is full HTML on the list row. No N+1.
The apiToken is decorative#
The board HTML embeds an apiToken JWT in its startingData, positioned exactly
like a credential you are supposed to mint, cache, refresh and pass. It isn't one.
The API returns byte-identical responses with no Authorization header
Verified against a live board: same rows, same descriptions, same everything, with the token and without it. There is no token refresh to build, no expiry to handle, and no 401 waiting for you at 3am when a JWT you didn't need lapses.
This is worth knowing precisely because the token looks so much like the hard part. It's the kind of thing you build a whole auth path around before noticing the endpoint never asked.
What bites you#
job_family is an object, not a string. This is the one that costs real
money. It arrives as { id, name, depth }, and passing it straight through puts
an object into a scalar column — every insert dies and the board stores zero
jobs.
The reason it's worth a warning rather than a footnote is how it fails. A probe
that checks the field is populated reports department: 100%, because an object
is truthy. So the board reports perfect health while writing nothing at all. Take
.name.
comp_frequency is not the pay unit. comp_period is the unit ("hour").
comp_frequency is the payroll cadence ("biweekly"). They sit next to each
other, they both look like the answer, and reading the wrong one annualizes a
$13/hour job by 26 and invents six-figure car-wash salaries. Also: "0.0" is
Hireology's empty, not free labour.
There's no currency code. The API doesn't publish one. Hireology is US-only in
practice, but the field is genuinely absent rather than implied, so currency
comes back null rather than a guessed USD.
The API never tells you who the employer is. The board token is
6thavenuehonda and that is the entire identity the source hands over. There is
no employer name field and no employer domain on the posting.
This is a real gap, and it nearly became a much worse one
Hireology has no tier-1 company-domain route — the platform publishes nothing to resolve a board to a company with, so the identity has to be inferred from outside the source.
The near-miss is instructive. An early identity pass graded Hireology
TRUSTED 6/8 (75%) — and 6 of those 6 domains were hireology.com and
hireology.careers. The board pages' og:url points at the ATS, so the highest
confidence grade we had was about to stamp "Hireology" as the employer of
every job on every one of its boards. Filtering the vendor's own domains
collapses that 75% to an honest 0%.
A name that comes back as the token, title-cased, is not information. We'd rather show you the token than a confident wrong answer.
Or use ours#
The fetch is one call per 100 rows. Everything around it is the work.
Our queue tracks 2,508 Hireology boards, and the discovery is the reason that number exists: Hireology has no public customer index, and the Wayback CDX index yields 2,271 live boards from 58% of its candidates, against 350 from Common Crawl. Assembling that list is a bigger job than reading the API ever was.
You get job_family unwrapped to its name instead of zeroing a board, salary read
off comp_period rather than the cadence next to it, "0.0" treated as empty,
structured city/state locations, Hireology rows deduplicated against the same job
on LinkedIn or elsewhere, expiry by board diffing, and whatever
company identity we can resolve from outside a source
that publishes none. On the last point, see the warning above: we'd rather be
straight with you about what Hireology does not give us.
Query it with ?source=hireology.
Quickstart, then pricing.
Every source above normalises onto the same schema, with the hiring company already joined onto each posting.
Get an API key