Remote Jobs API

Looking to fill a job feed and want to use openings listed on Remotely?

Fill your job board with listings from Remotely

Our public API can be used to backfill other job boards.

Anyone can use the interface, but please link back to the URL found on Remotely AND mention Remotely as the original source. Please do not submit Remotely jobs to third-party websites, including but not limited to Jooble, Neuvoo, Google Jobs, or LinkedIn Jobs.

Remotely API

API (Application Programming Interface) is an interface that allows users and applications to access updates to websites in a standardized, computer-readable format.

You can find our public API with all of our jobs here: https://tryremotely.com/api/v1

What format is your API

Our API is in JSON sorted by most recent to least recent.

What fields are supplied in your API?

We supply the following fields in our API:

  • title: Job title
  • description: The full HTML of the job description
  • mainCategory:Job category
  • applicationLink: Link to apply for the position
  • pubDate: Timestamp of when the job was published
  • expiryDate: Timestamp of when the job will expire
  • companyName: Name of the company that is hiring
  • companyLogo: Link to the company's logo
  • jobType: Job type of the position
  • workModel: Work model of the position
  • seniorityLevel: Seniority level of the position
  • minSalary (float or null): Minimum salary for the position (null if no value)
  • maxSalary (float or null): Maximum salary for the position (null if no value)
  • locations (array): Countries where candidates should be located, there can be more than one
  • tags (array): Job tags, there can be more than one

What options are supplied in your API?

We supply the following options in our API:

  • offset: the number of jobs to skip
  • limit: the number of jobs to retrieve (max 100)

For example, https://tryremotely.com/api/v1?limit=100&offset=10 will skip the first 10 jobs, and provide a JSON list of the following 100 jobs.

Is there a maximum number of requests?

We limit API requests due to server capacity, ensuring availability for all users. The limit is 100 requests per 1 minute per IP address, and exceeding it returns a 429 error. Listings change hourly rather than by the second, so cache what you fetch instead of polling. For higher request needs or help in optimizing API calls, please contact us.

Machine-readable specification

The full API is described by an OpenAPI 3.1 specification, which you can hand to a client generator or an AI agent: /openapi.json (also available as /openapi.yaml). Every operation carries a unique operation ID, typed parameters and a response schema.

Endpoints

  • GET /api/v1/job-listings — a page of published listings (listJobListings)
  • GET /api/v1 — the same listing feed on the path the API originally shipped on (listJobListingsLegacy)
  • GET /api/v1/job-listings/{slug} — one listing with its full description (getJobListing)
  • GET /api/v1/companies — companies with at least one open role (listCompanies)
  • GET /api/v1/companies/{slug} — one company profile (getCompany)

What do errors look like?

Every failing request returns JSON rather than an HTML error page, with a stable error_code to branch on (invalid_parameter, not_found, unknown_endpoint or rate_limit_exceeded), a human-readable message, a hint describing how to resolve it, and the HTTP status repeated in the body.

Building an AI agent or integration?

Start with llms.txt, which describes what Remotely covers and when to use it, then the OpenAPI specification above. Pages on this site also serve a markdown representation when you send Accept: text/markdown. Questions about an integration go to our contact page.