Handshake Jobs Scraper
Pricing
from $0.05 / 1,000 job listings
Handshake Jobs Scraper
Collect anonymous public Handshake jobs by keyword, location, search URL, or job URL. Export employer, classification, compensation, dates, and full descriptions.
Pricing
from $0.05 / 1,000 job listings
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
4
Monthly active users
4 days ago
Last modified
Categories
Share
🔎 Find and export public Handshake jobs
Recruiters, labor-market researchers, and job-data teams can use Handshake Jobs Scraper to collect anonymous public Handshake listings without a Handshake login or API key. Get job identity, employer, classifications, locations, compensation, dates, and full descriptions in structured rows for analysis and recurring workflows.
- Handshake Job Listings — export public listings found by keyword, location, search URL, or direct job URL.
- Handshake Internship Search — find internships and co-ops by using keywords and employment-type filters.
- Remote Handshake Jobs — collect listings explicitly published as remote.
- Handshake Salary Data — analyze published compensation, currency, cadence, and unambiguous annualized values.
- Handshake Employer Hiring Research — focus collection on selected employer names.
- Handshake Job Market Analysis — compare roles, locations, workplace arrangements, and posting dates.
- Handshake Jobs API — run searches programmatically and consume the resulting dataset through the Apify API.
📦 What data is returned?
Each dataset row represents one unique successful public Handshake job. Missing source values remain null or empty arrays rather than being invented.
| Data group | Fields |
|---|---|
| Identity | id, url, title |
| Employer | employer.id, employer.name, employer.url, employer.logoUrl, employer.industry, employer.description |
| Classification | roleTypes, employmentTypes, workplace |
| Location | locations |
| Compensation | compensation.minAmount, compensation.maxAmount, compensation.currency, compensation.cadence, compensation.annualizedMinAmount, compensation.annualizedMaxAmount |
| Dates | postedAt, expiresAt, collectedAt |
| Description | descriptionHtml, descriptionText |
🚀 How do I run the Actor?
- Add at least one value to
keywords, or submit a public Handshake search or job URL instartUrls. - Optionally add locations and job filters.
- Choose
maxDiscoveryItemsto bound search-discovered output. - Run the Actor and open the default dataset.
You can combine keyword discovery, public search URLs, and direct job URLs in one run. Duplicate canonical jobs are returned once across all submitted sources.
🎛️ What input can I use?
| Field | What it does |
|---|---|
keywords | Job titles, skills, or terms used to discover public listings. |
locations | Cities, regions, countries, or other location terms paired with keyword discovery. |
startUrls | Public Handshake search-result URLs or individual public job URLs. |
employers | Includes jobs whose employer name matches one of the supplied values. |
employmentTypes | Includes published classifications such as full-time, part-time, internship, or co-op. |
workplace | Includes any workplace status, remote jobs only, or on-site jobs only. |
postedWithinDays | Includes jobs with a published date inside the chosen number of days. |
compensationFilter | Applies a minimum published amount for one ISO currency and pay cadence. |
maxDiscoveryItems | Limits matching jobs returned through keyword, location, and search-URL discovery, up to 10,000. Direct job URLs are bounded by the submitted list. |
Example input:
{"keywords": ["software engineer"],"locations": ["Austin, Texas"],"employmentTypes": ["internship"],"workplace": "any","postedWithinDays": 30,"maxDiscoveryItems": 25}
🧾 What does the output look like?
{"id": "9876543","url": "https://app.joinhandshake.com/public/jobs/9876543","title": "Software Engineer Intern","employer": {"id": null,"name": "Acme Technologies","url": null,"logoUrl": "https://example.com/acme-logo.png","industry": "Computer Software","description": null},"roleTypes": ["Software Development", "Engineering"],"employmentTypes": ["internship"],"locations": ["Austin, Texas, United States"],"workplace": "on-site","compensation": {"minAmount": 5000,"maxAmount": 6000,"currency": "USD","cadence": "month","annualizedMinAmount": 60000,"annualizedMaxAmount": 72000},"postedAt": "2026-07-01T14:30:00.000Z","expiresAt": "2026-08-15T23:59:59.000Z","descriptionHtml": "<p>Join our engineering team.</p>","descriptionText": "Join our engineering team.","collectedAt": "2026-07-18T10:15:30.000Z"}
💳 How does pricing work?
This Actor uses pay-per-event pricing with account-tier rates. You are charged for each unique successful Handshake job listing saved to the default dataset. Duplicates, filtered candidates, unavailable jobs, malformed jobs, and runs with no saved jobs do not create this job charge.
Use maxDiscoveryItems to bound search-discovered output and cost. Submitted direct job URLs are separate from that discovery limit and remain bounded by the number of URLs you provide.
🔌 Which integrations are available?
Export the dataset as JSON, CSV, Excel, XML, RSS, or HTML. You can also run the Actor through the Apify API, schedule recurring snapshots, trigger webhooks, and connect results to supported Apify integrations.
❓ FAQ
Do I need a Handshake account, institution access, or API key?
No. The Actor collects only anonymous public Handshake listings. It does not access institution-personalized results, saved jobs, applications, applicant data, or private account pages.
Can I submit a Handshake search URL or a single job URL?
Yes. startUrls accepts public Handshake search-result URLs and individual public job URLs. You can combine them with keyword discovery in the same run.
Why did a filter exclude a job with no published value?
Date, workplace, employment-type, and compensation filters require comparable public source data. A listing without the value needed for a selected filter is excluded rather than guessed.
Are duplicate jobs returned or charged twice?
No. The Actor uses canonical Handshake job identity to deduplicate the same job across all sources in a run. Only a unique successful listing saved to the default dataset creates the job charge.
Does maxDiscoveryItems limit direct job URLs?
No. It limits jobs returned from keywords, locations, and public search URLs. Direct job URLs are bounded by the submitted URL list itself.
Can this Actor alert me when a job changes or expires?
The Actor produces repeatable snapshots but does not keep cross-run state or generate change alerts itself. Schedule runs and compare canonical job IDs and fields in your own datastore or workflow.
📝 Changelog
- 0.1: Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Welcome to the Jungle Jobs Scraper — collect public WTTJ jobs across English and French markets.
- Rozee.pk Jobs Scraper — research public job listings in Pakistan by keyword, city, or URL.
- CutShort Scraper — analyze public Indian tech and startup roles, skills, and salaries.
- CWjobs Scraper — monitor public UK technology jobs and salary signals.
- Jobsite Scraper — collect broader public UK job listings with search and apply context.
Made with ❤️ by Maxime Dupré