A curated list of free endpoints for remote-job data — every one verified to return live data, each with a copy-paste Python example. No scraping, no accounts, no API keys for most.
The hard part of a remote-job feed is not the logic — it's that every board exposes its data differently: some are JSON APIs, some are RSS, some are plain HTML. The list below is only sources that were actually verified to return data (checked 2026). Here are the six that work and how to read each one.
Official JSON API
Remotive exposes a public JSON endpoint for all current jobs. One call returns the full set with title, location, tags and salary ranges.
import requests
r = requests.get("https://remotive.com/api/remote-jobs", timeout=15)
jobs = r.json()["jobs"]
print(len(jobs)) # full current set
Public JSON API
RemoteOK's listing is backed by a public JSON endpoint (it asks you to link back, follow, no nofollow). Useful for high-volume tech remote roles.
import requests
r = requests.get("https://remoteok.com/api", timeout=15)
jobs = r.json() # list of jobs
for j in jobs[:5]:
print(j["id"], j["name"][:40])
RSS feed
WWRemotely publishes a daily RSS feed of new remote jobs. Parse it with any RSS library.
import feedparser
d = feedparser.parse("https://weworkremotely.com/remote-jobs.rss")
for e in d.entries[:10]:
print(e.title, e.link)
Keyless JSON API
Jobicy aggregates 50+ remote boards and exposes a public JSON endpoint — no API key, no signup. One call returns title, company, industry, geo, level and salary range.
import requests
r = requests.get("https://jobicy.com/api/v2/remote-jobs?count=50", timeout=15)
jobs = r.json()["jobs"] # jobTitle, companyName, jobGeo, salaryMin/Max
for j in jobs[:5]:
print(j["jobTitle"], "|", j["companyName"])
Algolia search API
HN's monthly "Who is hiring?" posts are searchable via Algolia — a clean, keyless JSON API.
import requests
r = requests.get("https://hn.algolia.com/api/v1/search",
params={"query": "who is hiring", "tags": "story"},
timeout=15)
hits = r.json()["hits"]
print(len(hits), "hiring posts")
Public listings
Remote Leaf aggregates remote jobs and exposes a readable, public listing of the latest openings.
import requests
r = requests.get("https://remoteleaf.com/remote-jobs/", timeout=15)
# parse the public listing for the latest jobs
REST API · self-hostable · MIT
Maintaining six separate adapters — and re-fixing each one when a board changes — is the real cost of a cross-board feed. Remote Jobs API pulls Remotive, RemoteOK, We Work Remotely, Jobicy and Hacker News, normalizes everything into a single schema, dedupes, and returns JSON/CSV — with an optional 0–100 skill fit-score.
curl "https://<your-host>/v1/jobs?skills=python,backend&limit=3"
Remote Jobs API → — 5 boards, one schema, stdlib-only Python, free & MIT.
If you only need one board, use its native endpoint — it's the most direct. If you need a cross-board feed (most real use cases do), the single biggest cost is adapter maintenance: every board quietly changes its format. A normalizer collapses that into one stable schema you control. That's exactly the gap Remote Jobs API fills.