Company Scout avatar

Company Scout

Under maintenance

Pricing

Pay per usage

Go to Apify Store
Company Scout

Company Scout

Under maintenance

An Actor that finds YCombinator companies matching your criteria, enriches each with its matching LinkedIn company record, and scrapes LinkedIn job postings for the resulting shortlist.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Tri⟁angle

Tri⟁angle

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

a day ago

Last modified

Share

An Apify Actor that finds YCombinator companies matching your criteria, enriches each with its matching LinkedIn company record, and scrapes LinkedIn job postings for the resulting shortlist.

What does Company Scout do?

Company Scout discovers startup companies and their hiring signals in one pass:

  1. Queries the YCombinator directory with your filters (search query, batch, status, industry, region, team size, launch date, hiring state).
  2. For each YC company it searches LinkedIn for the matching company page, picks the best candidate by domain, and captures the numeric LinkedIn company ID and jobs-search URL.
  3. Scrapes LinkedIn job postings for each matched company.
  4. Optionally applies user-defined filters (JS expressions and/or an LLM-evaluated prompt) to prune the result set.

Why use Company Scout?

  • Combine YC's curated startup directory with LinkedIn's canonical company data and live job postings in a single dataset.
  • Pre-built enrichment pipeline: no need to hand-roll domain-to-LinkedIn matching, company-ID resolution, and job scraping across three separate actors.
  • Filter results with either deterministic JS expressions (evalFilter) or an LLM prompt (llmFilter) before they hit the dataset.
  • Runs on the Apify platform with proxy rotation, scheduling, and API access out of the box.

How to use Company Scout

  1. Set your YC filters (search_query, batch, status, industry, regions, min_team_size, launched_after, is_hiring, max_items).
  2. Tune the LinkedIn enrichment options (linkedin_jobs_count, scrape_company).
  3. (Optional) Add filters (JS expressions) and/or a filter_prompt (LLM instruction) to narrow the shortlist.
  4. Run the Actor. Results land in the default dataset.

Input

See the Input tab in Apify Console for the full form. Input schema lives at .actor/input_schema.json and generates the Input TypeScript type at src/generated/input.ts.

Output

Each dataset item corresponds to one YC company, with LinkedIn enrichment and jobs attached. The output type is auto-generated from .actor/dataset_schema.json:

// biome-ignore-all lint: generated
// biome-ignore-all format: generated
/* eslint-disable */
/* prettier-ignore-start */
/*
* This file was automatically generated by json-schema-to-typescript.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run apify actor generate-schema-types to regenerate this file.
*/
export interface Dataset {
/**
* Raw YCombinator company record.
*/
yCombinator: {
id: number;
name: string;
slug: string;
ycUrl: string;
website: string;
oneLiner: string;
longDescription: string;
batch: string;
status: string;
stage: string;
teamSize: number | null;
industry: string;
subindustry: string;
industries: string[];
regions: string[];
allLocations: string;
tags: string[];
topCompany: boolean;
isHiring: boolean;
nonprofit: boolean;
formerNames: string[];
logoUrl: string;
launchedAt: string;
};
/**
* Best-matched LinkedIn company record, or null if no match was found.
*/
linkedin: {
id: string;
universalName: string;
linkedinUrl: string;
jobSearchUrl: string;
name: string;
tagline?: string | null;
description?: string | null;
website?: string | null;
companyType?: string;
active?: boolean;
pageVerified?: boolean;
employeeCount?: number;
followerCount?: number;
employeeCountRange?: {
start?: number;
end?: number;
} | null;
logo?: string;
} | null;
/**
* LinkedIn job postings scraped for the matched company.
*/
linkedinJobs: {
id: string;
title: string;
link: string;
location: string;
postedAt: string;
salary?: string;
seniorityLevel?: string;
employmentType?: string;
jobFunction?: string;
industries?: string;
applicantsCount?: string;
applyUrl?: string;
descriptionText?: string;
descriptionHtml?: string;
benefits?: unknown[];
refId?: string;
trackingId?: string;
inputUrl?: string;
companyName?: string;
companyLinkedinUrl?: string;
companyLogo?: string;
companyWebsite?: string;
companyDescription?: string;
companySlogan?: string;
companyEmployeesCount?: number;
companyAddress?: {
type?: string;
addressCountry?: string;
addressLocality?: string;
addressRegion?: string;
postalCode?: string;
streetAddress?: string;
};
jobPosterName?: string;
jobPosterTitle?: string;
jobPosterPhoto?: string;
jobPosterProfileUrl?: string;
}[];
}

You can download the dataset in JSON, CSV, XML, or Excel format from the Apify Console or via the API.

Pricing

Company Scout orchestrates three downstream Actors. Costs scale with the size of your YC filter set and the number of jobs per matched company. Rough per-YC-company cost:

  • LinkedIn company search: 0.001 start + 0.002/candidate (10 candidates by default) ≈ 0.021.
  • LinkedIn jobs scrape: variable per posting.

For a 100-company YC batch expect ≈2 for enrichment, plus jobs scraping. Set linkedin_jobs_count lower or scrape_company: false to reduce cost.

Tips

  • Set is_hiring: true to skip companies with no open positions — this is the default.
  • Lower linkedin_jobs_count if you only need the first page of jobs per company.
  • filters runs deterministic JS on each enriched company (fast, free). filter_prompt runs the LLM in batches of 100 (slower, incurs LLM cost).

FAQ

  • Where does the data come from? YCombinator's public directory (via 60eqjQF63gs0tlags), LinkedIn's public company search (via taHaRcqil3scbchuI), and LinkedIn's public jobs pages (via hKByXkMQaC5Qt9UMN). No LinkedIn account or cookies required.
  • Can I schedule this? Yes — use Apify Schedules to run daily, weekly, or on any cron expression.
  • Something looks wrong. Please file an issue on the Actor's Issues tab.