Handshake Jobs Scraper: Internships, Salaries & Job Deadlines
Pricing
from $0.05 / 1,000 job postings
Handshake Jobs Scraper: Internships, Salaries & Job Deadlines
Scrape public Handshake jobs and internships by keyword, role, city or link. Get salary ranges, application deadlines, employer careers links, industry and full descriptions. Filter by remote, employment type and date, or schedule daily runs for new postings only. No login needed.
Pricing
from $0.05 / 1,000 job postings
Rating
0.0
(0)
Developer
GetAScraper
Maintained by CommunityActor stats
0
Bookmarked
13
Total users
4
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
|
Get Handshake internships and jobs with salary, real deadlines and the employer's careers link, ready for your spreadsheet in minutes. Search by keyword, role, city or link, filter by remote, type and date, and schedule a daily feed of new postings. No Handshake account needed. |
|
๐ฐ Salary with schedule Minimum and maximum pay, per hour or per year, in the listing's own currency. |
โณ Real deadlines only A deadline appears only when the employer set one, not Handshake's default expiry. |
๐ Employer careers link Every row carries the employer's own careers page and industry for outreach and research. |
๐ New postings only Schedule it daily and receive just the postings you have not seen before. |
Handshake Jobs Scraper collects public job and internship postings from joinhandshake.com, the campus recruiting platform used by thousands of employers and universities. Search by keyword, role category, city or by pasting Handshake links, then narrow by employer, country, employment type, remote or on site, posting date and pay. Each posting comes back as one clean record with salary, deadline, industry, the employer's careers link and the full description. Run it once for a snapshot or schedule it to keep a live feed flowing into your dataset, spreadsheet or internal tool.
๐ฏ Why use this Handshake scraper?
- I am a campus recruiting lead tracking which employers are posting internships on Handshake, so I can compare our roles on salary and application deadlines.
- I am a university career services coordinator mirroring live internship and new-grad listings onto our own job board, so students find every open role in one place.
- I am a recruiting agency researcher building a feed of early-career openings with employer careers links, so my team can reach employers before a role closes.
- I am a market researcher tracking internship and entry-level pay by role, city and employer, so I can publish accurate early-career compensation benchmarks.
๐ How to use Handshake Jobs Scraper
|
STEP 1 Choose what to collect Pick internships, jobs or both, then add keywords, roles, cities or Handshake links. Leave everything empty for the newest postings. |
STEP 2 Run the Actor It reads Handshake's public pages and turns each posting into one clean record. |
STEP 3 Export your data Download JSON, CSV or Excel, or connect the dataset to your own dashboard or spreadsheet. |
- Open the Input tab. Choose internships, jobs or both, and add keywords such as
nurseordata analyst boston, role categories, cities, or links to Handshake pages. - Narrow results with employer, country, employment type, workplace, posting date or pay if you need a tighter list.
- Click Start. Results stream into the dataset as they are found.
- Open the Output tab to browse or download the results in JSON, CSV, Excel, HTML or XML.
- For a daily feed, turn on Only new jobs and schedule the Actor. Each run returns only postings you have not received before.
๐ Input
| Field | Type | Required | Description |
|---|---|---|---|
startUrls | array of links | No | Public Handshake job pages or public find-jobs and internships pages. Job links are always read in full. |
jobKind | string | No | Internships and jobs, internships only, or jobs only. |
keywords | array of strings | No | Words such as nurse or software engineer. A city in the keyword narrows the search to that city. |
roles | array of strings | No | Handshake role categories such as accounting, nursing or software-engineering. Up to 10. |
locations | array of strings | No | Cities such as new-york-ny or Austin, TX, or remote. Up to 10. Combined with roles, the city and role page is used when one exists. |
employerNames | array of strings | No | Keep only jobs whose employer name contains one of these words. |
countries | array of strings | No | Keep only jobs located in these countries. |
employmentTypes | array | No | Full time, part time, internship, temporary, contractor or volunteer. |
workplaceTypes | array | No | Remote or on site, when the posting states it. |
postedWithinDays | integer | No | Keep jobs first posted in the last N days. |
datePostedAfter / datePostedBefore | date | No | Keep jobs first posted inside this date range. |
minCompensation / maxCompensation | integer | No | Pay range in the posting's own unit, such as per hour or per year. Jobs without published pay are excluded once a limit is set. |
maxItems | integer | No | Maximum number of postings to return. |
fetchJobDetails | boolean | No | Read each posting in full for description, all employment types, deadline, industry, careers link and exact pay. On by default. |
onlyNewJobs | boolean | No | Return only postings not seen in earlier runs with the same search. |
deepScan | boolean | No | Also read the newest postings from Handshake's public job index, beyond the 200 behind each page. |
scanLimit | integer | No | How many postings a deep scan may open. |
proxyConfiguration | object | No | Used only if direct requests are refused. |
๐ค Output
Every run returns one record per posting. Here is a real example, with the description shortened:
{"id": "11669721","title": "Student Diagnostician","employerName": "Virginia Tech Department of Entomology - Insect ID Lab","employerWebsite": "https://www.ento.vt.edu/idlab.html","industry": "Agriculture","city": "Blacksburg","state": "Virginia","country": "United States","locationLabel": "Blacksburg, Virginia","workplaceType": "on_site","employmentType": "PART_TIME","employmentTypes": ["PART_TIME", "INTERN"],"jobType": "Internship","roleCategories": ["Zoologists and Wildlife Biologists", "Farm and Home Management Educators"],"salaryMin": 16,"salaryMax": 16,"paySchedule": "HOUR","currency": "USD","description": "If you are interested in applying to this position, you will need to attend an information session...","descriptionHtml": "<p>If you are interested in applying to this position, you will need to attend an information session...</p>","datePosted": "2026-10-15T15:39:34Z","applicationDeadline": "2026-11-05T04:59:59Z","sourceUrl": "https://app.joinhandshake.com/public/jobs/11669721","scrapedAt": "2026-10-23T02:22:00.344Z"}
Fields Handshake does not publish for a posting are left out instead of filled with placeholders. You can download the dataset in JSON, CSV, Excel, HTML or XML from the Output tab.
Data table
| Field | Type | Description |
|---|---|---|
id | string | Handshake's job ID. |
title | string | Job or internship title. |
employerName | string | Hiring company or organization. |
employerLogoUrl | string | Employer logo, when published. |
employerWebsite | string | The employer's own careers page, when published. |
industry | string | Employer industry, when published. |
city, state, country | string | Where the role is based. |
locationLabel | string | Primary location as shown on Handshake. |
locations | array | Every location listed for the posting. |
workplaceType | string | Remote or on site, when stated. |
employmentType | string | Primary employment type. |
employmentTypes | array | Every employment type listed, such as part time and internship. |
jobType | string | Whether the posting is a job or an internship. |
roleCategories | array | Handshake role categories attached to the posting. |
salaryMin, salaryMax | number | Published pay range in the posting's own unit. |
paySchedule | string | How pay is measured, such as hour or year. |
currency | string | Currency of the published pay. |
description | string | Full job description as plain text. |
descriptionHtml | string | Full job description with its original formatting kept, such as bullet lists, bold and links. |
datePosted | string | When the posting went live. |
applicationDeadline | string | The employer's deadline, only when one was set. |
sourceUrl | string | Link to the posting on Handshake. |
scrapedAt | string | When the record was collected. |
Each run also saves a short run summary with the pages visited, postings inspected and anything skipped.
๐ฐ Pricing
Pricing is pay per result and is billed per posting saved to your dataset, plus a very small charge when a run starts. Empty runs cost nothing beyond that start charge, and a spend limit you set on the run is always respected.
There are no monthly subscriptions and no maintenance fees. Larger volume plans on Apify lower the per-posting price further.
โญ Enjoying Handshake Jobs Scraper: Internships, Salaries & Job Deadlines?
|
โญ โญ โญ โญ โญ Did this save you hours of copying postings by hand? A 5-star rating takes 10 seconds and helps other recruiters and researchers find it. Your feedback also guides future improvements. |
| โ ย ย Rate this Actor on Apify |
โ FAQ
Do I need a Handshake account, cookies or an API key?
No. The Actor reads only public Handshake pages. There is no login, key or cookie, and no proxy setup is needed.
How many postings can I get per run?
Each public listing page shows up to 200 postings. Add several roles, cities or keywords to cover more ground, or turn on the newest-postings scan to dig further into the public job index. Only postings Handshake shows publicly can be collected.
Why is a deadline missing on some postings?
Handshake gives every posting a default one-year expiry, which is not a real deadline. The Actor only fills applicationDeadline when the employer set one, so you can trust the date when it is there.
How do I get only new postings every day?
Turn on Only new jobs, keep the same search, and schedule the Actor. The first run returns everything that matches. Every later run returns only postings it has not delivered before for that search.
๐ Other actors
- Internshala Scraper: Applicants per Opening & Deadline Alerts โ: Track Indian internships and entry-level job listings.
- HigherEdJobs Scraper: Academic Jobs, Salaries, and Monitoring โ: Collect US academic and higher-education job postings.
- Job Bank Canada Scraper & LMIA Job Monitor โ: Gather Canadian job listings and track employer hiring activity.
- EURAXESS Jobs Scraper: PhD and Postdoc Positions Across Europe โ: Research PhD and postdoc openings across Europe.
- Hacker News Job Scraper: Who is Hiring Posts โ: Collect tech jobs from the monthly Who is Hiring threads.