Remote OK API: Search remote jobs
Searches Remote OK jobs by role or skill. Results can be filtered by listed region and by minimum annual USD salary.
Unofficial. Not affiliated with or endorsed by Remote OK.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Region optional
region Location eligibility, for example europe; any does not restrict locations.
any (default)
One of
any,worldwide,north_america,europe,latin_america,asia,oceania,africa.- Keywords, required
keywords Role or skill to search, for example python or customer support.
python
- Max Results optional
max_results Maximum jobs to return, for example 25.
25 (default)
Whole number from 1 to 100.
- Minimum Salary (USD) optional
minimum_salary_usd Minimum stated annual salary in USD, for example 100000.
Not set
Whole number 0 or more.
Input as JSON
{ "keywords": "python"}Output
{ "jobs": [ { "tags": [ "analyst", "saas", "sys admin" ], "title": "Risk Analyst", "company": "Pavago", "job_url": "https://remoteOK.com/remote-jobs/remote-risk-analyst-pavago-1137548" , "posted_date": "2026-10-20", "salary_max_usd": null, "salary_min_usd": null, "company_logo_url": null, "location_restrictions": null }, { "tags": [ "exec", "design", "hr" ], "title": "Technical Account Manager", "company": "Yuno", "job_url": "https://remoteOK.com/remote-jobs/remote-technical-account-manager-yuno-1137540" , "posted_date": "2026-10-17", "salary_max_usd": null, "salary_min_usd": null, "company_logo_url": null, "location_restrictions": "Brazil" }, { "tags": [ "dev", "python", "javascript" ], "title": "Software Engineer AI Coding Tasks", "company": "Askable", "job_url": "https://remoteOK.com/remote-jobs/remote-software-engineer-ai-coding-tasks-askable-1137538" , "posted_date": "2026-10-17", "salary_max_usd": 10000, "salary_min_usd": 10000, "company_logo_url": null, "location_restrictions": null } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"remoteok.com/search_jobs","input":{"keywords":"python"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "remoteok.com/search_jobs" , "input": { "keywords": "python" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "remoteok.com/search_jobs" , "input": { "keywords": "python" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run remoteok.com/search_jobs# with {"keywords":"python"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "keywords" ], "properties": { "region": { "enum": [ "any", "worldwide", "north_america", "europe", "latin_america", "asia", "oceania", "africa" ], "type": "string", "default": "any", "description": "Location eligibility, for example europe; any does not restrict locations." }, "keywords": { "type": "string", "minLength": 1, "description": "Role or skill to search, for example python or customer support." }, "max_results": { "type": "integer", "default": 25, "maximum": 100, "minimum": 1, "description": "Maximum jobs to return, for example 25." }, "minimum_salary_usd": { "type": "integer", "minimum": 0, "description": "Minimum stated annual salary in USD, for example 100000." } }}Output schema
{ "type": "object", "required": [ "jobs" ], "properties": { "jobs": { "type": "array", "items": { "type": "object", "properties": { "tags": { "type": "array", "items": { "type": "string" } }, "title": { "type": "string" }, "company": { "type": "string" }, "job_url": { "type": "string" }, "posted_date": { "type": [ "string", "null" ] }, "salary_max_usd": { "type": [ "integer", "null" ] }, "salary_min_usd": { "type": [ "integer", "null" ] }, "company_logo_url": { "type": [ "string", "null" ] }, "location_restrictions": { "type": [ "string", "null" ] } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
remoteok.com/search_jobs- Returns
- title, company, salary range, tags, location, posted date, logo, job URL
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method remoteok.com/search_jobs with the inputs above.
Ask your agent
- Find remote data engineer jobs open to people in Europe paying at least 90000 USD a year
- Show me up to 15 remote customer support openings that accept candidates from Latin America
- I need remote Python developer roles with a stated salary of 120k or more, worldwide eligibility
- List remote UX designer positions on remote-ok in the Asia region with salary info included
- Look for any remote job mentioning Kubernetes, limited to North American hiring, 50 results max
See more
Searches open Indeed jobs by keywords, location, country, posting age and job type, returning public first-page results in displayed order.
indeed.com/search_jobsFinds open ZipRecruiter jobs by keywords and location, with distance and posting-date filters. Returns up to 100 public listings in search order; details that are not shown are null.
ziprecruiter.com/search_jobsSearches USAJOBS federal jobs by keywords, location, salary threshold and applicant group, in website relevance order. Salary ranges may start below the threshold; annual pay or remote status is null when the announcement does not state it.
usajobs.gov/search_jobsSearches public LinkedIn job listings by keywords and location, with optional date, seniority, employment type and company filters.
linkedin.com/search_jobsLists open jobs on a company's Lever job board, with optional team, location and workplace filters.
jobs.lever.co/list_company_jobsFinds open public Naukri job listings by keywords, with optional city and experience filters, in Naukri's search order. Undisclosed salaries have no numeric range.
naukri.com/search_jobsLists open jobs on a company's Greenhouse job board, with optional department and location filters.
boards.greenhouse.io/list_company_jobsFinds current SEEK jobs in Australia by keywords, with optional location, work type and posting window. Results follow SEEK search order; some promoted listings may appear outside the selected posting window.
seek.com.au/search_jobs