Remotive API: Free Remote Jobs Endpoint, Terms & Examples
TL;DR
Remotive's public API is a free, keyless GET endpoint at https://remotive.com/api/remote-jobs that returns Remotive's remote job listings, with optional category, company_name, search and limit parameters. Jobs are delayed by 24 hours, and Remotive advises fetching at most 4 times a day and blocks more than 2 requests a minute. Its terms require you to link back to the job's Remotive URL and name Remotive as the source, and forbid submitting Remotive jobs to third-party sites such as Google Jobs, LinkedIn Jobs or Jooble. A private paid API is available, with a starting budget of $5,000 a month according to the API's own legal notice.
On this page
The Remotive API is one free endpoint with no key: send GET https://remotive.com/api/remote-jobs and you get Remotive's remote job listings as JSON, with optional category, company_name, search and limit parameters. The catch is in the rules: jobs are delayed by 24 hours, Remotive advises fetching no more than 4 times a day, and its terms require a link back to Remotive and forbid passing the jobs on to sites like Google Jobs or LinkedIn Jobs.
Remotive is a remote-only job board. Its API exists so developers can "share our jobs further" and send traffic back to Remotive, and the terms are written around that goal. This guide covers the endpoint, the full response, working code, and the terms that decide whether it fits your product. Everything here was checked against Remotive's API documentation and live responses on November 1, 2026.
At a Glance
| Endpoint | GET https://remotive.com/api/remote-jobs |
| Auth | None, no key or signup |
| Filters | category, company_name, search, limit |
| Freshness | Jobs delayed by 24 hours |
| Rate limit | Advised max 4 requests a day; more than 2 a minute is blocked |
| Attribution | Link to the job's Remotive URL and name Remotive as the source |
| Redistribution | Don't submit jobs to third-party sites (Google Jobs, LinkedIn Jobs, Jooble, Neuvoo) |
| Paid option | Private API; starting budget $5,000 a month |
Getting Access
There's no signup. Remotive's documentation lives in its GitHub repository (github.com/remotive-com/remote-jobs-api), and remotive.com/api-documentation redirects there. The API moved from remotive.io to remotive.com, so update any old code still calling the remotive.io endpoint.
The Endpoint
curl "https://remotive.com/api/remote-jobs"
# Filtered examples from Remotive's docs
curl "https://remotive.com/api/remote-jobs?category=software-dev"
curl "https://remotive.com/api/remote-jobs?search=front%20end"
curl "https://remotive.com/api/remote-jobs?company_name=remotive&limit=5"Category names and slugs come from a second endpoint, GET https://remotive.com/api/remote-jobs/categories, which returns objects with id, name and slug (for example software-development).
Request Parameters
| Parameter | Notes |
|---|---|
category | Category name or slug, from the categories endpoint |
company_name | Case-insensitive partial match on the company name |
search | Case-insensitive partial match on title and description |
limit | Maximum number of jobs to return; default is all |
Without parameters, the docs say you get all active listings, sorted by publication date.
One thing to check in your own integration: when we called the API on November 1, 2026, every request returned the same 12 jobs, whatever category, search or limit we sent, and the response headers showed it was being served from a CDN cache. Read job-count and check that results actually match your filter before you trust them, and filter client-side if they don't.
The Response
The response starts with two notices, then the counts and a jobs array. Values below are from a live response, trimmed:
{
"00-warning": "Remotive main domain moved to remotive.com ! ...",
"0-legal-notice": "Legal warning - Hey, thanks for using Remotive's API, we appreciate it! ...",
"job-count": 12,
"total-job-count": 12,
"jobs": [
{
"id": 2091165,
"url": "https://remotive.com/remote-jobs/software-development/full-stack-developer-2091165",
"title": "Full-Stack Developer",
"company_name": "Fluence International, Inc.",
"company_logo": "https://remotive.com/job/2091165/logo",
"category": "Software Development",
"tags": ["javascript", "react", "AWS"],
"job_type": "contract",
"publication_date": "2026-10-29T18:22:41",
"candidate_required_location": "Worldwide",
"salary": "$3.5k–$5k/month",
"description": "<p>...</p>"
}
]
}| Field | What it is |
|---|---|
id | Remotive's job ID |
url | The job's page on Remotive; this is the link the terms require you to use |
title | Job title |
company_name, company_logo | Company name and a logo URL hosted by Remotive |
category | Remotive category name |
tags | Free-form skill and topic tags |
job_type | Employment type, such as contract; the docs say it's optional and often empty |
publication_date | ISO timestamp without a timezone |
candidate_required_location | Where candidates must be based, as text, such as Worldwide |
salary | Free text when present, such as $3.5k–$5k/month; the docs say it's usually a yearly USD range |
description | Full description as HTML |
Code Examples
JavaScript (Node 18+)
async function fetchRemotiveJobs({ category, search } = {}) {
const params = new URLSearchParams();
if (category) params.set("category", category);
if (search) params.set("search", search);
const res = await fetch(`https://remotive.com/api/remote-jobs?${params}`);
if (!res.ok) throw new Error(`Remotive API error: ${res.status}`);
const body = await res.json();
return { count: body["job-count"], jobs: body.jobs };
}
// Run this from a scheduled job (a few times a day), not on every page view.
const { count, jobs } = await fetchRemotiveJobs({ category: "software-development" });
for (const job of jobs) {
// Attribution: link to job.url and name Remotive as the source.
console.log(`${job.title} at ${job.company_name} (via Remotive: ${job.url})`);
}Python
import requests
def fetch_remotive_jobs(category: str | None = None, search: str | None = None) -> list[dict]:
params = {}
if category:
params["category"] = category
if search:
params["search"] = search
res = requests.get("https://remotive.com/api/remote-jobs", params=params, timeout=30)
res.raise_for_status()
return res.json()["jobs"]
jobs = fetch_remotive_jobs(category="software-development")
for job in jobs:
print(job["title"], "|", job["company_name"], "|", job["candidate_required_location"], "|", job["url"])Paging Through Results
There's no pagination. One call returns every matching job (or up to limit), with job-count telling you how many came back. Because Remotive advises at most 4 calls a day, the usual pattern is a scheduled fetch that stores jobs in your own database, dedupes on id, and serves your pages from there.
Errors
Remotive doesn't document error codes. Its docs do say that excessive requests, more than 2 a minute, will be blocked, so if calls start failing, stop and check your schedule before retrying.
Limits and Pricing
The public API is free. The documented limits are:
- 24-hour delay. "Jobs displayed are delayed by 24 hours," so Remotive gets credit for jobs before they spread to other platforms.
- 4 requests a day. The docs say a few fetches a day is enough and advise a maximum of 4.
- 2 requests a minute. More than that "will be blocked."
For more, Remotive offers a private, paid API by email. The legal notice inside every API response puts the starting budget at $5,000 a month.
Terms and Attribution
These rules come from Remotive's API page and the legal notice in every response. Breaking them can cost you access: "If you don't do that, we'll terminate your API access."
- Link back and credit. "Please link back to the URL found on Remotive AND mention Remotive as a source."
- No passing jobs on. "Please do not submit Remotive jobs to third Party websites, including but not limited to: Jooble, Neuvoo, Google Jobs, LinkedIn Jobs." If your job pages publish JobPosting structured data for Google, leave Remotive jobs out of it.
- No email gates. "Displaying our jobs in order to collect signups/email addresses to show a listing constitutes a breach of our terms of services."
What the Remotive API Doesn't Give You
- Fresh jobs. Everything is at least 24 hours old.
- Volume or frequent polling. 4 calls a day is the advised ceiling.
- Non-remote jobs. Remotive only lists remote roles.
- Structured salary or location.
salaryandcandidate_required_locationare free text. - Direct employer apply links. The terms require you to send users to the job's Remotive URL.
- Freedom to syndicate. You can't pass the jobs to Google Jobs, LinkedIn Jobs or other third-party sites.
Alternatives
- CleanJobData vs Remotive: a side-by-side with an API over employer ATS platforms and career sites that covers remote and on-site jobs, with a filterable remote flag.
- The Arbeitnow API: another free, keyless feed, focused on Europe.
- The best free job APIs in 2026: every free option we've tested.
FAQ
Is the Remotive API free?
Yes. The public endpoint at remotive.com/api/remote-jobs is free and needs no key. A private paid API is available by email, with a starting budget of $5,000 a month according to the API's legal notice.
Does the Remotive API need an API key?
No. There's no key, header or signup for the public API.
How often can I call the Remotive API?
Remotive advises at most 4 requests a day and blocks more than 2 requests a minute. Jobs are delayed by 24 hours anyway, so a few scheduled fetches a day is enough.
Do I have to credit Remotive?
Yes. You must link to the job's URL on Remotive and mention Remotive as the source, or Remotive says it will terminate your API access.
Can I show Remotive jobs in Google Jobs or on LinkedIn?
No. Remotive's terms say not to submit its jobs to third-party sites, naming Jooble, Neuvoo, Google Jobs and LinkedIn Jobs. Since Google Jobs is named, keep Remotive jobs out of any JobPosting structured data you publish.
Is there a remote jobs API without the 24-hour delay?
CleanJobData's Pro plan and above see new jobs as soon as they're indexed (Starter lists them 24 hours later), with remote=true or remote_type to filter remote roles, GET requests and a Bearer token. Its listings come from employer ATS platforms and career sites rather than Remotive's board. See the Jobs API reference or try it in the playground.