Startup Jobs Scraper
Pricing
from $0.90 / 1,000 results
Startup Jobs Scraper
[π° $0.90 / 1K] Extract startup and tech job listings from startup.jobs. Search by keyword and location, filter for remote roles, or paste startup.jobs URLs, and get structured jobs with companies, salaries, tags, and full descriptions.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Pull startup and tech job listings from startup.jobs at scale β titles, companies, salaries, role tags, workplace type, posting dates, and direct apply links for every opening. Search any keyword in any city worldwide, filter for remote-only roles, and pull full job descriptions on demand. Built for recruiters, job-seekers, and talent-market researchers who need a clean, structured feed of the startup hiring market without copying postings one tab at a time.
Why This Scraper?
- Direct apply links on every job β each row carries the real
/apply/...destination (or the company's external application URL), not just a link back to the listing page. - Salary intelligence, parsed β min, max, and currency are pulled out into their own fields wherever the posting publishes a band, alongside a ready-to-read salary string.
- Geo-radius search, any city worldwide β type "Berlin", "United States", or "Europe" and results are ranked by proximity; leave it blank to sweep the whole board globally.
- Remote, hybrid, and on-site, clearly labeled β every job is tagged with a normalized workplace type, plus a one-click remote-only toggle to drop on-site roles entirely.
- Full job descriptions in HTML and clean text β flip one switch to enrich every job with its complete description both ways, plus company logo, role/skill tags, and posting date.
- Four employment types β narrow to full-time, part-time, contract, or internship with a single dropdown, or leave it open to capture all of them.
- Batch up to 50 searches in one run β queue many keywords at once, or paste up to 50 startup.jobs search and individual-job URLs to scrape exact dialed-in results verbatim.
- Startup-focused depth β indexed against tens of thousands of live roles across founder-stage and growth-stage companies, not a generic aggregator's leftovers; the actor returns up to about 500 results per search (split by location or job type to go deeper β see Tips).
Use Cases
Recruiting & Sourcing
- Build candidate-facing job feeds filtered to your niche and city
- Track which startups are hiring for a given role right now
- Monitor competitor headcount growth by watching their open reqs
- Pull apply links straight into your applicant-tracking workflow
Job-Seeker Tools
- Power a personal job tracker filtered to remote-only roles
- Surface every internship or contract opening in one city
- Compare salary bands across companies for the same title
- Get same-day alerts on new postings matching your keywords
Market & Talent Research
- Map startup hiring demand by role, city, and seniority
- Measure remote vs. hybrid vs. on-site mix across the market
- Track salary trends over time by repeating keyword searches
- Quantify which skills and tags appear most across open roles
HR-Tech & Lead Generation
- Feed live job data into a recruiting or salary-benchmarking product
- Identify fast-hiring startups as sales leads for HR tooling
- Enrich a CRM with hiring-company names, logos, and slugs
- Build a job-board or newsletter on top of a structured feed
Getting Started
Search by Keyword
The simplest run β one keyword, worldwide:
{"searchQueries": ["software engineer"]}
Remote Roles in a City
Filter to remote-friendly jobs near a location, capped per keyword:
{"searchQueries": ["product designer", "growth marketer"],"location": "Berlin","remoteOnly": true,"maxResultsPerQuery": 200}
Filtered, Full-Detail Pull
Internships only, with full descriptions and apply links on every job:
{"searchQueries": ["data science"],"location": "United States","employmentType": "internship","maxResultsPerQuery": 500,"fetchDescription": true}
Scrape Exact URLs
Paste a dialed-in startup.jobs search or an individual job page:
{"startUrls": ["https://startup.jobs/?q=designer","https://startup.jobs/senior-backend-engineer-acme-12345"]}
Input Reference
Search
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | array | ["software engineer"] | Job titles or keywords to search for. Each keyword runs its own search. Leave empty if you are pasting direct URLs. Up to 50 keywords per run. |
location | string | "" | City, country, or region to search near β e.g. "Berlin", "United States", "Europe". Leave blank to search worldwide. Applies to every keyword. |
remoteOnly | boolean | false | Only return jobs that can be done remotely. Leave off to include on-site and hybrid roles too. |
startUrls | array | [] | Paste full startup.jobs URLs β search results (e.g. https://startup.jobs/?q=designer) or individual job pages. Filters baked into the URL are respected as-is. Up to 50 URLs per run. |
Filters & Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
employmentType | string | Any | Filter by job type: Full-time, Part-time, Contract, or Internship. Leave on Any to include all types. |
maxResultsPerQuery | integer | 100 | Maximum jobs to collect per keyword or URL. Set to 0 to collect all available jobs. startup.jobs returns up to about 500 results per keyword-and-filter combination β narrow by location or employment type to surface more. A small cap keeps the whole final page, so the count can slightly overshoot or, after de-duplication, run slightly under your cap. |
Advanced
| Parameter | Type | Default | Description |
|---|---|---|---|
fetchDescription | boolean | true | Fetch the full job description and apply link from each job's detail page. Leave on for the most complete data. Turn off for faster, lighter runs β the description, descriptionHtml, and applyUrl fields will then be empty. |
Output
Each job is one flat record. Example:
{"jobId": "1234567","title": "Senior Backend Engineer","company": "Acme","companySlug": "acme","companyLogoUrl": "https://startup.jobs/logos/acme.png","location": "Berlin, Germany","city": "Berlin","country": "Germany","isRemote": true,"workplaceType": "Remote","employmentType": "Full-time","experienceLevel": "3-6 years","tags": ["Python", "Backend", "PostgreSQL"],"salary": "β¬80,000ββ¬110,000/year","salaryMin": 80000,"salaryMax": 110000,"salaryCurrency": "EUR","description": "We are looking for a senior backend engineer to...","descriptionHtml": "<p>We are looking for a senior backend engineer to...</p>","postedDate": "2026-06-08T00:00:00Z","applyUrl": "https://startup.jobs/apply/9f3c2a1b-...","jobUrl": "https://startup.jobs/senior-backend-engineer-acme-1234567","searchQuery": "software engineer","searchLocation": "Berlin","scrapedAt": "2026-06-11T14:22:05Z"}
Core Fields
| Field | Type | Description |
|---|---|---|
jobId | string | Stable startup.jobs job identifier. |
title | string | Job title. |
tags | array | Role, skill, and category tags from the listing. |
experienceLevel | string | Seniority bucket, when available β one of 0-1 years, 1-3 years, 3-6 years, or 6+ years. |
postedDate | string | ISO date the job was posted, when available. |
jobUrl | string | Canonical startup.jobs URL for the job. |
Company
| Field | Type | Description |
|---|---|---|
company | string | Hiring company name. |
companySlug | string | Company slug on startup.jobs. |
companyLogoUrl | string | Company logo image URL. |
Location & Workplace
| Field | Type | Description |
|---|---|---|
location | string | Raw location text as shown on the listing. |
city | string | Parsed city, when derivable. |
country | string | Parsed country, when derivable. |
isRemote | boolean | Whether the job is remote-friendly. |
workplaceType | string | Remote, Hybrid, or On-site, normalized. |
employmentType | string | Full-time, Part-time, Contract, or Internship, normalized. |
Salary
| Field | Type | Description |
|---|---|---|
salary | string | Human-readable salary string, when published β e.g. β¬80,000ββ¬110,000/year. |
salaryMin | number | Parsed salary floor, when derivable. |
salaryMax | number | Parsed salary ceiling, when derivable. |
salaryCurrency | string | Parsed salary currency code, when derivable. |
Content & Apply
| Field | Type | Description |
|---|---|---|
description | string | Plain-text job description (when full descriptions are on). |
descriptionHtml | string | HTML job description (when full descriptions are on). |
applyUrl | string | Direct apply link, on-site or external (when full descriptions are on). |
Run Metadata
| Field | Type | Description |
|---|---|---|
searchQuery | string | The keyword that produced this row. |
searchLocation | string | The location filter used for this row. |
scrapedAt | string | ISO timestamp when the row was collected. |
Tips for Best Results
- Leave Fetch Full Job Descriptions off for fast, lightweight bulk listing pulls, and turn it on only when you need the complete text and apply links β it adds an extra fetch per job.
- To go past the roughly 500-results-per-search depth, split one broad keyword into several narrow runs by location or employment type β each city or job-type combination has its own 500 ceiling.
- Queue several related keywords in one run instead of many separate runs β every row records its
searchQuery, so you can tell which keyword produced which job afterward. - Use Remote Only for distributed-team sourcing; leave it off and read the
workplaceTypefield when you want the full remote-vs-hybrid-vs-on-site mix. - For investment-grade salary analysis, sort on
salaryMinandsalaryCurrencyβ postings without a published band leave those fields empty rather than guessing. - Paste a startup.jobs search URL into Direct startup.jobs URLs to reproduce an exact filtered view from the site, or an individual job URL to grab a single posting with full detail.
- Set Max Results per Query to 0 to collect everything available for a search, then add a location or employment-type filter to keep each run focused and deep.
Pricing
From $0.90 per 1,000 results β undercutting the typical startup-job dataset rate. No compute or time-based charges β you pay per result, plus a small fixed per-run start fee. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.105 | $0.100 | $0.095 | $0.090 |
| 1,000 | $1.05 | $1.00 | $0.95 | $0.90 |
| 10,000 | $10.50 | $10.00 | $9.50 | $9.00 |
| 100,000 | $105.00 | $100.00 | $95.00 | $90.00 |
A "result" is one job record pushed to your dataset. Apify platform usage fees are separate from the per-result price above.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n β Workflow automation
- Google Sheets β Direct spreadsheet export
- Slack / Email β Notifications on new results
- Webhooks β Trigger custom APIs on run completion
- Apify API β Full programmatic access
Legal & Ethical Use
This actor collects publicly available job-listing data for legitimate purposes such as recruiting, market research, and personal job searching. You are responsible for using the data in compliance with startup.jobs' terms of service, applicable laws, and data-protection regulations including GDPR and CCPA. Do not use collected personal data for spam, harassment, or any unlawful purpose. Always review and respect the target website's terms before running large-scale data collection.