For Developers

The Most Developer-Friendly Job Market API

A REST API for 8.4M+ live jobs across 25+ countries and 540k companies — US, UK, EU, MENA, APAC, LATAM. Cursor pagination, webhooks, typed SDKs, hourly refresh. Auth with a bearer token and ship in an afternoon.

Country-scoped queries: ?country=gb|de|fr|nl|pl|in|ae|sa|sg|au|br

api.hirenode.io/v1/jobs200 · 142ms
{
  "object": "list",
  "has_more": true,
  "next_cursor": "cur_018Q...zR",
  "data": [
    {
      "id": "job_3F8aQzR2L",
      "title": "Senior Backend Engineer",
      "company": { "id": "co_vercel", "name": "Vercel", "domain": "vercel.com" },
      "location": { "city": null, "country": "US", "remote": true },
      "compensation": { "currency": "USD", "min": 180000, "max": 240000, "equity": true },
      "tech_stack": ["typescript", "rust", "postgres", "kubernetes"],
      "posted_at": "2026-05-26T09:14:02Z",
      "apply_url": "https://vercel.com/careers/..."
    }
  ]
}
Processing 5,000+ new global hiring signals daily.
Why developers pick hirenode

The boring stuff, done right.

One normalized schema

No source-specific or country-specific quirks. Every job has the same fields whether it came from a US careers page, a German ATS, Reed in the UK, or a Dubai job board.

Global cursor pagination

Stable cursors that don't shift when new jobs land. Page through 4M+ results across every region without losing your place.

Hourly refresh

Postings appear in the API within 60 minutes of going live. Webhooks fire the moment something matches your filter.

Typed SDKs

TypeScript, Python, and Go SDKs generated from the same OpenAPI spec. Zero drift between docs and runtime.

Stable IDs

Job IDs and company IDs are immutable. Deduped across sources so the same role doesn't appear three times.

Honest rate limits

Per-second burst plus monthly cap. No surprise throttling, no shadow quotas — your dashboard shows exactly what's left.

Quickstart

Pick a language. Ship today.

cURL/v1/jobs
curl https://api.hirenode.io/v1/jobs \
  -H "Authorization: Bearer hn_live_xxx" \
  -G --data-urlencode "tech=rust" \
       --data-urlencode "location=remote-eu" \
       --data-urlencode "salary_min=120000"
TypeScript/v1/jobs
import { Hirenode } from "@hirenode/sdk";

const hn = new Hirenode({ apiKey: process.env.HIRENODE_KEY });

const { data } = await hn.jobs.list({
  tech: ["rust", "postgres"],
  location: "remote-eu",
  salary_min: 120_000,
});
Python/v1/jobs
from hirenode import Hirenode

hn = Hirenode(api_key=os.environ["HIRENODE_KEY"])

jobs = hn.jobs.list(
    tech=["rust", "postgres"],
    location="remote-eu",
    salary_min=120_000,
)
Go/v1/jobs
client := hirenode.New(os.Getenv("HIRENODE_KEY"))

jobs, err := client.Jobs.List(ctx, &hirenode.JobsListParams{
    Tech:      []string{"rust", "postgres"},
    Location:  "remote-eu",
    SalaryMin: 120000,
})
Endpoints

Three resources. Everything you need.

MethodPathDescription
GET/v1/jobsList jobs with filters: tech, location, salary_min, posted_after, cursor.
GET/v1/jobs/:idRetrieve a single job with full description, compensation, and apply URL.
GET/v1/companiesSearch companies. Filter by domain, industry, hiring velocity.
GET/v1/companies/:id/hiring90-day hiring timeline for a company — open roles, deltas, top tech.
GET/v1/trendsAggregate trends: which technologies, geos, and bands are heating up.
POST/v1/webhooksCreate a webhook that fires when a job matches your filter.
Built for

What people build with the API.

Job boards

Spin up a niche job board (remote Rust, EU AI, junior frontend) without scraping a single page.

Talent CRMs

Enrich your CRM with live hiring signals. Know when your champion's company starts hiring again.

Market intelligence

Powering investor newsletters, comp benchmarking tools, and labor-market dashboards.

Salary tooling

Real compensation bands across geos and seniorities — built on parsed postings, not surveys.

Internal tooling

Hiring teams pipe data into Notion, Linear, and custom Retool dashboards.

AI agents

LLM agents that source candidates, draft outreach, and qualify opportunities — all on real-time data.

REST API for job listings

One Job Search API. Every source. Zero scrapers.

The hirenode Job Search API is a single REST API for job listings that returns a normalized JSON job data feed across every public source — Greenhouse, Lever, Ashby, Workday, LinkedIn, Indeed, USAJobs, Wellfound and direct company careers pages. Hit one endpoint, get clean records with stable IDs, parsed compensation, structured tech_stack arrays and ISO-8601 timestamps. You stop maintaining a fleet of scrapers; we keep the dedupe, parsing and refresh fresh.

The job board aggregator API ships with cursor-based API pagination so you can stably stream millions of rows without losing your place when new postings land. Webhooks fire within 60 seconds of a match, signed with HMAC-SHA256 and retried on transient failures. Typed SDKs for TypeScript, Python and Go are generated from the same OpenAPI spec — zero drift between docs and runtime.

Every saved query is also exposed as a permanent RSS feed for tech jobs and a hosted JSON endpoint, so you can power a niche board, an LLM agent or a Slack bot with the same backend.

FAQ

Job Search API, answered.

Is this a Job Search API or a Job Board Aggregator API?

+

Both. hirenode is a REST API for job listings that aggregates from every major source — Greenhouse, Lever, Ashby, Workday, LinkedIn, Indeed, USAJobs, Wellfound and company career pages — into one normalized schema. You query a single Job Search API and we handle the dedupe, parsing and refresh.

What does the JSON job data feed look like?

+

Every /v1/jobs response is a paginated JSON job data feed with id, title, company, location, remote flag, tech_stack array, parsed compensation (min/max/currency), posted_at, apply_url and source URL. Stable IDs across sources, ISO-8601 timestamps, and a has_more / next_cursor pair for cursor-based API pagination.

How does cursor-based API pagination work?

+

Every response includes a next_cursor token. Pass it back on the next request and you receive the next page with no duplicates and no missed records — even if new jobs land between requests. Cursors are stable across the lifetime of your query and survive backfills.

Do you provide an RSS feed for tech jobs?

+

Yes. Every saved filter on hirenode generates a permanent RSS feed for tech jobs and a JSON job feed API endpoint. Drop the RSS into Beehiiv, Substack or any reader; hit the JSON from a custom UI, a Slack bot, or an LLM agent.

What's the rate limit?

+

Free 5,000 requests/month. Pro is 50,000/mo, Business is 500,000/mo, Enterprise is custom. Per-second burst is honest — your dashboard shows exactly what's left and webhooks fire on quota events.

Are there typed SDKs?

+

Yes — TypeScript, Python and Go SDKs are generated from the OpenAPI spec so the runtime never drifts from the docs. cURL examples work for every endpoint.

Can I get a webhook when new jobs match my filter?

+

Yes. POST a filter to /v1/webhooks and we'll fire HTTPS callbacks within 60 seconds of a matching job appearing. Signed payloads with HMAC-SHA256, automatic retries, and a delivery log per endpoint.

Free tier. 250 requests / month.

Curator is $8/mo. Upgrade any time. Cancel any time.