Search, filter, and page through job listings
Skill Matching (sort=match)
Ranks jobs by the number of matching skills, adjusted for posting age (every 14 days reduces the effective match count by 1).
curl "https://oceanofjobs.com/api/jobs?skills=Python,Kubernetes&sort=match&country=US"search?stringSpace-separated search terms (e.g., kubernetes new york). Matches title, company, location, category, and description. Use quotes for exact phrases (e.g., "software engineer"). A few role names also match their related titles (soc analyst finds Security Analyst and SecOps roles), a trailing word matches as a prefix while it is typed, and tier words (tier 1, L1) rank rather than filter. The response's search.expanded lists the phrases added.
search_mode?stringall (default): every term must match. any: one term is enough.
"all""any"search_exact?"1"1 to match only the words as typed, with no related titles, prefix or tier handling.
"1"q?stringLegacy title/company search.
keywords?stringSemicolon-separated terms (e.g., azure;excel;iso). Matches title and description.
country?stringTwo-letter country code (e.g., US or US,GB). Uses normalized location data.
city?stringCity names (e.g., New York,London).
location?stringRaw location text provided by the employer.
company?stringCompany domain names (e.g., example.com,example.org).
ats?stringApplicant tracking system names (e.g., greenhouse,lever).
department?stringNormalized job categories (e.g., Security, Infrastructure). Fetch valid values via /api/facets.
seniority?stringintern, junior, mid, senior, staff, principal, lead, manager, director, exec.
workplace?stringremote, hybrid, onsite.
skills?stringComma-separated skill names (e.g., Python,Kubernetes). Filters jobs matching at least one skill and sets sort=match.
ids?stringFetch specific job IDs in a single request.
israel_only?stringSet to 1 to restrict to Israeli locations (Equivalent to country=IL).
confidence?stringverified (default, confirmed on employer site), best_effort, or all.
"verified""verified""best_effort""all"include_closed?stringSet to 1 to include roles closed within the last 30 days.
include_outdated?stringSet to 1 to include open postings older than 1 year (hidden by default).
min_age_days?integerFilter listings by age in days.
0 <= valuemax_age_days?integerFilter listings by age in days.
0 <= valuesalary_min?integerLowest monthly gross salary in shekels. Keeps listings with no shekel figure unless salary_known=1.
0 <= valuesalary_max?integerHighest monthly gross salary in shekels. Same rule as salary_min.
0 <= valuesalary_known?"1"1 for only listings with a shekel salary figure.
"1"salary_disclosed?"1"1 for only listings whose employer stated the salary, in any currency.
"1"sort?stringage (default), company, title, location, ats, or match.
"age""age""company""title""location""ats""match"dir?stringasc (default; for age, asc means newest first) or desc.
"asc""asc""desc"limit?integerNumber of results per page (1 to 500, default 100).
1 <= value <= 500100offset?integerPagination offset (default 0).
0 <= value0Success.
application/json- response
jobs?array<>total?|Null when the count was deferred.
limit?integeroffset?integermatched_skills?array<string>search?string|nullcurl -X GET 'https://oceanofjobs.com/api/jobs'{ "jobs": [ { "id": "string", "title": "string", "company_domain": "string", "company_name": "string", "logo_url": "string", "ats": "string", "location": "string", "department": "string", "category": "string", "seniority": null, "workplace_type": null, "url": "string", "posted_at": "2019-08-24T14:15:22Z", "first_seen": "2019-08-24T14:15:22Z", "last_seen": "2019-08-24T14:15:22Z", "closed_at": "2019-08-24T14:15:22Z", "reopened_at": "2019-08-24T14:15:22Z", "confidence": "verified", "skills": "string", "salary_text": "string", "salary_is_estimate": 0, "salary_source": "string", "match_score": 0 } ], "total": 0, "limit": 0, "offset": 0, "matched_skills": [ "string" ], "search": "string"}