# RemoteOK Jobs Scraper (`vashiiq/remoteok-jobs`) Actor

Remote jobs from Remote OK, filtered by keyword, tag, salary and date, with a new-since-last-run mode for alerts.

- **URL**: https://apify.com/vashiiq/remoteok-jobs.md
- **Developed by:** [anthony leblanc](https://apify.com/vashiiq) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.70 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## RemoteOK Jobs Scraper

Get remote job listings from Remote OK as clean rows: title, company, salary range, tags, posting date and links. Filter by keyword, tag, salary and date, or run it on a schedule to get only new jobs.

### What it does

- Reads Remote OK’s public job feed (no login, no scraping of private pages).
- Filters by keywords, tags, a minimum yearly salary and how recently a job was posted.
- Fixes the broken characters in the raw feed and turns descriptions into plain text.
- With "Only new since last run", a scheduled run returns just the jobs it hasn’t seen before.

**Why this one:** Clean text (fixes the broken characters in the raw feed), real keyword and tag filters, salary floor, and a new-since-last-run mode for job alerts.

In our last check, 20 runs over varied inputs succeeded 100% of the time.

### Use cases

- Job alerts for a skill or salary level, sent to Slack, email or a sheet
- Tracking which companies hire remotely and at what pay
- Feeding a job board or newsletter (with a link back to Remote OK for each job)

### Input example

```json
{
  "keywords": [],
  "maxItems": 5
}
```

- keywords: match title, company, tags or description
- tags: Remote OK tags (dev, design, senior...)
- salaryMin: yearly salary floor in USD
- postedWithinDays: only recent jobs
- onlyNew: only jobs not returned by this search before (for schedules)
- includeDescription: add plain-text description

### Output sample

Real results from a run of this Actor:

```json
[
  {
    "id": "1137571",
    "title": "Senior Software Engineer",
    "company": "Klardaten",
    "salaryMin": 80000,
    "salaryMax": 100000,
    "tags": [
      "dev",
      "senior",
      "javascript",
      "typescript",
      "full stack",
      "api"
    ],
    "location": "Remote",
    "postedAt": "2026-10-25T12:34:21.000Z",
    "applyUrl": "https://remoteOK.com/remote-jobs/remote-senior-software-engineer-klardaten-1137571",
    "url": "https://remoteOK.com/remote-jobs/remote-senior-software-engineer-klardaten-1137571",
    "source": "Remote OK",
    "descriptionText": "Klardaten connects DATEV with other software and AI applications. We’re hiring 1–2 senior engineers to own product development, DATEV integrations and automation.\nBased in the EU · Remote or Berlin · Full time · Permanent or contract · Start as soon as possible\nOwn the outcome\nOnce we agree on a general goal, you independently work out what to build and how to deliver it. You investigate the problem, define the scope, make technical decisions and carry the work through implementation, testing, deployment and follow-up.\nWhat you will do\n• Turn general product goals into clear requirements, a practical scope and technical decisions.\n• Build product features, DATEV integrations and automations across frontend and backend.\n• Own testing, deployment and ongoing improvement, including resolving problems in production.\n• Find answers, resolve blockers and keep the founders informed. Raise decisions that need discussion early.\nExamples of goals\n• Make connecting a DATEV environment easier and reduce manual setup.\n• Give customers access to a new DATEV data area through our API and MCP server.\n• Turn a recurring manual workflow into a reliable automation that users can review.\nWhat you bring\n• Strong production TypeScript experience across frontend and backend.\n• Experience independently shipping and maintaining software from a general goal, without detailed specifications, predefined tickets or day-to-day task management.\n• Practical experience with APIs, databases, authentication and reliable error handling for integrations and automations.\n• Testing, deployment and production debugging skills, and the ability to verify AI-generated code and results.\n• Clear written and spoken English for day-to-day collaboration.\nC#/.NET, DATEV integration experience and German are helpful.\nHow we work\nYou work directly with the founders and the team. We provide business context and agree on goals and priorities. You take ownership of reaching them, communicate progress and use your judgment about when to proceed and when a decision needs discussion.\nCompensation\nGross annual salary: €72,000–90,000, depending on experience. Full-time contractors are also welcome.\nPlease mention the word **DESIROUS** and tag RMzIuMTk3LjI0Ni42MA== when applying to show you read the job post completely (#RMzIuMTk3LjI0Ni42MA==). This is a beta feature to avoid spam applicants. Companies can search these words to find applicants that read this and see they're human.",
    "sourceUrl": "https://remoteOK.com/remote-jobs/remote-senior-software-engineer-klardaten-1137571",
    "scrapedAt": "2026-10-27T06:15:06.327Z"
  },
  {
    "id": "1137568",
    "title": "Solutions Engineer",
    "company": "Onebrief",
    "salaryMin": 180000,
    "salaryMax": 220000,
    "tags": [
      "design",
      "ansible",
      "grafana",
      "sys admin",
      "infosec",
      "python",
      "docker",
      "technical",
      "recruiter",
      "customer support",
      "dev",
      "testing",
      "marketing",
      "travel",
      "finance",
      "cloud",
      "exec",
      "senior",
      "ops",
      "sales",
      "golang",
      "engineer",
      "digital nomad"
    ],
    "location": "Remote",
    "postedAt": "2026-10-24T00:00:02.000Z",
    "applyUrl": "https://remoteOK.com/remote-jobs/remote-solutions-engineer-onebrief-1137568",
    "url": "https://remoteOK.com/remote-jobs/remote-solutions-engineer-onebrief-1137568",
    "source": "Remote OK",
    "descriptionText": "Consequential Work. Dedicated People.\nAbout Onebrief\nOnebrief builds collaboration and AI-powered workflow software for military planning and operational coordination.\nMilitary planning is complex by nature, requiring teams to coordinate information, people, and decisions across systems and locations. Onebrief brings planning, collaboration, simulation, and AI into one connected environment, helping teams test strategies, adapt to changing conditions, and make decisions with greater clarity when the stakes are real.\nWe are a distributed team of builders from military, operational, and technology backgrounds who care deeply about improving how important work gets done. Some team members work remotely, while others work directly alongside customers in operational environments around the world.\nFounded in 2019, Onebrief is backed by leading investors including General Catalyst, Battery Ventures, Insight Partners, Sapphire Ventures, and Human Capital. Valued at more than $2 billion, we continue to invest in product innovation, AI capabilities, and team growth.\n\nWhy This Role Exists\nAs a Solutions Engineer at Onebrief, you work where mission, engineering, and compliance meet.\nYou'll own technical solution design and deployment readiness, translating customer requirements into secure, scalable deployment architectures. You'll partner with Platform Engineering, SRE, and our Cybersecurity team to validate infrastructure, configure environments, resolve technical blockers, and successfully transition solutions into production.\nYou’ll work with our go-to-market and customer facing teams to meet with planners, operations officers, and network owners to understand how they work today. You’ll help show them what that work looks like in Onebrief, and then you'll make it real.\nYou connect a staff's planning problem to a live, accredited Onebrief deployment.\n\nWhat You'll Do\nCore responsibilities:\n• Run technical discovery. With Sales and Engineering, map a staff's current workflow and pain points, specifically focusing on their technical constraints: networks, hosting, identity, and integration requirements, especially in multi-network environments.\n\n• Lead deployment engineering. Coordinate the technical delivery of new deployments, including infrastructure validation, network configuration checks, and system readiness verification. Write code to configure new deployments and support new environments.\n\n• Support accreditation. Help create and review security documentation, including STIG checklists and ATO artifacts, alongside our cybersecurity team so deployments are accredited on the customer's timeline.\n\n• Align stakeholders. Get technical stakeholders on both sides to agree on requirements, constraints, and tradeoffs, so customers see value sooner. Ensure those technical requirements are properly translated into contract deliverables.\n\n• Scope integrations. Design how Onebrief Connect fits into a command's ecosystem: APIs, data pipelines, Foundry and Maven Smart System, CUOPS tools, and dashboards.\n\n• Deliver tailored demos.  Lead technical demonstrations and solution validation, partnering with Sales and customer-facing teams to demonstrate Onebrief's technical capabilities, deployment architecture, security posture, and integration options.\n\n• Run pilot deployments. Configure Onebrief in new and untested environments to enable limited uses in support of new sales.\n\n• Turn field experience into patterns. Convert what you learn in deployments into structured workflows and reusable implementation patterns, and feed clear requirements to Product and Engineering.\n\n• Travel 30–50% of the time to customer sites and exercises.\n\nMinimum Qualifications\n• Top Secret clearance with SCI eligibility. \n\n• Bachelor's degree in computer science, engineering, or a related field, or equivalent practical experience\n\n• 4+ years in solutions engineering, infrastructure or deployment engineering, or forward-deployed engineering, working closely with go-to-market and operational teams\n\n• Experience in DoW environments and their security and compliance requirements (RMF, STIGs, ICD 503)\n\n• Strong expertise with containers (Docker) and orchestration (Kubernetes)\n\n• Experience with cloud platforms (AWS, Azure, Google Cloud) and on-premises virtualization (RHEL)\n\n• Solid understanding of networking concepts and protocols, and of security best practices for highly sensitive environments\n\n• Strong presence with customers, from action officers to senior leaders, and clear, concise writing\n\n• Calm under pressure, and focused on forward motion\n\nPreferred Qualifications\n• Proficiency in a scripting language (Python, Go, or Bash)\n\n• Infrastructure as code (Terraform, CloudFormation, Ansible)\n\n• Monitoring and logging tools (Prometheus, Grafana, ELK, Datadog) and service mesh (Istio, Linkerd)\n\n• Experience as a military planner or staff officer, or with mission command systems, Foundry, or Maven Smart System\n\n• Presales experience, including building and delivering demos\n\nNotice to Third Party Recruitment AgenciesPlease note that Onebrief does not accept unsolicited resumes from recruiters or employment agencies. In the absence of an executed Recruitment Services Agreement, there will be no obligation to any referral compensation or recruiter fee. In the event a recruiter or agency submits a resume or candidate without an agreement Onebrief explicitly reserves the right to pursue and hire those candidate(s) without any financial obligation to the recruiter or agency. Any unsolicited resumes, including those submitted to hiring managers, shall be deemed the property of Onebrief.\nPlease mention the word **DESIRING** and tag RMzIuMTk3LjI0Ni42MA== when applying to show you read the job post completely (#RMzIuMTk3LjI0Ni42MA==). This is a beta feature to avoid spam applicants. Companies can search these words to find applicants that read this and see they're human.",
    "sourceUrl": "https://remoteOK.com/remote-jobs/remote-solutions-engineer-onebrief-1137568",
    "scrapedAt": "2026-10-27T06:15:06.442Z"
  }
]
```

**Fields:**

- id, title, company
- salaryMin / salaryMax: numbers, null when not listed
- tags, location, postedAt (ISO date)
- applyUrl, url (the job on Remote OK), source
- descriptionText: plain text, encoding fixed

### Pricing

Pay per result: **$1.70 per 1,000 results**. You pay only for results you get; Apify platform costs are included. Set a maximum charge for a run and the Actor stops cleanly when it's reached, keeping everything collected so far.

### Tips

- Schedule it daily with "Only new since last run" on, and connect an integration to get new jobs by email or Slack.
- Remote OK’s feed holds the latest ~100 jobs, so frequent scheduled runs catch more than one big run.
- Leave "Minimum salary" empty to include jobs that don’t list pay.

### FAQ

**Do I need an account on Remote OK?** No. It only reads public pages and data.

**How many jobs can I get?** Remote OK’s public feed shows its most recent jobs (about 100 at a time). Scheduled runs collect new ones as they appear.

**Can I republish these jobs?** Remote OK’s API terms ask you to link each job back to its Remote OK page (a normal, followed link) and mention Remote OK as the source. Every row includes that link in the url field. Don’t use the Remote OK logo.
**Something broke or a field is missing?** Open an issue on the Issues tab and include your run link. We fix scrapers quickly when sites change.

### Legal

Job data comes from Remote OK (https://remoteok.com). Each result links back to its Remote OK page; please keep that link and credit Remote OK if you republish.

This Actor collects publicly available data only. You're responsible for using it lawfully and in line with Remote OK's terms.

# Actor input Schema

## `keywords` (type: `array`):

Keep jobs that mention any of these in the title, company, tags or description. Leave empty for all jobs.

## `tags` (type: `array`):

Keep jobs with any of these Remote OK tags, e.g. dev, design, marketing, senior.

## `salaryMin` (type: `integer`):

Keep jobs whose listed salary reaches at least this much. Jobs with no salary listed are left out when this is set.

## `postedWithinDays` (type: `integer`):

Keep jobs posted in the last N days.

## `onlyNew` (type: `boolean`):

For scheduled runs: return only jobs this search hasn't returned before.

## `includeDescription` (type: `boolean`):

Add the full job description as plain text.

## `maxItems` (type: `integer`):

Stop after this many jobs. You're only charged for jobs you get.

## `proxyConfiguration` (type: `object`):

Not usually needed; Remote OK's feed is public.

## Actor input object example

```json
{
  "keywords": [
    "typescript",
    "python"
  ],
  "onlyNew": false,
  "includeDescription": true,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

The matching jobs, one row each, with a link back to Remote OK.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "typescript",
        "python"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("vashiiq/remoteok-jobs").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": [
        "typescript",
        "python",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("vashiiq/remoteok-jobs").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "typescript",
    "python"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call vashiiq/remoteok-jobs --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vashiiq/remoteok-jobs"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ZSi98rsMX4uPed5wn/builds/lldb5WpTVNhVyFr1V/openapi.json
