SimplyHired Scraper - Jobs, Salaries USA avatar

SimplyHired Scraper - Jobs, Salaries USA

Pricing

Pay per event

Go to Apify Store
SimplyHired Scraper - Jobs, Salaries USA

SimplyHired Scraper - Jobs, Salaries USA

Scrape SimplyHired job listings: title, company, location, parsed salary, remote flag, benefits, requirements. 20+ structured fields per job. HTTP-only, fast.

Pricing

Pay per event

Rating

0.0

(0)

Developer

deusex machine

deusex machine

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

SimplyHired Scraper API — Jobs, Salaries, Companies USA

A high-performance SimplyHired scraper that extracts complete job listings from SimplyHired.com, one of the largest job aggregators in the United States. Pull 20+ structured fields per job — title, company, location, parsed salary, remote flag, job type, benefits, requirements, snippet — without writing any HTML scraping logic.

Built for recruiters tracking US labor supply, market analysts comparing aggregator data against LinkedIn Jobs, Indeed, and Glassdoor, compensation consultants, founders monitoring competitor hiring, and ML teams training resume-to-job matching models. Output is clean JSON aligned with schema.org JobPosting downstream pipelines, ready for Google BigQuery, Snowflake, Postgres or Google Sheets.

What this SimplyHired scraper does

This actor automates the SimplyHired search the way a real visitor does. It hits the public search results, walks through pagination, and parses the SSR Next.js __NEXT_DATA__ payload embedded in every page. Each search returns 20 jobs with full structured data — no captcha solving, no headless browser.

The scraper is HTTP-only, runs at 512 MB RAM, and uses Apify residential proxies out of the box. A typical 100-job run completes in well under a minute.

Data fields the SimplyHired scraper extracts

Every record contains these fields when present:

  • jobKey — Unique SimplyHired job identifier
  • title — Position title
  • jobUrl — Canonical job URL
  • botUrl — Canonical SimplyHired URL
  • clickUrl — Decoded click-through URL

Company

  • company — Hiring company
  • companyPageUrl — SimplyHired company profile URL
  • companyRating — Star rating when published

Location

  • location — Display location string
  • remote — Boolean: is this a remote job?
  • remoteAttributes — Object with remote-specific attributes

Salary

  • salaryText — Human-readable salary string
  • salaryMin — Lower bound
  • salaryMax — Upper bound
  • salaryType"yearly", "hourly", etc.
  • salaryCurrency — Currency code (typically "USD")

Description & filters

  • snippet — Clean text excerpt
  • snippetHtml — Original HTML markup
  • benefits — Array of benefits when published
  • requirements — Array of requirement chips
  • jobTypes — Array of types ("Full-time", "Contract", etc.)

Posting flags

  • postedRelative — "2 weeks ago", "1 month ago", "Today"
  • postedDate — ISO 8601 timestamp
  • sponsored — Paid placement
  • indeedApply — Indeed Apply available

Use cases for this SimplyHired data API

  1. Recruitment talent radar — Daily stream of new postings filtered by keyword, location, remote flag.
  2. Compensation benchmarking — Aggregate salaryMin/salaryMax by location and role to produce pay bands.
  3. Hiring intelligence — Track which companies post specific roles most often.
  4. ML training data — Use title, snippet, requirements arrays to train job-matching models.
  5. Lead generation — Identify companies hiring specific roles in your target city.
  6. Cross-portal comparison — Combine with Indeed and Glassdoor data for a multi-source US labor view.

How to use this SimplyHired scraper

Mode 1 — Search by keywords

{
"mode": "keywords",
"keywords": ["python developer", "data engineer"],
"location": "United States",
"maxJobs": 100
}

Mode 2 — Search by URLs

{
"mode": "urls",
"searchUrls": [
{ "url": "https://www.simplyhired.com/search?q=remote+python&l=&job_types=fulltime" }
],
"maxJobs": 50
}

Input parameters

ParameterTypeDefaultDescription
modeenum"keywords""keywords" or "urls"
keywordsarray["python developer"]Search keywords
locationstring"United States"Location filter
searchUrlsarray[]Pre-built URLs
maxJobsinteger50Cap per keyword/URL
proxyConfigurationobjectRESIDENTIALApify proxy

Output example (single record, JSON)

{
"jobKey": "BTNoUIy-flw5zkmW8V2PJsXjKOZJwf2U-FwkmUHzs3eFJqVFkCg-PA",
"title": "DeepTech AI/Capital Markets company",
"company": "Purple Shaman",
"location": "Remote",
"remote": true,
"salaryText": "$120,000 - $180,000 a year",
"salaryMin": 120000,
"salaryMax": 180000,
"salaryType": "yearly",
"salaryCurrency": "USD",
"jobTypes": ["Full-time"],
"benefits": ["Health insurance", "401(k)"],
"requirements": ["3+ years Python", "AWS experience"],
"snippet": "AI-assisted research agents capable of aggregating and structuring information...",
"postedRelative": "2 weeks ago",
"postedDate": "2026-05-09T00:00:00+00:00",
"sponsored": false,
"indeedApply": false,
"jobUrl": "https://www.simplyhired.com/job/BTNoUIy-flw5zkmW8V2PJsXjKOZJwf2U-..."
}

How to call this SimplyHired scraper from your code

From the Apify API (curl)

curl -X POST "https://api.apify.com/v2/acts/makework36~simplyhired-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"keywords","keywords":["data engineer"],"location":"New York, NY","maxJobs":100}'

From Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("makework36/simplyhired-scraper").call(run_input={
"mode": "keywords",
"keywords": ["python developer"],
"location": "United States",
"maxJobs": 200,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], job["company"], job.get("salaryText"))

From Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('makework36/simplyhired-scraper').call({
mode: 'keywords',
keywords: ['software engineer'],
location: 'Seattle, WA',
maxJobs: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} jobs`);

Export to CSV

$curl "https://api.apify.com/v2/acts/makework36~simplyhired-scraper/runs/last/dataset/items?format=csv&token=$APIFY_TOKEN" -o simplyhired_jobs.csv

Performance & cost

Pure HTTP with __NEXT_DATA__ parsing — no detail fetches needed.

Run sizeTime
15 jobs~10 s
100 jobs~50–70 s
1,000 jobs~8–10 min

Each page is ~370 KB. For 1,000 jobs (~50 pages) expect ~18 MB of residential proxy traffic.

SimplyHired scraper comparison

FeatureThis actorBrowser-only with proxyHeadless w/ captcha solver
Output fields20+ structured10–1512
Salary parsedpartialpartial
Remote flag auto-detectedmanual
Pure HTTP
Memory512 MB4 GB4 GB
PricingPAY_PER_EVENT tieredflatflat

Step-by-step tutorial — your first run in 2 minutes

  1. Click Try for free at the top of this page.
  2. Leave mode as keywords.
  3. Set a target keyword (e.g. "data analyst") and adjust location if needed.
  4. Set maxJobs to 20 for a quick first run.
  5. Click Start. The run finishes in ~10–15 seconds.
  6. Open the dataset; you'll see a table with titles, companies, locations, salaries.
  7. Export as CSV, JSON or Excel.
  8. Scale maxJobs or schedule a recurring run as needed.

Advanced usage patterns

Pattern A — Cross-portal aggregation

Combine SimplyHired output with Indeed and Glassdoor datasets. Deduplicate by (title, company, location) to build a wider US labor view.

Pattern B — Remote-only feed

Filter outputs where remote == true. Combine with a salary floor for premium remote tech jobs.

Aggregate requirements array across all jobs. Plot top skills over weekly cron runs to spot rising tools.

Pattern D — Benefits comparison report

Parse the benefits array. Compare frequency of "Health insurance", "401(k)", "Remote work" across companies in your sector.

Pattern E — Lead generation for B2B services

Pull all companies hiring "growth marketer" or "VP of marketing". Use company + location to build outreach lists.

Troubleshooting

Some salary fields are null. Not every SimplyHired posting includes salary. About 50% of US listings have it. The salaryMin/salaryMax fields populate only when the employer publishes the range.

HTTP 403 errors in the logs. SimplyHired rate-limits each IP. The actor rotates Apify residential proxy sessions automatically. As long as the final job count is non-zero, the scraper recovered.

The jobUrl is encoded. SimplyHired returns redirect URLs with percent-encoding. The actor decodes them automatically to a clean URL.

My run hit a proxy budget limit. Each page is ~370 KB. For 1,000 jobs (~50 pages) expect ~18 MB. Check your Apify residential allowance.

I want only remote jobs. The actor doesn't filter pre-extract, but post-filter on remote == true is straightforward in the dataset export.

Pricing

This actor uses PAY_PER_EVENT pricing with tiered volume discounts.

TierPer job ($/1K)
FREE$2.00
BRONZE$1.50
SILVER$1.10
GOLD$0.75
PLATINUM$0.55
DIAMOND$0.40

Plus a one-time $0.001 per actor run.

FAQ

Is scraping SimplyHired legal? This actor accesses publicly available pages — no login, no paywall bypass. Always check SimplyHired's terms of service and consult counsel for your jurisdiction.

How fresh is the data? The scraper fetches in real time. SimplyHired updates listings continuously.

Can I scrape SimplyHired without writing code? Yes — use the input form on this page, click Start, then download the dataset.

Why is this scraper cheaper than other actors? It's pure HTTP — no headless browser. That's a 10× memory saving, passed back as lower pricing.

Does the scraper deduplicate? Yes. jobKey is tracked across pages to skip duplicates.

Why does the scraper need Residential proxies? SimplyHired rate-limits datacenter IPs. Apify residential proxies route through real households, which SimplyHired accepts.

Can I scrape SimplyHired UK / Canada? Currently the actor targets the US SimplyHired domain. International coverage is on the roadmap.

Is there a rate limit on my side? The actor uses small jitter between pages and rotates proxy sessions. For very large runs split across multiple Apify Tasks.

Changelog

  • 0.1 (2026-05) — Initial release. Keywords + URLs modes. SSR __NEXT_DATA__ parsing. 20+ fields. Residential proxy default.

This SimplyHired scraper accesses publicly available information. It does not bypass authentication, paywalls, or extract personally identifiable information beyond what employers and SimplyHired display publicly. Users are responsible for complying with SimplyHired's terms of service, the Computer Fraud and Abuse Act, and any applicable data protection regulations. The author of this actor accepts no responsibility for misuse.