startup-jobs-scraper
v0.2.0
Published
Node.js and TypeScript scraper library for startup.jobs job listings, remote jobs, and enriched job details, with a matching Apify Actor.
Maintainers
Readme
startup-jobs-scraper
startup-jobs-scraper is a Node.js and TypeScript scraper library for startup.jobs. It gives you importable functions for fetching startup job listings, remote jobs, and enriched startup job details, and the same codebase also runs as an Apify Actor.
Why use it
- Scrape
startup.jobsfrom Node.js with a small importable API - Fetch startup job listings with Algolia-backed search
- Optionally enrich each listing by opening the job detail page
- Reuse the same shared code in local scripts, apps, and an Apify Actor
Install
npm install startup-jobs-scraperBrowser binaries are not downloaded automatically on install. If you want detail-page enrichment, install them explicitly:
npx playwright installUsage
import { scrapeStartupJobsViaAlgolia } from 'startup-jobs-scraper';
const jobs = await scrapeStartupJobsViaAlgolia({
query: 'software engineer',
requestedCount: 20,
enrichDetails: true,
});This works well for searches like startup software engineer jobs, design jobs, product jobs, remote startup jobs, and location-filtered startup job listings.
API
scrapeStartupJobsViaAlgolia(options) returns an array of normalized job records.
Supported options include:
queryrequestedCountenrichDetailslocationaroundLatLngaroundRadiuspagehitsPerPagesincehasSalarysalaryMinUsdsalaryMaxUsdworkplaceTypeemploymentTypeexperienceBucketfacetFiltersfilters
The scraper now builds Algolia filters for the common startup.jobs fields and still lets you pass raw filters and facetFilters when you need an escape hatch.
const jobs = await scrapeStartupJobsViaAlgolia({
query: 'software engineer',
location: 'London, United Kingdom',
aroundLatLng: '51.5074,-0.1278',
aroundRadius: 'all',
since: '7d',
hasSalary: true,
salaryMinUsd: 100000,
workplaceType: ['remote'],
employmentType: ['full-time'],
experienceBucket: ['3-6'],
hitsPerPage: 50,
page: 0,
enrichDetails: false,
});When enrichDetails is false, the library returns records built directly from Algolia hits without loading each job page.
If you pass location without aroundLatLng, the scraper resolves the place name through the startup.jobs Algolia Places index and uses the returned coordinates automatically. If you pass both, aroundLatLng wins.
Returned records include fields such as:
titleemployerjobUrlemployerUrllocationsalarydisciplinesapplicationLinkjobDescription
Example output
[
{
title: 'Senior Software Engineer',
employer: 'Example Startup',
jobUrl: 'https://startup.jobs/example-job',
employerUrl: 'https://startup.jobs/company/example-startup',
location: 'Remote | Europe',
salary: '$120,000 - $150,000 per year',
disciplines: 'Engineering | full-time',
applicationLink: 'https://startup.jobs/apply/example-job',
jobDescription: '...'
}
]Apify Actor
The same codebase can also run as an Apify Actor, so you can use the shared library locally and deploy the actor version separately.
For local actor-style runs:
npm run actor:start:devUseful environment variables for local runs:
STARTUPJOBS_QUERY="software engineer" \
STARTUPJOBS_LOCATION="London, United Kingdom" \
STARTUPJOBS_AROUND_RADIUS=25000 \
STARTUPJOBS_MAX_RESULTS=70 \
npm run actor:start:devKeywords
If you found this package while searching for terms like startup jobs scraper, startup.jobs API, remote jobs scraper, startup job listings, or Apify startup.jobs actor, you’re in the right place.
