Every job carries a license object with two flags. Read them before a job leaves your team.
"license": { "display": true, "resale": false }| Flag | true means |
|---|---|
license.display |
You may show this job to your end users. |
license.resale |
You may resell or redistribute this job as data. |
Both are always present and always true or false. Never null.
In plain English
Section titled “In plain English”display |
resale |
You may | You may not |
|---|---|---|---|
true |
true |
Show it in your product and pass the data on to others. | |
true |
false |
Show it in your product, for example on a job board, in an app, or in an alert to your users. | Sell or hand over the data itself, for example as a file, a feed or an API. |
false |
true |
Pass the data on as data. | Show it to end users in your product. |
false |
false |
Show it to end users, or resell it. |
What you may do inside your own team, such as research or enriching your own CRM, is set by your agreement with BetterJobs, not by these flags.
Common cases
Section titled “Common cases”- Sales prospecting in your own CRM. Internal use. Your agreement covers it; the flags matter once jobs reach people outside your team.
- A job board or job alerts for your users. Keep only jobs with
license.display: true. - An agency sending shortlists to clients. Your clients are end users. Keep only
license.display: true. - Selling a dataset, a feed or an API built on these jobs. Keep only
license.resale: true. - Training data or a public dump. That is redistribution. Keep only
license.resale: true, and check your agreement.
Filter before you publish
Section titled “Filter before you publish”There is no search filter for license, so filter the response. This keeps only jobs you may show:
curl https://api.betterjobs.cc/v1/jobs/search \ -H "Authorization: Bearer $BETTERJOBS_API_KEY" \ -H "BetterJobs-Version: 2026-10-01" \ -H "Content-Type: application/json" \ -d '{ "filters": { "title_or": ["Head of RevOps"], "country_code_or": ["DE", "AT", "CH"], "posted_within_days": 7 }, "waterfall": { "max_credits": 100 } }' \ | jq '.data | map(select(.license.display))'import osimport requests
resp = requests.post( "https://api.betterjobs.cc/v1/jobs/search", headers={ "Authorization": f"Bearer {os.environ['BETTERJOBS_API_KEY']}", "BetterJobs-Version": "2026-10-01", }, json={ "filters": { "title_or": ["Head of RevOps"], "country_code_or": ["DE", "AT", "CH"], "posted_within_days": 7, }, "waterfall": {"max_credits": 100}, },)resp.raise_for_status()showable = [job for job in resp.json()["data"] if job["license"]["display"]]const resp = await fetch('https://api.betterjobs.cc/v1/jobs/search', { method: 'POST', headers: { Authorization: `Bearer ${process.env.BETTERJOBS_API_KEY}`, 'BetterJobs-Version': '2026-10-01', 'Content-Type': 'application/json', }, body: JSON.stringify({ filters: { title_or: ['Head of RevOps'], country_code_or: ['DE', 'AT', 'CH'], posted_within_days: 7 }, waterfall: { max_credits: 100 }, }),});if (!resp.ok) throw new Error(`BetterJobs ${resp.status}`);const { data } = await resp.json();const showable = data.filter((job: { license: { display: boolean } }) => job.license.display);Jobs you filter out are still charged, because they were returned. If most of your results are not usable for your case, tell us: the mix depends on the sources a search routes to.
Simplest licensing: own_only
Section titled “Simplest licensing: own_only”The own_only strategy uses only the BetterJobs index, with no partner providers. One source means one set of terms. It is the strategy to start with when licensing matters more than coverage. See the waterfall.
Partner providers have their own terms with BetterJobs. The license flags on each job are where those terms reach you. You do not need to read six provider contracts.
This is not legal advice
Section titled “This is not legal advice”These flags summarize what BetterJobs allows. Your agreement with BetterJobs is what binds you. If you plan to resell or publish at scale, read it or ask us before you ship.
Related
Section titled “Related”- Provenance and confidence:
sources[]shows which providers a job came from - Field dictionary
- When BetterJobs is the wrong tool