Skip to content
API v1 preview — endpoints and fields may change before general availability.

JobsPipe

What does JobsPipe contribute, and when does BetterJobs route to it?

View .md

JobsPipe sells normalized job postings from 30+ sources with 12 months of history. BetterJobs uses it as one of six partner providers.

JobsPipe

jobspipe

Normalized job postings from 30+ sources with 12 months of history.

Sources
30+ sources incl. Greenhouse, Lever, Ashby, Workday, Indeed, LinkedIn
History
12 months
Freshness
Under 6h on Builder, under 1h on Scale
Credits
1 credit per job; one credit buys a job for the rest of the calendar month

Growth includes 2 partner providers; Pro and above include all six. GET /v1/providers shows what your plan enables.

Facts per JobsPipe docs.

All facts in this section are per JobsPipe docs.

  • Major ATSs and boards in one schema. 30+ sources, including Greenhouse, Lever, Ashby, Workday, Indeed and LinkedIn.
  • History. 12 months of postings.
  • Lifecycle timestamps. discovered_at, last_seen_at, verified_at and closed_reason per job.
  • Ghost detection. A ghost_score per job.
  • Standard taxonomies. ISCO-08, ISIC and ESCO.

JobsPipe’s field names next to ours:

— = no confident one-to-one equivalent in that provider's published field names.
BetterJobsJobsPipe
titlejob_title
seniorityseniority
salarysalary_usd
posted_atdate_posted
first_seen_atdiscovered_at
last_seen_atlast_seen_at
last_verified_atverified_at
closed_reasonclosed_reason
sources[].urlurl
sources[].first_seen_atdiscovered_at
sources[].last_seen_atlast_seen_at

What JobsPipe filled on a given job is in that job’s sources[] entry for jobspipe, under fields. In the spec’s illustrative async-search example, JobsPipe supplied title, description, apply URL, location, seniority and employment type.

Per JobsPipe docs, freshness is under 6 hours on its Builder plan and under 1 hour on its Scale plan. On each BetterJobs job, the jobspipe entry in sources[] carries first_seen_at and last_seen_at for that source. JobsPipe’s verified_at maps to our last_verified_at.

JobsPipe scores how likely a posting is a ghost. BetterJobs returns the opposite question, p_real: the probability (0 to 1) that the job is a real open req. p_real comes from corroboration across every source that saw the job, not from JobsPipe alone. Read it as roughly the inverse of ghost_score, not as a rescaled copy. See p_real and Provenance and confidence.

Per JobsPipe docs, 1 credit buys a job for the rest of the calendar month. BetterJobs bills 1 credit per unique job you have not already paid for. A job you already paid for is free on later reads and counts in metadata.jobs_already_paid. GET /v1/billing/ledger?job_id=... proves it. See Credits and billing.

JobsPipe searches with POST /v1/jobs/search. BetterJobs uses the same method and path on its own host, https://api.betterjobs.cc/v1/jobs/search, but a different body: filters go under filters with suffix operators like title_or. Unknown filter fields return 400 unknown_filter. The translation is in Migrate from JobsPipe.

JobsPipe reports salary_usd. BetterJobs keeps pay in the job’s own currency: salary.currency (ISO 4217) with min, max and period. Convert yourself if you need USD.

JobsPipe classifies with ISCO-08, ISIC and ESCO. BetterJobs returns its own job_family and seniority values. See Taxonomies.

Only when JobsPipe is enabled on your plan. Then:

  • max_coverage asks it on every search.
  • cheapest_first asks it only if the BetterJobs index and earlier sources did not fill the page.
  • waterfall.providers: ["betterjobs", "jobspipe"] pins it.

Check metadata.providers.tried and metadata.providers.hit to see whether it was asked and matched.

Growth includes 2 partner providers; Pro and above include all six. GET /v1/providers shows what your plan enables. See the plan table.

We do not link to JobsPipe’s docs from this site. Everything you need to use JobsPipe data through BetterJobs is on this page and in Migrate from JobsPipe.