# Startup Jobs Search: 260,000+ Jobs from 8,000+ Companies (`tiktop/jobs-index`) Actor

Search 260,000+ open jobs at 8,000+ startup and tech companies at once (Greenhouse, Lever and Ashby career boards) by keyword, location, remote, department and posting date. No company list needed. Refreshed daily. New-jobs-only mode for alerts.

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

## Pricing

from $1.50 / 1,000 job returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

Search open jobs across **8,000+ startup and tech company career boards at once**, without knowing which companies to look at. Type a few keywords, pick locations, remote or a posting date, and get every matching job in one clean table: company, title, department, location, remote/hybrid, salary when published, posting date and the apply link.

The index covers companies hiring on **Greenhouse, Lever and Ashby** (about 264,000 open jobs on 6 October 2026) and is rebuilt **every day** from each company's official public job board. Turn on **monitoring mode** and schedule it to get only jobs that are new since your last run.

**Price: $2.00 per 1,000 jobs returned.** You pay only for jobs in your results; set `maxResults` to cap it. Apify's free plan ($5 monthly credit) covers about 2,500 jobs a month.

[![Startup Jobs Search output: data engineer jobs, remote or London, posted in the last 3 days, with company, location, salary and ATS](https://raw.githubusercontent.com/TikTop-Data/apify-store-assets/main/images/jobs-index-output.png)](https://console.apify.com/actors/vavHnolpcrr6x3lu8)

### Questions it answers

- Which startups are hiring machine learning engineers this week?
- What remote sales jobs were posted in the last 3 days?
- Which companies opened data roles in Berlin or London?
- How do I get a daily list of new jobs that match my filters?

### Who uses this

- 📋 **Job boards and newsletters:** fill a niche board (AI, climate, remote, a city) with fresh postings straight from the source.
- 🤝 **Recruiters and agencies:** find every company hiring for the roles you place, the day they post.
- 💼 **Sales teams:** hiring is a buying signal. Find companies opening sales, data or security roles and reach them first.
- 📊 **Market and talent research:** track who is hiring for what, where, and how fast.

### How to use Startup Jobs Search

1. Click **Try for free** (a free Apify account is enough).
2. Type keywords (e.g. `data engineer`), and optionally locations, remote only, departments or a posting-date limit.
3. Set `maxResults` to cap the run (and the cost).
4. Click **Start**. Results come back in seconds, newest first.
5. Download the jobs as JSON, CSV or Excel, or schedule the run with monitoring mode on to get only new jobs every morning.

### Input

| Field | Default | What it does |
|---|---|---|
| `keywords` | machine learning | Title, department or team contains any of these. Empty = all jobs. Short words like "AI" match whole words only. |
| `excludeKeywords` | – | Skip jobs containing any of these (e.g. intern, senior). |
| `locations` | – | Location text to match: city, region or country. "Remote" matches remote jobs too. |
| `remoteOnly` | false | Only jobs flagged remote. |
| `postedWithinDays` | 7 | Only jobs first posted in the last N days. 0 = any date. |
| `departments` | – | Department or team text, e.g. Engineering, Sales, Data. |
| `ats` | all | Limit to Greenhouse, Lever and/or Ashby companies. |
| `companies` | – | Limit to specific companies (board name such as `stripe`, or company name). |
| `excludeCompanies` | – | Skip these companies (e.g. recruiting agencies). |
| `maxResults` | 1000 | Newest jobs first; stop after this many. 0 = no limit. |
| `maxPerCompany` | 0 | At most this many jobs per company, so big employers don't fill your results. 0 = no cap. |
| `includeDescription` | false | Fetch each job's full description live from the company's board. |
| `onlyNewJobs` | false | Monitoring mode: only jobs not returned before with the same filters. |
| `monitorName` | auto | Name for the monitoring memory, to keep it when you change filters. |

Example (the search behind the table above; it returned 48 jobs):

```json
{
  "keywords": ["data engineer", "analytics engineer"],
  "locations": ["remote", "london"],
  "postedWithinDays": 3,
  "maxResults": 500
}
```

### Output

One row per job, newest first. A real row from that run:

```json
{
  "ats": "ashby",
  "companySlug": "solace",
  "companyName": "Solace",
  "jobId": "09c24399-f2f7-4304-ae6a-a448804819c3",
  "title": "Data Engineer",
  "department": "Data",
  "team": "Data",
  "location": "United States",
  "locations": ["United States"],
  "country": "United States",
  "workplaceType": "remote",
  "isRemote": true,
  "employmentType": "FullTime",
  "seniority": null,
  "salary": { "min": 130000, "max": 175000, "currency": "USD", "period": "year", "text": "$130K - $175K" },
  "postedAt": "2026-10-05T22:16:52.889Z",
  "updatedAt": null,
  "url": "https://jobs.ashbyhq.com/solace/09c24399-f2f7-4304-ae6a-a448804819c3",
  "applyUrl": "https://jobs.ashbyhq.com/solace/09c24399-f2f7-4304-ae6a-a448804819c3/application",
  "indexedAt": "2026-10-06T10:37:02.354Z",
  "scrapedAt": "2026-10-06T11:37:59.435Z"
}
```

Lever and Ashby jobs often include `employmentType`, `workplaceType` and a `salary` object (`min`, `max`, `currency`, `period`). With `includeDescription` on, rows also carry `descriptionText` and `descriptionHtml`.

### Example tasks

Ready-made searches you can open and run:

- [AI and machine learning jobs at startups](https://apify.com/tiktop/jobs-index/examples/ai-ml-jobs-at-startups)
- [Remote software engineering jobs](https://apify.com/tiktop/jobs-index/examples/remote-software-engineer-jobs)
- [Data engineer and analytics jobs](https://apify.com/tiktop/jobs-index/examples/data-engineer-jobs)
- [Security engineer jobs](https://apify.com/tiktop/jobs-index/examples/security-engineer-jobs)
- [Product manager jobs at startups](https://apify.com/tiktop/jobs-index/examples/product-manager-jobs)
- [Companies hiring salespeople this week](https://apify.com/tiktop/jobs-index/examples/sales-jobs-hiring-signal)
- [Startup jobs in London](https://apify.com/tiktop/jobs-index/examples/jobs-in-london)
- [Startup jobs in New York](https://apify.com/tiktop/jobs-index/examples/jobs-in-new-york)
- [Startup jobs in Germany](https://apify.com/tiktop/jobs-index/examples/jobs-in-germany)
- [Tech jobs in Dubai and the UAE](https://apify.com/tiktop/jobs-index/examples/jobs-in-dubai-uae)

### Monitoring and alerts

Turn on `onlyNewJobs` and schedule the Actor (for example every morning). The first run returns everything that matches; later runs return only new jobs. Connect Apify's Slack, email, Google Sheets, Zapier or webhook integrations to get the new jobs where you work.

### How fresh is it?

The index is rebuilt daily from each company's public job-board API, so a job usually appears within 24 hours of posting. `indexedAt` on every row shows when. Turn on `includeDescription` to pull the description live at run time. Need one company's jobs right now? Use [ATS Jobs Scraper](https://apify.com/tiktop/ats-jobs-scraper), which reads boards live.

### Coverage and limits

- Greenhouse, Lever and Ashby boards in our company list (it grows as we find new boards). Workday, iCIMS and other systems aren't covered.
- Location matching is text matching on what each company publishes.
- Only job and company data; no personal data about recruiters or employees.

### How much does it cost?

Pay per event:

- **Job result:** $0.002 per job returned ($2.00 per 1,000).
- **Actor start:** $0.00005 per GB of memory (default 1 GB = $0.00005 per run).
- You pay only for jobs in your results. `maxResults` (default 1,000) caps every run at $2.

| What you run | Cost |
|---|---|
| One search returning 50 jobs | about $0.10 |
| A full 1,000-job export | about $2 |
| A daily alert that returns 20 new jobs a day | about $1.20 a month |

Apify's free plan includes $5 of credit every month, enough for about 2,500 jobs. Paid Apify plans get Store discounts of up to 25%.

### FAQ

**Is this legal?** The index is built from each company's public job-board API, the feeds companies publish so their jobs get syndicated. It holds job and company data only, never personal data.

**Which companies are included?** Startups and tech companies hiring on Greenhouse, Lever and Ashby: 8,000+ boards today. Filter with `companies` or `ats` to narrow it down.

**Can AI agents use it?** Yes. Call it through the Apify API, the Python or JavaScript client, or any MCP-compatible AI agent via Apify's MCP server. Inputs are plain filters, so agents can ask questions like "jobs posted this week for security engineers in Germany". For a dedicated agent tool, see [Company Signals MCP](https://apify.com/tiktop/company-signals-mcp).

### Related Actors

- [ATS Jobs Scraper](https://apify.com/tiktop/ats-jobs-scraper): one company's jobs, live, from 8 ATS (including Workable, SmartRecruiters, Recruitee, Personio, Breezy).
- [Company Signals MCP](https://apify.com/tiktop/company-signals-mcp): this index as tools for Claude, ChatGPT and Cursor.
- [Greenhouse Jobs Scraper](https://apify.com/tiktop/greenhouse-jobs-scraper) and [Ashby Jobs Scraper](https://apify.com/tiktop/ashby-jobs-scraper): live single-ATS editions.

### Credits

The starting company list comes from the open-source [job-board-aggregator](https://github.com/Feashliaa/job-board-aggregator) project (MIT licence, © 2026 Riley Dorrington). See `NOTICE`.

# Actor input Schema

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

Job title, department or team must contain at least one of these. Leave empty for all jobs. Short terms such as "AI" or "ML" match whole words only.

## `excludeKeywords` (type: `array`):

Skip jobs whose title, department or team contains any of these (e.g. intern, senior).

## `locations` (type: `array`):

City, region or country text to match, e.g. London, Germany, New York. "Remote" also matches remote-flagged jobs.

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

Return only jobs flagged as remote.

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

Only jobs first posted in the last N days. 0 = any date.

## `departments` (type: `array`):

Department or team text to match, e.g. Engineering, Sales, Marketing, Data.

## `ats` (type: `array`):

Limit to companies on these applicant tracking systems. Empty = all.

## `companies` (type: `array`):

Limit to these companies: board name (e.g. stripe, openai) or company name. Empty = every company in the index.

## `excludeCompanies` (type: `array`):

Skip these companies (board name or company name), e.g. recruiting agencies you don't want.

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

Stop after this many jobs (newest first). 0 = no limit. You pay only for jobs returned.

## `maxPerCompany` (type: `integer`):

Keep at most this many jobs per company so a few big employers don't fill your results. 0 = no cap.

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

Fetch each matched job's full description live from the company's board. Slower; same price.

## `onlyNewJobs` (type: `boolean`):

Return only jobs not returned by a previous run with the same filters. Schedule it daily for alerts. The first run returns everything that matches.

## `monitorName` (type: `string`):

Optional name for the monitoring memory, to keep it when you change filters or share it between schedules.

## Actor input object example

```json
{
  "keywords": [
    "machine learning"
  ],
  "remoteOnly": false,
  "postedWithinDays": 7,
  "maxResults": 1000,
  "maxPerCompany": 0,
  "includeDescription": false,
  "onlyNewJobs": false
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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": [
        "machine learning"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tiktop/jobs-index").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": ["machine learning"] }

# Run the Actor and wait for it to finish
run = client.actor("tiktop/jobs-index").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": [
    "machine learning"
  ]
}' |
apify call tiktop/jobs-index --silent --output-dataset

```

## MCP server setup

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

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/vavHnolpcrr6x3lu8/builds/Tm1ByljyyMh4k8RT3/openapi.json
