Most job data marks a job "remote" because a model guessed it from the text. Sometimes that's right. Often it's "hybrid, 3 days in Munich". Here's how to get only the jobs where the employer itself published "remote", using Job Opportunities API (JOA). Every field in JOA says whether it was published by the employer or inferred by us, in field_sources.
1. Get a free key (no card): https://jobopportunitiesapi.org/login
2. The script
import os, datetime, requests
API = "https://api.jobopportunitiesapi.org/v1/jobs"
api_key = os.environ.get("JOA_API_KEY") # free key: https://jobopportunitiesapi.org/login
params = {
"title": "data engineer",
"country": "DE",
"remote": "remote",
"remote_confirmed": "true", # only jobs where the EMPLOYER said "remote"
"posted_after": (datetime.date.today() - datetime.timedelta(days=7)).isoformat(),
"limit": 20,
}
r = requests.get(API, params=params, headers={"Authorization": "Bearer " + api_key}, timeout=30)
r.raise_for_status()
for job in r.json()["data"]:
src = job["field_sources"]
print(f'{job["title"]} | {job["company"]} | remote ({src["remote"]}) | {job["apply_url"]}')
3. Run it
Put your key in an environment variable called JOA_API_KEY, then run python remote_jobs.py.
Real output from today:
Senior Scientific Data Engineer | TetraScience | remote (published) | https://apply.workable.com/j/CD8C2AFA42/apply
Senior Data Engineer (m/w/d) | Device Insight | remote (published) | https://device-insight.breezy.hr/p/2e7513bb4c5e01-senior-data-engineer-m-w-d
Every link goes to the employer's own application page, not a job board.
What changed vs. a normal search
remote_confirmed=true drops every job where "remote" was only inferred. Drop that line and you get more results, each labelled inferred or published, so you can decide yourself.
Ideas
- Run it daily with cron and send the list to Slack or email.
- Swap
titleandcountryfor your stack and market. - Add
has_salary=trueto keep only jobs where the employer published a salary.
What filter do you wish job sites had?
Top comments (0)