npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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.

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.jobs from 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-scraper

Browser binaries are not downloaded automatically on install. If you want detail-page enrichment, install them explicitly:

npx playwright install

Usage

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:

  • query
  • requestedCount
  • enrichDetails
  • location
  • aroundLatLng
  • aroundRadius
  • page
  • hitsPerPage
  • since
  • hasSalary
  • salaryMinUsd
  • salaryMaxUsd
  • workplaceType
  • employmentType
  • experienceBucket
  • facetFilters
  • filters

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:

  • title
  • employer
  • jobUrl
  • employerUrl
  • location
  • salary
  • disciplines
  • applicationLink
  • jobDescription

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:dev

Useful 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:dev

Keywords

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.