Remotive API: Free Remote Jobs Endpoint, Terms & Examples

CleanJobData Engineering

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

EndpointGET https://remotive.com/api/remote-jobs
AuthNone, no key or signup
Filterscategory, company_name, search, limit
FreshnessJobs delayed by 24 hours
Rate limitAdvised max 4 requests a day; more than 2 a minute is blocked
AttributionLink to the job's Remotive URL and name Remotive as the source
RedistributionDon't submit jobs to third-party sites (Google Jobs, LinkedIn Jobs, Jooble, Neuvoo)
Paid optionPrivate 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

ParameterNotes
categoryCategory name or slug, from the categories endpoint
company_nameCase-insensitive partial match on the company name
searchCase-insensitive partial match on title and description
limitMaximum 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>"
    }
  ]
}
FieldWhat it is
idRemotive's job ID
urlThe job's page on Remotive; this is the link the terms require you to use
titleJob title
company_name, company_logoCompany name and a logo URL hosted by Remotive
categoryRemotive category name
tagsFree-form skill and topic tags
job_typeEmployment type, such as contract; the docs say it's optional and often empty
publication_dateISO timestamp without a timezone
candidate_required_locationWhere candidates must be based, as text, such as Worldwide
salaryFree text when present, such as $3.5k–$5k/month; the docs say it's usually a yearly USD range
descriptionFull 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. salary and candidate_required_location are 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

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.