Remote OK API
Free remote work job feed with no key: current listings with company, position, tags, salary range and apply link, subject to a link-back requirement. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Remote OK API?
Remote OK publishes its current job listings as a single JSON array with no API key. Each entry gives the company, position, tags, posting date, salary range where available and an apply URL — with the first element of the array carrying the terms of service rather than a job.
Remote OK is one of the longest-running remote work boards, and its feed is open on the explicit condition that you link back. That condition is not buried in a terms page — it is the literal first element of the response array, a legal notice object sitting where you might reasonably expect the first job. Iterating without checking will put a job card on your site whose title is undefined.
The `tags` array is the most useful field and also the most idiosyncratic. Tags mix technologies, seniority and function in one flat list, and they are applied loosely: the captured example tags a hotel front-office role with `golang`, which tells you not to treat them as a reliable filter on their own. `salary_min` and `salary_max` are present on a decent share of listings, which is rarer than it should be among job feeds. Descriptions arrive as HTML with some mojibake from upstream encoding, so sanitise before rendering.
Quick facts
- Base URL
https://remoteok.com/api- Authentication
- No API key. Remote OK's terms require a followed link back to the job's Remote OK URL and a credit; they state they will suspend access otherwise.
- Rate limit
- No published limit. The feed is a single snapshot — fetch it a few times a day at most.
- Pricing
- Free, conditional on the link-back requirement.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Remote OK API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch the current remote job feed
GET https://remoteok.com/api
curl 'https://remoteok.com/api'const res = await fetch("https://remoteok.com/api");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://remoteok.com/api", timeout=20)
res.raise_for_status()
print(res.json())[
{
"last_updated": 1787283347,
"legal": "API Terms of Service: Please link back (with follow, and without nofollow!) to the URL on Remote OK and mention Remote OK as a source, so we get traffic back from your site. If you do not we'll have to suspend API access.\n\nPlease don't use the Remote OK logo without written permission as it's a registered trademark, please DO use our name Remote OK though."
},
{
"slug": "remote-front-office-executive-radisson-hotel-group-1137008",
"id": "1137008",
"epoch": 1787205565,
"date": "2026-08-20T05:59:25+00:00",
"company": "Radisson Hotel Group",
"company_logo": "",
"position": "Front Office Executive",
"tags": [
"customer support",
"marketing",
"exec",
"golang"
],
"description": "<p>Radisson Hotel Group is one of the world's largest hotel groups with ten distinctive hotel brands, and more than 1,500 hotels in operation and under development in 95+ countries. The Groupâs overarching brand promise is Every Moment Matters with a signature Yes I Can! service ethos.<br><br><br><br>People are at the core of our business success and future. Our people are true Moment Makers and together we bring the culture, spirit, environment and opportunities that empower you to be your best, every day, everywhere, every time. Together, we make Every Moment Matter.<br><br><br><br></p><strong>Job Description<br><br></strong><p>Can you be our guestsâ superhero? Is guest service your ultimate passion? Then why not come and join us at the Radisson Hotel Group to Make Every Moment MParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
(none) | n/a | Optional | The feed takes no parameters and returns the current listing snapshot in full. |
tags | query | Optional | Some deployments accept a tag filter, though the documented behaviour is the unfiltered feed. golang |
Response fields
[0]object- Not a job. The first array element holds `last_updated` and a `legal` string setting out the link-back requirement. Skip it before iterating.
slug / idstring- URL slug and numeric id for the listing.
positionstring- Job title.
company / company_logostring- Employer name and logo URL. The logo is frequently an empty string.
tagsarray- Flat list mixing technology, seniority and function. Applied loosely — do not rely on them as a precise filter.
descriptionstring- Full job description as HTML. Contains upstream encoding artefacts, so sanitise before rendering.
date / epochstring / integer- Posting time as an ISO 8601 string and as Unix seconds.
locationstring- Geographic restriction on the remote role, such as a region or `Worldwide`.
salary_min / salary_maxinteger- Annual salary range in USD, where the employer supplied one.
url / apply_urlstring- The Remote OK listing page and the direct application link. Link back to `url` to satisfy the terms.
What you can build with the Remote OK API
- Show curated remote roles on a niche community site
- Track how remote salary ranges move over time
- Build a tag-based alert for new listings
- Compare which regions employers restrict remote hiring to
Common errors and how to fix them
First job has no title
Element zero is the legal notice, not a listing.
Fix: Skip the first element, or filter for objects that have a `position` field, before rendering.
API access suspended
The terms require a followed link back to Remote OK.
Fix: Add a normal, non-nofollow link to each job's Remote OK `url` and credit them by name.
Garbled characters in descriptions
Upstream encoding artefacts appear in the HTML.
Fix: Normalise the text and sanitise the markup before rendering. Mojibake such as `â` in place of an apostrophe is common.
Irrelevant tags
Tagging is loose and automated.
Fix: Match on `position` and `description` as well as tags if precision matters.
Remote OK API — frequently asked questions
Is the Remote OK API free?
Yes, with no key, but not unconditionally. Their terms require a followed link back to the job on Remote OK and a credit, and they state that access will be suspended otherwise.
Why is the first item not a job?
Element zero is a legal notice object carrying `last_updated` and the terms of service. Skip it before iterating or you will render an empty job card.
Are salary figures reliable?
`salary_min` and `salary_max` are USD annual figures supplied by the employer, and they are present on a good share of listings — but not all, and they are not verified.
Can I filter the feed?
The documented behaviour is a full snapshot with no filtering, so filter client-side. Fetch a few times a day and diff against what you already have.
Tools that pair with this API
Salary to Hourly Calculator
Convert an annual salary to an hourly wage or an hourly rate back to a yearly salary, with monthly, weekly and daily pay equivalents. Free and private.
JobPosting Schema Generator
Generate JobPosting JSON-LD structured data for Google Jobs with salary, location, remote options and employment type. Free, with required-field warnings.
Strip HTML Tags
Remove all HTML tags and convert markup to clean plain text. Decode HTML entities and keep line breaks for block elements like paragraphs and headings.
Remote OK is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.