Blog

How the dataset is built, how to query it honestly, and what shipped. Written by the people building it.

EngineeringFeatured

Why every job carries its company

Most jobs APIs hand you an employer name and leave you to resolve it. Here is what changes when the company object is already attached.

6 min read

Read the post
RSS
Product

The HyperJobs API is live

A read-only jobs API with the hiring company attached to every posting. What shipped, who it is for, and where the rough edges are.

6 min read

Insights

Reading salary data honestly

What the salary fields mean, why coverage is partial by construction, and what salary_gte's range-overlap semantics do and don't promise.

8 min read

Insights

How to measure remote hiring share

The query that answers it, and the ways it still lies to you: two remote fields, sparse classifiers, provenance mix, and the archive tail.

7 min read

Engineering

The same role posted twice is one job

A role mirrored to Greenhouse and LinkedIn is one posting, not two. What deduplication has to decide, and what the API lets you see.

7 min read

Engineering

This API tells you when you're wrong

A bad parameter is a 400 that names it, never a silent drop. Why strict validation is the kindest thing an API can do with your quota.

8 min read

Insights

The comma means OR, except for skill

taxonomies=Software,Healthcare is a union now. Why v1 made the comma OR on every multi-value filter but one — and why skill still intersects.

8 min read

Insights

Ask how many jobs there are and you get one answer

health, meta, and an unfiltered search used to report three different counts. Now they report one — here's what each number still means.

6 min read

Insights

The skill you were shown is not the skill you filter on

Skills go out display-formatted and come in as canonical tokens. Why ?skill=Machine Learning returns zero rows, and the heuristic that isn't an inverse.

8 min read

Engineering

Every /v1/jobs query is a full scan

Text search got an index. Every other filter still scans — so narrowing returns faster without running faster. Which knobs are connected to anything.

8 min read

Engineering

Nobody tells us a job is closed

Nobody tells us a job is closed — we notice it is gone from the board. Expiry is a diff, and everything odd about expires_at follows.

9 min read

Engineering

The JSON string that never shipped

employment_type almost went live as JSON text inside JSON. The post explaining why we couldn't fix it is what convinced us to fix it.

6 min read

Engineering

Your key crosses the wire exactly once

We store a SHA-256 hash of your API key and nothing else. What that buys, what it costs, and the CORS trap that breaks browser auth.

8 min read

Insights

Your sample is not random

This API sorts newest-first and never randomly. What a limit=200 page actually measures, and why /v1/companies can only ever show you 200.

8 min read