# Y Combinator Startup Jobs Scraper (`worthwhile_quinsy/y-combinator-startup-jobs-scraper`) Actor

Every open job at nearly 700 Y Combinator startups, straight from their career pages, with YC batch, industry and team size. Filter by role, country, remote.

- **URL**: https://apify.com/worthwhile_quinsy/y-combinator-startup-jobs-scraper.md
- **Developed by:** [Eki Soka](https://apify.com/worthwhile_quinsy) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 job rows

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

## Y Combinator Startup Jobs Scraper: Open Roles at Nearly 700 YC Companies

Get **12,000+ jobs at Y Combinator companies** from the career pages of 1,000+ tech companies and startups (Greenhouse, Ashby, Lever, Workable,
SmartRecruiters and more), refreshed every day. One clean row per job with title, company, location, countries,
remote flag, department, seniority, tech stack, salary when published, dates and the apply link.

![Output preview: one row per result](https://raw.githubusercontent.com/ekkysoka7-maker/job-market-data-examples/main/images/jobs-preview.png)

Built for people who want to join a startup, recruiters, investors and founders tracking the YC ecosystem. No browser, no login, no proxies: results come from a daily database built from public job
board feeds, so a run takes seconds.

### What you can do with it

- Find every open role at YC companies, with batch (e.g. Winter 2024), industry and team size
- Filter YC jobs by role, country, remote, seniority, tech stack or salary
- Track which YC startups are scaling hiring (a growth and fundraising signal)
- Build a YC job board, newsletter or daily alert

### Input

All filters are optional: **job title keywords**, **exclude keywords**, **locations**, **countries**, **remote only**,
**departments**, **seniority**, **technologies**, **companies**, **posted within / new within (days)**, **only jobs
with salary**, **include description** and **max results**.

```json
{"keywords": ["engineer"], "remoteOnly": true, "maxResults": 100}
```

For a daily alert, schedule the Actor with `"newWithinDays": 1` so you only get jobs that are new since yesterday.

### Output

```json
{
  "title": "...",
  "company": "...",
  "company_batch": "...",
  "company_industry": "...",
  "company_team_size": "...",
  "location": "San Francisco, CA",
  "countries": ["US"],
  "is_remote": false,
  "seniority": "entry",
  "department": "Engineering",
  "technologies": ["Python", "AWS"],
  "salary_min": 120000,
  "salary_max": 150000,
  "salary_currency": "USD",
  "salary_period": "year",
  "published_at": "2026-10-01T09:00:00+00:00",
  "first_seen": "2026-10-01",
  "url": "https://..."
}
```

### Pricing

Pay per result: **$0.002 per job**, less with an Apify subscription (Bronze $0.0018, Silver $0.0015, Gold $0.0012). No subscription and no fixed fee; set
**Max results** or a maximum cost per run to cap spend. 100 jobs cost about $0.20.

### FAQ

**Is this affiliated with Y Combinator?** No. It lists public job postings from companies in Y Combinator's public company directory, read from each company's own job board.

**How fresh is the data?** The database is refreshed every morning from each company's own job board, so there are
no reposts or expired ads.

**Can I get the full description?** Turn on **Include description** (plain text, up to ~4,000 characters).

### Data and use

Only public job-posting data is collected. No personal data about candidates. Please respect the terms of the sites
you use the data on and applicable laws.

### What it costs

| Example | Cost |
| --- | --- |
| 100 jobs | about $0.20 |
| 1,000 jobs | about $2.00 |
| a daily alert with ~20 new jobs for a month | about $1.20 |

You only pay for rows you get. Set **Max results** (or a maximum cost per run in Apify) to cap spend. Apify's free plan includes monthly credit, so you can try it at no cost. Apify subscribers get automatic Store discounts on some events.

### Use it from code, no-code tools or AI agents

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("worthwhile_quinsy/y-combinator-startup-jobs-scraper").call(run_input={'keywords': ['engineer'], 'remoteOnly': True, 'maxResults': 100})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript / Node.js** (`npm install apify-client`):

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('worthwhile_quinsy/y-combinator-startup-jobs-scraper').call({"keywords": ["engineer"], "remoteOnly": true, "maxResults": 100});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**One HTTP call** (returns the rows directly):

```bash
curl -X POST 'https://api.apify.com/v2/acts/worthwhile_quinsy~y-combinator-startup-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"keywords": ["engineer"], "remoteOnly": true, "maxResults": 100}'
```

**No-code:** connect it to **Make, Zapier, n8n, Google Sheets, Slack** or a **webhook** from the Integrations tab, and run it on a **Schedule** (for example every morning).

**AI agents (MCP):** use it as a tool in Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server: `https://mcp.apify.com?tools=worthwhile_quinsy/y-combinator-startup-jobs-scraper`. Your agent can then ask for live job data in plain language. Use this tool when the user asks for jobs at Y Combinator startups.

### More tools from the same job-data suite

All of these read the same daily database of jobs from company career pages, so results are consistent across tools.

| Actor | What it gives you |
| --- | --- |
| [Company Jobs Search + Hiring Signals](https://apify.com/worthwhile_quinsy/ats-jobs-search) | Search all jobs in the database, check your own list of companies, or get per-company hiring signals. |
| [Remote Jobs API](https://apify.com/worthwhile_quinsy/remote-jobs-api) | Only remote jobs, ready for job boards, newsletters and alert bots. |
| [Companies Hiring by Tech Stack](https://apify.com/worthwhile_quinsy/companies-hiring-by-tech-stack) | B2B buying signals: which companies are hiring for the tools you sell into. |
| [Tech Salary Data API](https://apify.com/worthwhile_quinsy/tech-salary-data-api) | Salary benchmarks (median, P25, P75) from fresh job postings with published pay. |
| [Company Job Alerts](https://apify.com/worthwhile_quinsy/company-job-alerts) | New jobs from any list of company career pages, every day. |
| [Company Hiring Trends](https://apify.com/worthwhile_quinsy/company-hiring-trends) | Which companies are ramping up hiring, and which are slowing down. |
| [ATS Detector](https://apify.com/worthwhile_quinsy/ats-detector) | Which applicant tracking system (Greenhouse, Lever, Ashby...) a company uses, plus its career page. |
| [Greenhouse Jobs Scraper](https://apify.com/worthwhile_quinsy/greenhouse-jobs-scraper) | All open jobs from any Greenhouse job board, or search every Greenhouse board we track. |
| [Lever Jobs Scraper](https://apify.com/worthwhile_quinsy/lever-jobs-scraper) | All open jobs from any Lever job board, or search every Lever board we track. |
| [Ashby Jobs Scraper](https://apify.com/worthwhile_quinsy/ashby-jobs-scraper) | All open jobs from any Ashby job board, or search every Ashby board we track. |
| [Workable Jobs Scraper](https://apify.com/worthwhile_quinsy/workable-jobs-scraper) | All open jobs from any Workable job board, or search every Workable board we track. |
| [New Grad & Internship Jobs Scraper](https://apify.com/worthwhile_quinsy/new-grad-internship-jobs-scraper) | Internships, co-ops, new-grad and junior roles from 1,000+ tech company career pages. |
| [AI & Machine Learning Jobs Scraper](https://apify.com/worthwhile_quinsy/ai-machine-learning-jobs-scraper) | AI, ML, LLM and data science roles from 1,000+ tech company career pages. |
| [Workday Jobs Scraper](https://apify.com/worthwhile_quinsy/workday-jobs-scraper) | All open jobs from any company's Workday careers site (myworkdayjobs.com), in seconds. |

### Free data, charts and code examples

- [Job Market Data website](https://ekkysoka7-maker.github.io/job-market-data-examples/): free startup salary pages for 137 roles, the companies hiring fastest and ATS market share, built from this database.
- [Free CSV snapshot and notebook on Kaggle](https://www.kaggle.com/datasets/ekkysoka/startup-hiring-and-salary-benchmarks-2026).
- [Code examples on GitHub](https://github.com/ekkysoka7-maker/job-market-data-examples): Python, JavaScript, Google Sheets, n8n, Make, Zapier and MCP setups.

### Questions and feedback

Found a bug, need another filter, field or ATS? Open an **Issue** on this Actor's page; issues are answered quickly. If it saved you time, a short **review** helps other people find it.

# Actor input Schema

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

Match any of these in the job title (case-insensitive), e.g. 'data engineer', 'account executive'. Empty = all jobs.

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

Drop jobs whose title contains any of these, e.g. 'intern', 'senior'.

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

Keep jobs whose location contains any of these, e.g. 'London', 'Germany', 'Singapore', 'Remote'.

## `countries` (type: `array`):

Country names or 2-letter codes, e.g. 'Germany', 'US', 'Singapore'. Derived from the posting's location.

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

Only jobs marked or described as remote.

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

Keep jobs whose department or team contains any of these, e.g. 'Engineering', 'Sales'.

## `seniority` (type: `array`):

Heuristic level from the job title.

## `technologies` (type: `array`):

Keep jobs that mention any of these tools in the title or description, e.g. 'Snowflake', 'Kubernetes', 'Salesforce'.

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

Limit to companies already in the database whose name, board or website contains any of these words.

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

Jobs mode: only jobs published in the last N days (falls back to the date we first saw the job).

## `newWithinDays` (type: `integer`):

Only jobs that appeared in the database in the last N days (for daily alerts use 1).

## `salaryOnly` (type: `boolean`):

Jobs mode: only postings that publish a salary range.

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

Jobs mode: add the plain-text job description (up to ~4,000 characters) to each row.

## `includeDuplicates` (type: `boolean`):

Large employers often post the same role several times (same title and location). By default you get one row per company + title + location, with similar_postings telling how many identical postings it stands for. Turn this on to get every posting.

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

Cap how many jobs one company can contribute (0 = no cap). Useful when a few large employers would otherwise fill the results.

## `onlyNewSinceLastRun` (type: `boolean`):

Remember the jobs this search already returned (in your own Apify account) and return only new ones on the next run. Ideal for scheduled alerts: you never pay twice for the same job.

## `searchInDescription` (type: `boolean`):

Match keywords in the job description too (e.g. a tool name like 'Snowflake').

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

Maximum rows to return (each row is billed). Newest first.

## Actor input object example

```json
{
  "remoteOnly": false,
  "salaryOnly": false,
  "includeDescription": false,
  "includeDuplicates": false,
  "maxPerCompany": 0,
  "onlyNewSinceLastRun": false,
  "searchInDescription": false,
  "maxResults": 100
}
```

# Actor output Schema

## `jobs` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("worthwhile_quinsy/y-combinator-startup-jobs-scraper").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("worthwhile_quinsy/y-combinator-startup-jobs-scraper").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 '{}' |
apify call worthwhile_quinsy/y-combinator-startup-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,worthwhile_quinsy/y-combinator-startup-jobs-scraper"
        }
    }
}
```

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/vtVerucFd6zXtiQuo/builds/ode08fO1mxo88WBqb/openapi.json
