SimplyHired Scraper
Pricing
from $0.95 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
17 days ago
Last modified
Categories
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
salaryPeriodkeeps 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
startUrlsand 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
Simple Keyword Search
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
Search
| Parameter | Type | Default | Description |
|---|---|---|---|
keywords | string[] | ["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. |
location | string | "United States" | City, state, ZIP code, or "Remote". Applied to every keyword. Leave as "United States" for nationwide coverage. |
startUrls | string[] | [] | Paste SimplyHired search URLs directly. Any filters in the URL are honored as-is. Mix freely with keyword searches. |
Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
datePosted | select | Any time | Recency window: Any time, Last 24 hours, Last 7 days, Last 14 days, Last 30 days. |
jobType | select | All types | Employment type: All types, Full-time, Part-time, Contract, Temporary, Internship. |
minSalary | select | No minimum | Annual salary floor: No minimum, $40,000+, $60,000+, $80,000+, $100,000+, $120,000+, $150,000+, $175,000+, $200,000+, $225,000+. |
distance | select | Within 25 miles | Search radius around the location: Exact location, Within 5 miles, Within 10 miles, Within 15 miles, Within 25 miles, Within 50 miles, Within 100 miles. |
sort | select | Relevance (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
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 100 | Hard 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. |
includeDescription | boolean | true | On 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
| Field | Type | Description |
|---|---|---|
recordType | string | Row-kind marker, always "job" โ lets you merge this dataset with other feeds and still filter cleanly. |
jobKey | string | Stable SimplyHired identifier โ use this as your dedupe key. |
title | string | Job title as posted by the employer. |
company | string | Hiring company name. |
location | string | City, state, or "Remote". |
isRemote | boolean | True when the listing is explicitly remote. |
url | string | Canonical SimplyHired listing URL. |
sourceQuery | string | The keyword or URL that produced this row โ useful for filtering downstream. |
scrapedAt | string | ISO 8601 timestamp of capture. |
Compensation
| Field | Type | Description |
|---|---|---|
salary | string | Salary as displayed on the listing (e.g. "$120,000 - $150,000 a year"). |
salaryMin | number | Minimum 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). |
salaryMax | number | Maximum 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". |
salaryCurrency | string | Currency code. "USD" on every listing that names pay, empty on the 1 in 6 that name none. |
salaryPeriod | string | Cadence 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:
- 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. - 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. - 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
| Field | Type | Description |
|---|---|---|
jobType | string | Employment type label (Full-time, Part-time, Contract, Temporary, Internship, Seasonal, Per diem, Freelance, and more) โ null when the employer did not specify one. |
jobTags | string[] | 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. |
snippet | string | Short preview shown on the search-result card. |
description | string | Full plain-text job description, median 2,350 to 2,550 characters. Populated when includeDescription: true. |
qualifications | string[] | Bulleted qualifications list from the full posting, median 6 bullets. Populated when includeDescription: true. |
benefits | string[] | 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
| Field | Type | Description |
|---|---|---|
datePosted | string | Human-readable post age (e.g. "3 days ago", "today"). |
datePostedAt | string | Parsed ISO 8601 timestamp โ ready for sorting or filtering. |
sponsored | boolean | True when the card is a paid promotion. |
Application & Company
| Field | Type | Description |
|---|---|---|
applyUrl | string | One-click apply link for the listing, decoded from SimplyHired's encoded token. Only available when includeDescription: true. |
companyUrl | string | SimplyHired company-profile URL when available. |
companyRating | number | Employer star rating out of 5, when shown. |
Tips for Best Results
- For daily sourcing pipelines, combine
sort: "date"withdatePosted: "7"and re-run nightly.datePostedis 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: falsefor keyword-survey runs. Exactly three fields go empty:description,qualificationsandapplyUrl. 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", setmaxResultsto 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 instartUrls: 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
sponsoredflag 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'sjobKeyis the dedupe anchor) and avoids paying setup costs three times. Allow at least 20 results ofmaxResultsheadroom 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.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 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
Legal & Ethical Use
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.