SimplyHired Scraper avatar

SimplyHired Scraper

Pricing

from $0.95 / 1,000 results

Go to Apify Store
SimplyHired Scraper

SimplyHired Scraper

[๐Ÿ’ฐ $0.95 / 1K] Extract US job listings from SimplyHired โ€” title, company, location, salary, employment type, description, qualifications, benefits, and apply URL. Search by keyword + location with filters for date posted, job type, salary, and distance.

Pricing

from $0.95 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

17 days ago

Last modified

Share

Pull US job listings from SimplyHired at scale โ€” title, employer, location, parsed salary range, full long-form description, qualifications and benefits bullets, employer rating, posted date, and a one-click apply link. Built for recruiters, sales teams chasing hiring-signal leads, salary analysts, and ATS/HR-tech vendors who need a fresh, structured job-postings feed without babysitting yet another keyword crawler.

Why This Scraper?

  • The full posting body, not the 160-character search-card snippet โ€” the complete long-form description (median 2,350 to 2,550 characters, roughly 15ร— the snippet) and a parsed qualifications list land on 99% of full-detail rows, with a median of 6 qualification bullets each and a long tail past 25 bullets on the most detailed postings. A benefits list comes back on 77% of listings, wherever the employer published one.
  • Salary broken out into min, max, currency, and pay period โ€” roughly 6 in 10 of the listings that name pay at all quote it by the hour (64% over a 2,266-row measurement), so hourly, daily, weekly and monthly pay is annualized on the US work-year (2,080 hours, 260 days, 52 weeks, 12 months) while salaryPeriod keeps the cadence the employer actually posted. Per-mile and per-piece rates, the norm in trucking, are never passed off as an annual figure, so sorting a "$45 an hour" role against a "$120,000 a year" one is always apples to apples.
  • A working apply link on 99% of full-detail rows โ€” SimplyHired hides it behind an encoded token that never renders as a readable URL anywhere on the page. We decode it into a one-click apply link you can hand a candidate or push straight into an ATS.
  • Employment type separated from shift and schedule tags โ€” SimplyHired dumps "Full-time", "8 hour shift", "Weekends as needed" and "Online Application" into one unsorted bag. We resolve the real employment type against a 20+ label vocabulary (Full-time through Per diem, PRN, Locum tenens and Travel nursing) and hand everything else back as jobTags, so a filter on "Part-time" never catches a night-shift note.
  • Filter by 5 employment types (Full-time, Part-time, Contract, Temporary, Internship) and 7 commute radius options (Exact location, plus 5/10/15/25/50/100-mile rings).
  • Minimum-salary filtering across 9 thresholds from $40K to $225K+ โ€” cut entry-level noise from a senior-only sourcing run in one dropdown.
  • Date-posted windows of 24 hours, 7, 14, or 30 days that actually hold โ€” on a measured "last 24 hours" run, all 308 rows came back posted inside the window, so a nightly refresh never re-reads yesterday's jobs. Add the recency sort to push the freshest postings toward the front.
  • Multi-keyword batch runs of up to 50 search terms in a single invocation โ€” pay one setup cost, get one combined dataset back, auto-deduped on SimplyHired's stable jobKey.
  • URL-as-input โ€” paste any SimplyHired search URL (your hand-tuned filters and all) into startUrls and it replays exactly. Mix raw URLs and keyword searches in the same run.

Use Cases

Recruiting & Talent Sourcing

  • Track competitor postings to map their hiring roadmap and team expansion
  • Surface hard-to-fill roles that have sat open across multiple refresh cycles
  • Build remote-friendly candidate pipelines by combining location: "Remote" with skill keywords

Sales & Lead Generation

  • Identify companies actively hiring โ€” the strongest growth signal a B2B prospect can give
  • Build target-account lists by role: every company posting "VP of Engineering" right now
  • Power ATS, payroll, or HR-tech outbound by feeding new postings straight into your CRM

Salary Benchmarking & Compensation Research

  • Real-time market rates by job title, geography, and experience level
  • Hourly-to-annual normalization lets you blend retail, healthcare, and corporate roles in one analysis
  • Track posted salary ranges over time to spot wage inflation in tight markets

Market & Industry Intelligence

  • Track hiring trends in tech, healthcare, finance, logistics, or any vertical you cover
  • Map regional hiring shifts โ€” Sun Belt vs Northeast, remote vs in-office, urban vs suburban
  • Benchmark a company's job-mix against peers (engineering-heavy vs sales-heavy)

Career & Job Board Products

  • Power a niche job board with fresh, deduplicated postings for your audience
  • Augment rรฉsumรฉ-matching AI with up-to-date job descriptions and qualifications
  • Feed alerting products that ping users when a target role appears

Workforce Analytics & Talent Mobility

  • Track which employers are leaning into remote-friendly work models
  • Quantify hiring velocity by metro to inform relocation and recruiting strategy
  • Build datasets for academic and policy research on US labor markets

Getting Started

The minimum input โ€” one keyword, all-US coverage, top 100 results:

{
"keywords": ["software engineer"],
"maxResults": 100
}

Fresh-Only, High-Salary Sourcing

Senior roles only, posted in the last 7 days, with the freshest postings pushed toward the front:

{
"keywords": ["staff engineer", "principal engineer"],
"location": "San Francisco, CA",
"distance": "50",
"minSalary": "175000",
"datePosted": "7",
"sort": "date",
"maxResults": 200
}

Remote-Only Contract Roles

{
"keywords": ["data scientist", "machine learning engineer"],
"location": "Remote",
"jobType": "contract",
"maxResults": 150
}

Paste a SimplyHired URL Directly

Use a hand-crafted search URL exactly as you built it in the UI:

{
"startUrls": [
"https://www.simplyhired.com/search?q=registered+nurse&l=Boston%2C+MA&t=7&jt=CF3CP"
],
"maxResults": 100
}

Fast List-Mode Run (No Descriptions)

Skip the full postings for a fast, lean dataset with only search-card fields:

{
"keywords": ["barista", "server", "host"],
"location": "Austin, TX",
"includeDescription": false,
"maxResults": 500
}

Input Reference

ParameterTypeDefaultDescription
keywordsstring[]["software engineer"]Job-title or skill keywords. Each keyword runs as its own search and is combined with the Location below. Up to 50 keywords per run.
locationstring"United States"City, state, ZIP code, or "Remote". Applied to every keyword. Leave as "United States" for nationwide coverage.
startUrlsstring[][]Paste SimplyHired search URLs directly. Any filters in the URL are honored as-is. Mix freely with keyword searches.

Filters

ParameterTypeDefaultDescription
datePostedselectAny timeRecency window: Any time, Last 24 hours, Last 7 days, Last 14 days, Last 30 days.
jobTypeselectAll typesEmployment type: All types, Full-time, Part-time, Contract, Temporary, Internship.
minSalaryselectNo minimumAnnual salary floor: No minimum, $40,000+, $60,000+, $80,000+, $100,000+, $120,000+, $150,000+, $175,000+, $200,000+, $225,000+.
distanceselectWithin 25 milesSearch radius around the location: Exact location, Within 5 miles, Within 10 miles, Within 15 miles, Within 25 miles, Within 50 miles, Within 100 miles.
sortselectRelevance (default)Result ordering: Relevance (default) or Date (recent first). Date is a recency ranking that pushes fresher postings toward the front, not a strict timestamp sort โ€” pair it with datePosted when you need a hard freshness cut-off.

Limits & Detail

ParameterTypeDefaultDescription
maxResultsinteger100Hard cap on total jobs across all keywords and URLs. Set to 0 to keep going until the search runs dry, up to a 50,000-row ceiling. The run stops looking for more jobs once the cap is reached but keeps the full final page of 20, so a 100-cap run hands back 100 to 120 rows.
includeDescriptionbooleantrueOn by default: every row carries the full long-form description, the qualifications list, and a working apply link. Turn it off and exactly three fields go empty (description, qualifications, applyUrl); everything else still arrives and jobs land about 1.6 to 1.8ร— faster.

Output

One row per job listing. Example with includeDescription: true:

{
"recordType": "job",
"jobKey": "abc123def456",
"title": "Senior Software Engineer",
"company": "Acme Cloud",
"companyUrl": "https://www.simplyhired.com/browse-jobs/companies/Acme-Cloud",
"location": "Austin, TX",
"isRemote": false,
"salary": "$140,000 - $185,000 a year",
"salaryMin": 140000,
"salaryMax": 185000,
"salaryCurrency": "USD",
"salaryPeriod": "yearly",
"jobType": "Full-time",
"jobTags": ["Monday to Friday", "Day shift", "On call"],
"description": "We're hiring a Senior Software Engineer to lead our data platform team...",
"snippet": "Lead the data platform team. 5+ years experience required. Hybrid in Austin.",
"qualifications": [
"5+ years backend experience",
"Strong systems design background",
"Experience with cloud platforms (AWS, GCP)"
],
"benefits": ["Health insurance", "401(k) match", "Unlimited PTO", "Equity"],
"companyRating": 4.2,
"datePosted": "3 days ago",
"datePostedAt": "2026-05-13T14:22:00Z",
"sponsored": false,
"url": "https://www.simplyhired.com/job/abc123def456",
"applyUrl": "https://www.simplyhired.com/out?r=9h0V_QjDWUTjxjyZhLA-K2DVNYm87m7v",
"sourceQuery": "software engineer",
"scrapedAt": "2026-05-16T10:05:33Z"
}

Core Fields

FieldTypeDescription
recordTypestringRow-kind marker, always "job" โ€” lets you merge this dataset with other feeds and still filter cleanly.
jobKeystringStable SimplyHired identifier โ€” use this as your dedupe key.
titlestringJob title as posted by the employer.
companystringHiring company name.
locationstringCity, state, or "Remote".
isRemotebooleanTrue when the listing is explicitly remote.
urlstringCanonical SimplyHired listing URL.
sourceQuerystringThe keyword or URL that produced this row โ€” useful for filtering downstream.
scrapedAtstringISO 8601 timestamp of capture.

Compensation

FieldTypeDescription
salarystringSalary as displayed on the listing (e.g. "$120,000 - $150,000 a year").
salaryMinnumberMinimum annual salary in USD. Hourly, daily, weekly and monthly pay is converted on the US work-year (2,080 hours, 260 days, 52 weeks, 12 months).
salaryMaxnumberMaximum annual salary in USD. Equals salaryMin when the listing names one exact figure, stays empty on open-ended floors such as "From $17 an hour", and salaryMin is the one left empty on ceilings such as "Up to $100,000 a year".
salaryCurrencystringCurrency code. "USD" on every listing that names pay, empty on the 1 in 6 that name none.
salaryPeriodstringCadence the employer quoted the pay at, and what salaryMin/salaryMax were annualized from: "hourly", "daily", "weekly", "monthly", or "yearly".

Both numeric columns come back empty in exactly three cases, and in every one of them the verbatim salary text is kept, so the rate is never lost:

  1. Pay quoted per non-time unit โ€” "$0.90 - $1.00 per mile", "Up to $10,000 per student". There is no work-year to convert against, and the cents-per-mile figure is not a salary.
  2. An annualized figure above $2,000,000 โ€” employers routinely type a yearly range into the hourly field ("$71,000 - $150,000 an hour"), which would otherwise publish a $312,000,000 maximum and park it at the top of every salary sort.
  3. A figure of zero or below โ€” "$0 a year" is an employer declining to state pay, not a job that pays nothing, so it never enters your data as a confirmed salary of zero.

Job Details

FieldTypeDescription
jobTypestringEmployment type label (Full-time, Part-time, Contract, Temporary, Internship, Seasonal, Per diem, Freelance, and more) โ€” null when the employer did not specify one.
jobTagsstring[]Every other label on the listing: shift patterns (8 hour shift, Night shift), schedule notes (Weekends as needed, Monday to Friday, Overtime), and application hints (Online Application). Empty when the employer added none.
snippetstringShort preview shown on the search-result card.
descriptionstringFull plain-text job description, median 2,350 to 2,550 characters. Populated when includeDescription: true.
qualificationsstring[]Bulleted qualifications list from the full posting, median 6 bullets. Populated when includeDescription: true.
benefitsstring[]Bulleted benefits list (health, 401(k), PTO, equity, etc.), median 6 bullets. Read off the search card, so it is there even with includeDescription: false.

Posting Metadata

FieldTypeDescription
datePostedstringHuman-readable post age (e.g. "3 days ago", "today").
datePostedAtstringParsed ISO 8601 timestamp โ€” ready for sorting or filtering.
sponsoredbooleanTrue when the card is a paid promotion.

Application & Company

FieldTypeDescription
applyUrlstringOne-click apply link for the listing, decoded from SimplyHired's encoded token. Only available when includeDescription: true.
companyUrlstringSimplyHired company-profile URL when available.
companyRatingnumberEmployer star rating out of 5, when shown.

Tips for Best Results

  • For daily sourcing pipelines, combine sort: "date" with datePosted: "7" and re-run nightly. datePosted is the hard cut-off that keeps anything older out of the dataset; sort: "date" then pushes the freshest postings toward the front of the run. Feed the output straight into your ATS or CRM.
  • Set includeDescription: false for keyword-survey runs. Exactly three fields go empty: description, qualifications and applyUrl. Salary breakdown, benefits, employer rating, employment type, shift tags and posted date all still come off the search card, and jobs land in your dataset about 1.6 to 1.8ร— faster.
  • High-volume keywords need bigger caps. For broad terms like "software engineer" or "registered nurse", set maxResults to 200+ so the run keeps going well past the first few pages. The default 100 runs out around the sixth page of 20-job results, and because a run always finishes the page it is on rather than cutting mid-page, a 100-cap run hands back 100 to 120 jobs, not exactly 100.
  • location: "Remote" is a hard filter, not a boost โ€” a measured remote run came back 312 rows, every single one of them remote. To blend remote roles with commutable on-site ones in one dataset, put two search URLs in startUrls: one with the Remote location, one with your hub city and a radius.
  • Replicate any UI search exactly by pasting the SimplyHired URL (with your filters applied in the browser) into startUrls. Every filter you set in the browser carries over, and the run keeps paging well past the first screen the site shows you.
  • Watch the sponsored flag for downstream analytics โ€” paid placements skew duplicate-employer counts upward in market-share studies. Filter them out when you want organic listings only.
  • Combine related keywords in one run. ["data engineer", "data scientist", "ML engineer"] in a single invocation gives you one deduplicated dataset (SimplyHired's jobKey is the dedupe anchor) and avoids paying setup costs three times. Allow at least 20 results of maxResults headroom per keyword โ€” results arrive 20 to a page, so a 100-cap run spreads across about five keywords before it is spent.

Pricing

From $0.95 per 1,000 results โ€” one flat rate whether you pull search-card rows or full job descriptions. No compute or time-based charges: you pay per result, plus a small fixed start fee each time a run begins. Bronze, Silver, and Gold subscribers pay progressively less, and the table below shows the total cost at each discount tier.

ResultsNo discountBronzeSilverGold
100$0.114$0.108$0.101$0.095
1,000$1.14$1.08$1.01$0.95
10,000$11.40$10.80$10.10$9.50
100,000$114.00$108.00$101.00$95.00

A "result" is one job row in your dataset. Standard Apify platform fees apply on top.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n โ€” Workflow automation into your ATS, CRM, or data warehouse
  • Google Sheets โ€” Direct spreadsheet export for ad-hoc analysis
  • Slack / Email โ€” Notifications when new postings match a saved query
  • Webhooks โ€” Trigger custom APIs on run completion
  • Apify API โ€” Full programmatic access for production pipelines

This actor is designed for legitimate recruiting, market research, salary benchmarking, and lead-generation use cases. Users are responsible for complying with applicable laws and SimplyHired's Terms of Service. Treat any personal data (employer contact emails, candidate-adjacent information) in line with GDPR, CCPA, and other relevant privacy regulations in your jurisdiction. Consult a qualified attorney for guidance specific to your use case. Do not use extracted data for spam, harassment, discriminatory hiring practices, or any unlawful purpose.