# Remote Tech Jobs Aggregator — Salary, Visa & Stack Filter (`ramzi.slim201/remote-tech-jobs-aggregator`) Actor

Scrape high-paying remote tech jobs from Greenhouse, Lever & Workable. Filter by salary ($100k-$500k+), visa sponsorship (H1B, TN, E3, O1), equity, and tech stack. Built for recruiters, job boards and relocation agencies.

- **URL**: https://apify.com/ramzi.slim201/remote-tech-jobs-aggregator.md
- **Developed by:** [Ramzi TECH](https://apify.com/ramzi.slim201) (community)
- **Categories:** Lead generation, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🎯 Remote Tech Jobs Aggregator — Salary, Visa & Stack Filter

[![Apify Actor](https://img.shields.io/badge/Apify-Published-blue)](https://apify.com/store)
[![PPE Pricing](https://img.shields.io/badge/Pricing-Pay%20Per%20Event-green)](https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event)
[![Free Tier](https://img.shields.io/badge/Free%20tier-50%20results%2Fmonth-lightgrey)]()
[![Node 18+](https://img.shields.io/badge/node-%3E%3D18-brightgreen)]()
[![License: MIT](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)

> **Stop refreshing 12 job boards. Get the exact filter you care about — $150k+, H1B sponsorship, your tech stack — in one CSV.**

### 📑 Table of contents
- [What you get](#what-you-get)
- [Perfect for](#perfect-for)
- [Pricing](#pricing)
- [Filters](#filters)
- [Output example](#output-example)
- [Quick start](#quick-start)
- [Use cases](#use-cases)
- [Coverage](#coverage)
- [FAQ](#faq)
- [Author](#author)

### What you get

`Remote Tech Jobs Aggregator` pulls **open job listings** from **75+ Greenhouse and Lever boards** (Stripe, Vercel, Anthropic, Databricks, OpenAI, Figma, Linear, Notion, Cloudflare, Supabase, Ramp, Mercury, Plaid, Reddit, Discord, plus more) and applies the filters that *recruiters and senior candidates actually care about*:

- ✅ **Salary-based filtering** — drop jobs whose max salary falls below your band
- ✅ **Visa sponsorship detection** — surfaces H1B / TN / E3 / O1 / Green Card mentions via description parsing
- ✅ **Remote-only toggle**
- ✅ **Tech stack tagging** — each job is auto-labelled with detected tags (react, kubernetes, rust, ml, python, go, aws, gcp, etc.)
- ✅ **Deduplicated** by canonical apply URL
- ✅ **100% public data** — no auth, no browser, ~95 % margin on hosting

This is the exact feed a niche job board, a B2B SaaS pipeline, or a relocations agency needs.
<br/>

### Perfect for

| Buyer | What they do with this Actor |
|---|---|
| **Recruiters** | Pinpoint senior remote roles above their clients' thresholds daily. |
| **Job boards** | Auto-populate "Remote AI/ML Jobs >$180k" / "DevOps with H1B" categories. |
| **Relocation agencies** | Catalog every H-1B-sponsoring company hiring remote-US for client pipelines. |
| **Senior+ job seekers** | Replace 12 bookmarks with one daily email. |
| **Market researchers** | Salary benchmarks across stacks, geographies, and seniority. |

<br/>

### Pricing

| Tier | Cost |
|---|---|
| **Free** | 50 jobs returned / month |
| **Pay-Per-Result** | **$0.01 / job returned** → $10 per 1,000 jobs |
| **Subscriptions?** | None. Pay only for what you query. |

Apify handles billing and infrastructure. **80 % of revenue is net to your wallet** after platform costs.

<br/>

### Filters

| Input | Type | Default | Notes |
|---|---|---|---|
| `keywords` | string[] | `[]` | All must match (AND). Inside title or content. |
| `minSalary` | integer | `150000` | Drop jobs whose max salary falls below this. |
| `visaSponsorship` | boolean | `false` | Only jobs whose description mentions H1B / TN / E3 / O1 / GC / relocation. |
| `remoteOnly` | boolean | `true` | Drop jobs that don't say "remote" / "worldwide" / "WFA". |
| `maxResults` | integer | `500` | Hard cap. Useful for free-tier sampling. |
| `sources` | string[] | `["greenhouse"]` | Greenhouse, Lever, or Workable. |

<br/>

### Output example

```json
{
  "id": "gh_anthropic_4616971008",
  "title": "Research Engineer — Pre-training",
  "company": "anthropic",
  "location": "San Francisco · Remote-Friendly",
  "salaryMin": 350000,
  "salaryMax": 350000,
  "currency": "USD",
  "remote": true,
  "visaSponsorship": true,
  "techStack": ["python", "rust", "kubernetes", "aws", "ml"],
  "departments": ["AI Research"],
  "applyUrl": "https://job-boards.greenhouse.io/anthropic/jobs/4616971008",
  "postedAt": "2026-04-08T18:43:26Z",
  "source": "greenhouse"
}
````

Outputs as JSON, CSV, Excel, or via webhook to your CRM / Sheets / Slack / Notion.

<br/>

### Quick start

1. **Open the Actor** in [Apify Console](https://console.apify.com/actors).
2. Adjust filters (e.g. `minSalary=200000`, `keywords=["kubernetes"]`, `visaSponsorship=true`).
3. Click **Start**.
4. Download results, pipe to your tools, or schedule daily runs for a fresh feed.

No API key, no setup, no cookies. ~30 seconds per query.

<br/>

### Use cases

#### Recruiter

*"Every day this Actor sends me 25 senior Kubernetes roles with TN-visa over $200k — exactly the kind of lead my candidates look for."*

#### Niche job board

*"We populate five 'Remote AI/ML Jobs Above $180k' sub-boards from this Actor's daily output."*

#### Relocation consultancy

*"The Actor feeds my CRM with every H-1B-sponsoring company hiring remote in the US."*

#### Salary research

*"I scraped 5,000 senior backend roles and charted the $/year distribution across stacks."*

<br/>

### Coverage

- **Greenhouse**: Stripe, Vercel, Anthropic, OpenAI, Databricks, Snowflake, Linear, Figma, Notion, Supabase, Plaid, Ramp, Mercury, Affirm, Brex, Coinbase, Discord, Reddit, Twitch, Dropbox, Box, Datadog, MongoDB, Fastly, Cloudflare, GitLab, and 50+ others.
- **Lever**: Netflix, Plaid, and select verified boards. (Most companies gate Lever behind their own domains — we surface every publicly-listed one.)
- **Workable**: experimental; handful of verified tokens.

We refresh the company list quarterly based on Y Combinator cohorts, Forbes Cloud 100, Crunchbase top-funded, and Greenhouse / Lever public rosters.

<br/>

### FAQ

<details>
<summary><strong>Is this allowed legally?</strong></summary>
Yes. We only pull listings from boards with public, unauthenticated JSON endpoints that the companies publish by choice. We do not bypass paywalls or breach any ToS. You re-use your data under fair-use terms.
</details>

<details>
<summary><strong>How often should I run it?</strong></summary>
For active job boards, once a day is plenty. Most boards re-publish updates every 12–24 h.
</details>

<details>
<summary><strong>Can I get a custom list of companies?</strong></summary>
Yes — DM the author below. Custom lists are typically delivered within 24 h.
</details>

<details>
<summary><strong>Why isn't salary always present?</strong></summary>
Roughly 35 % of boards publish salary ranges publicly. The Actor parses every common format ($175k-$350k, "175,000 to 350,000", "from $200k", etc.) and tags remaining roles for "salary not posted".
</details>

<br/>

### Author

Built by **Ramzi Slim** — independent developer shipping narrow, high-ROI web scrapers.

- 🪙 Profile: [apify.com/ramzi-slim](https://apify.com/ramzi-slim)
- 📬 DM me with which niche needs an API you can actually call — I read every message.

<sub>Like this Actor? 🧡 Try the [SEC Biotech Filings Aggregator](./../sec-filings-scraper/) sibling and leave a star. They share the same design principles.</sub>

# Actor input Schema

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

Filter job titles and content. All keywords must match (AND). Leave empty for all jobs.

## `minSalary` (type: `integer`):

Drop jobs whose maximum listed salary is below this. Set 0 to disable.

## `visaSponsorship` (type: `boolean`):

Filter to jobs that mention H1B, TN, E3, O1, Green Card or relocation.

## `remoteOnly` (type: `boolean`):

Drop jobs that do not explicitly mention remote / work-from-home.

## `maxResults` (type: `integer`):

Cap the number of jobs returned. Useful for free-tier sampling.

## `sources` (type: `array`):

Pick which ATS boards to pull from. Greenhouse is the largest.

## Actor input object example

```json
{
  "keywords": [
    "react",
    "kubernetes"
  ],
  "minSalary": 150000,
  "visaSponsorship": false,
  "remoteOnly": true,
  "maxResults": 500,
  "sources": [
    "greenhouse"
  ]
}
```

# 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": [
        "react",
        "kubernetes"
    ],
    "sources": [
        "greenhouse"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ramzi.slim201/remote-tech-jobs-aggregator").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": [
        "react",
        "kubernetes",
    ],
    "sources": ["greenhouse"],
}

# Run the Actor and wait for it to finish
run = client.actor("ramzi.slim201/remote-tech-jobs-aggregator").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "react",
    "kubernetes"
  ],
  "sources": [
    "greenhouse"
  ]
}' |
apify call ramzi.slim201/remote-tech-jobs-aggregator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ramzi.slim201/remote-tech-jobs-aggregator",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Remote Tech Jobs Aggregator — Salary, Visa & Stack Filter",
        "description": "Scrape high-paying remote tech jobs from Greenhouse, Lever & Workable. Filter by salary ($100k-$500k+), visa sponsorship (H1B, TN, E3, O1), equity, and tech stack. Built for recruiters, job boards and relocation agencies.",
        "version": "0.1",
        "x-build-id": "bVZBQgDbOFcmzZlSp"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ramzi.slim201~remote-tech-jobs-aggregator/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ramzi.slim201-remote-tech-jobs-aggregator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ramzi.slim201~remote-tech-jobs-aggregator/runs": {
            "post": {
                "operationId": "runs-sync-ramzi.slim201-remote-tech-jobs-aggregator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ramzi.slim201~remote-tech-jobs-aggregator/run-sync": {
            "post": {
                "operationId": "run-sync-ramzi.slim201-remote-tech-jobs-aggregator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keywords": {
                        "title": "Tech keywords",
                        "type": "array",
                        "description": "Filter job titles and content. All keywords must match (AND). Leave empty for all jobs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "minSalary": {
                        "title": "Minimum salary (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Drop jobs whose maximum listed salary is below this. Set 0 to disable.",
                        "default": 150000
                    },
                    "visaSponsorship": {
                        "title": "Only jobs with visa sponsorship",
                        "type": "boolean",
                        "description": "Filter to jobs that mention H1B, TN, E3, O1, Green Card or relocation.",
                        "default": false
                    },
                    "remoteOnly": {
                        "title": "Remote jobs only",
                        "type": "boolean",
                        "description": "Drop jobs that do not explicitly mention remote / work-from-home.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Cap the number of jobs returned. Useful for free-tier sampling.",
                        "default": 500
                    },
                    "sources": {
                        "title": "Sources to scrape",
                        "type": "array",
                        "description": "Pick which ATS boards to pull from. Greenhouse is the largest.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "greenhouse",
                                "lever",
                                "workable"
                            ],
                            "enumTitles": [
                                "Greenhouse",
                                "Lever (limited)",
                                "Workable (limited)"
                            ]
                        },
                        "default": [
                            "greenhouse"
                        ]
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
