Handshake Jobs Scraper: Job & Internship Listings avatar

Handshake Jobs Scraper: Job & Internship Listings

Pricing

from $0.06 / 1,000 job postings

Go to Apify Store
Handshake Jobs Scraper: Job & Internship Listings

Handshake Jobs Scraper: Job & Internship Listings

Scrape public Handshake job and internship listings by keyword, location, role, employer, employment type, workplace status, date posted, and compensation. Export titles, employers, salaries, deadlines, and application links. No login required.

Pricing

from $0.06 / 1,000 job postings

Rating

0.0

(0)

Developer

GetAScraper

GetAScraper

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

Get live Handshake job and internship listings, salary, and deadlines, ready for your spreadsheet in minutes.
Pull public Handshake postings by keyword, role, location, or employer. No Handshake account needed on either side.
๐Ÿ’ฐ Salary with schedule
See minimum and maximum pay, per hour or per year, in the listing's own currency, before you click through.
โณ Deadline visibility
Every detailed listing carries its application deadline, so you know exactly how long a role stays open.
๐Ÿ“ Remote or on site
Filter by workplace status and employment type without opening a single listing.
๐Ÿ”“ No account needed
Runs entirely on public Handshake pages. No login, no cookies, no account to maintain.

Handshake Jobs Scraper collects public job and internship listings from joinhandshake.com, the campus recruiting platform used by thousands of employers and universities. Search by keyword, role category, location, employer name, employment type, workplace status, posting date, and compensation range, and get back structured records with salary, deadline, and a direct application link. Run it once for a snapshot, or schedule it on Apify to keep a live feed of new postings flowing into your dataset, spreadsheet, or internal tool.

๐ŸŽฏ Why use this Handshake scraper?

  • I am a campus recruiting lead tracking which employers are posting new internships on Handshake, so I can see how our own roles compare on salary and application deadlines.
  • I am a university career services coordinator mirroring live Handshake 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 structured feed of early-career openings and deadlines, so my team can reach qualified candidates before a role closes.
  • I am a market researcher tracking internship and new-grad pay by role, location, and employer, so I can publish accurate early-career compensation benchmarks.

๐Ÿš€ How to use Handshake Jobs Scraper

STEP 1
Set your filters
Enter keywords, role categories, locations, or employer names. Leave everything blank to pull the general public feed.
STEP 2
Run the Actor
It reads Handshake's public listing and detail pages and normalizes each job into one clean record.
STEP 3
Export your data
Download JSON, CSV, or Excel, or connect the dataset to your own dashboard or spreadsheet.
  1. Open the Actor's Input tab and enter your keywords, role categories, or locations. All fields are optional.
  2. Narrow results with employer name, employment type, workplace status, posting date, or compensation range if you need a tighter list.
  3. Click Start and let the Actor run. Results stream into the dataset as they're found.
  4. Open the Output tab to browse, filter, or download results in JSON, CSV, Excel, HTML, or XML.
  5. Schedule the Actor to run daily or weekly to keep a running feed of new Handshake postings.

๐Ÿ“ Input

FieldTypeRequiredDescription
keywordsarray of stringsNoFree-text keywords matched against the job title and description. Leave empty to browse without a keyword filter.
rolesarray of stringsNoHandshake role-category slugs, such as accounting or software-engineering. Up to 10 roles are queried per run.
locationsarray of stringsNoCity-state slugs, such as new-york-ny or austin-tx, or remote. Up to 10 locations are queried per run.
employerNamesarray of stringsNoKeep only jobs whose employer name contains one of these strings. Matching ignores case.
employmentTypesenumNoKeep only listings matching the selected employment types (full time, part time, internship, temporary, contractor, or volunteer). Only applies to jobs where the source page publishes a type.
workplaceTypesenumNoKeep only listings matching the selected workplace status (remote or on site). Only jobs with a source-confirmed status are labeled; leave empty to keep all, including unlabeled.
datePostedAfterstringNoOptional date. Keep jobs first posted on or after this date.
datePostedBeforestringNoOptional date. Keep jobs first posted on or before this date.
minCompensationintegerNoKeep only jobs whose published salary is at least this amount, in the listing's own pay-schedule unit. Jobs without a published salary are excluded once this is set.
maxCompensationintegerNoKeep only jobs whose published salary is at most this amount. Leave at 0 for no upper bound.
fetchJobDetailsbooleanNoVisit each job's public detail page to add description, employment type, salary, and application deadline. Turn off for a faster, listing-only run. Defaults to true.
maxItemsintegerNoMaximum number of job listings to return across all searches. Defaults to 100.
proxyConfigurationobjectNoProxy settings. Datacenter proxy is used by default and is enough for Handshake's public pages. Switch to residential only if you see blocking.

๐Ÿ“ค Output

Every run returns one record per job listing. Here's a real example:

{
"id": "9284157",
"title": "Software Engineering Intern, Summer 2027",
"employerName": "Northline Analytics",
"employerLogoUrl": "https://static.joinhandshake.com/logos/northline-analytics.png",
"city": "Austin",
"state": "TX",
"country": "United States",
"locationLabel": "Austin, TX",
"workplaceType": "on_site",
"employmentType": "INTERNSHIP",
"jobType": "Internship",
"roleCategories": ["Software Engineering", "Data Science"],
"salaryMin": 32,
"salaryMax": 38,
"paySchedule": "HOURLY",
"currency": "USD",
"description": "Join our platform team to build internal tools used by every engineer at Northline. You'll ship a real feature during your internship and pair with a senior engineer each week.",
"datePosted": "2026-08-10T00:00:00.000Z",
"applicationDeadline": "2026-10-01T23:59:00.000Z",
"sourceUrl": "https://app.joinhandshake.com/public/jobs/9284157",
"scrapedAt": "2026-08-23T09:12:44.000Z"
}

You can download the dataset in JSON, CSV, Excel, HTML, or XML directly from the Output tab, or pull it into your own tools through the Apify API.

๐Ÿ“Š Data table

FieldTypeDescription
idstringHandshake's internal job ID.
titlestringJob or internship title.
employerNamestringHiring company or organization name.
employerLogoUrlstringDirect link to the employer's logo image, when published.
citystringCity where the role is based.
statestringState where the role is based.
countrystringCountry where the role is based.
locationLabelstringFull location as displayed on Handshake.
workplaceTypestringRemote or on site, when the source page confirms it.
employmentTypestringFull time, part time, internship, temporary, contractor, or volunteer, when published.
jobTypestringWhether the listing is a job or an internship.
roleCategoriesarray of stringsHandshake role categories attached to the listing.
salaryMinnumberMinimum published salary, in the listing's own pay-schedule unit.
salaryMaxnumberMaximum published salary, in the listing's own pay-schedule unit.
paySchedulestringHow the salary is measured, such as hourly, yearly, or per project.
currencystringCurrency of the published salary.
descriptionstringFull job description, when the detail page was fetched.
datePostedstringDate the listing was first posted.
applicationDeadlinestringDate the listing stops accepting applications, when published.
sourceUrlstringDirect link to apply on Handshake.
scrapedAtstringTimestamp of when the record was collected.

๐Ÿ’ฐ Pricing

Pricing is pay per result and is billed per job record successfully saved to your dataset. Empty runs cost nothing.

There are no fixed monthly subscriptions, no maintenance fees, and no charge for filters that return zero matches. You only pay for the listings you actually get back.

โญ Enjoying Handshake Jobs Scraper?

โญ โญ โญ โญ โญ
This feed just saved your team hours of manually checking Handshake for new postings.
A 5-star rating takes 10 seconds and helps other campus recruiters and career-services teams find it. Your feedback also tells us what to build next.
โ˜…ย ย Rate this Actor on Apify

๐Ÿ› ๏ธ Tips for better runs

  • Turn off fetchJobDetails for a faster run when you only need title, employer, and location. Turn it on when you need salary, description, or deadline.
  • Combine a role category with a location to narrow a broad feed without missing relevant postings.
  • Set datePostedAfter and schedule the Actor daily to build a running feed of only new listings.
  • Set minCompensation carefully. Jobs without a published salary are excluded once this filter is set, so a strict minimum will shrink your result count.

โ“ FAQ

Does it get blocked?

No. The Actor reads only public Handshake pages that don't require a login, so there's nothing to block. Datacenter proxy, the default, is enough for reliable runs.

Do I need a Handshake account to use this?

No. Unlike scrapers that require Handshake credentials, this Actor never logs in and never asks for an account. It reads the same public pages any visitor can see.

How fresh is the data?

Every run reads the live Handshake pages at the moment it runs. Nothing is cached or reused from a previous run, so results reflect what's posted right now.

Are all job categories and locations supported?

Yes. Any Handshake role category or location slug works as a filter. Leave both empty to pull the general public feed without a role or location filter.

๐Ÿ”— Other actors