SimplyHired Scraper avatar

SimplyHired Scraper

Pricing

from $1.99 / 1,000 results

Go to Apify Store
SimplyHired Scraper

SimplyHired Scraper

Scrape job listings from SimplyHired.com with salary, job type, and full descriptions. Keyword + location search, daysOld filter, remote jobs, and startUrls support.

Pricing

from $1.99 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

2

Monthly active users

42 minutes ago

Last modified

Categories

Share

SimplyHired Scraper

Extract structured job listings from SimplyHired.com β€” one of the largest US job aggregators with over 100,000 active listings across all industries and locations. No API key required, no account needed.


Why this scraper?

Search by any keyword and any US city, state, or ZIP code. Combine both to target the exact market you are monitoring.

πŸ“‹ Full job descriptions

Three formats in every result: HTML (for rendering), plain text (for analysis), and Markdown (for LLMs and pipelines). Fetched from the canonical job page.

πŸ’° Structured salary data

Where published by the employer, salary minimum, maximum, and period (hourly, annual) are returned as numeric fields β€” ready for aggregation and comparison without string parsing.

πŸ” Repost detection

Cross-run deduplication flags listings that reappear under a new posting ID. Filter them out to keep your dataset clean, or track them to measure time-on-market.

πŸ—“οΈ Date filtering

The Max age (days) filter limits results to listings posted in the last 1, 3, 7, 14, or 30 days β€” ideal for scheduled runs tracking only new postings.

🎯 Employment type filtering

Filter by full-time, part-time, contract, temporary, or internship in a single input field.


Input parameters

| Parameter | Type | Required | descriptionHtml | String | Full job description as raw HTML. null if not fetched. | | descriptionText | String | Plain-text version of the description, HTML tags removed. | | descriptionMarkdown | String | Markdown version of the job description. | |-----------|------|----------|-------------| | searchQuery | String | No | Keywords to search for (e.g. nurse, Java developer) | | location | String | No | City, state, or ZIP code (e.g. Austin, TX, 10001) | | jobType | String | No | fulltime, parttime, contract, temporary, internship | | daysOld | Integer | No | Max age of listings in days (1, 3, 7, 14, or 30) | | maxResults | Integer | No | Maximum listings to return (default: 100, max: 10,000) | | fetchDetails | Boolean | No | Fetch full description from each listing page (default: true) | | skipReposts | Boolean | No | Skip listings seen in previous runs (default: false) | | startUrls | Array | No | Specific SimplyHired job URLs to scrape directly |


Output schema

Each result contains the following fields.

Always present:

FieldTypeDescription
idstringUnique job listing ID from the source platform.
urlstringDirect URL to the job listing.
titlestringJob title as published.
companystringEmployer / company name.
locationstringFull location as published (city, region, or country).
salarystringRaw salary string as shown on the site (null if not published).
salaryMinnumberMinimum salary (null if not published by employer).
salaryMaxnumberMaximum salary (null if not published by employer).
salaryPeriodstringSalary period: YEAR / MONTH / WEEK / DAY / HOUR.
currencystringcurrency field.
jobTypestringType of employment (Full-time, Part-time, Contract, etc.).
remotebooleanTrue if the role allows remote work.
companyRatingintegercompanyRating field.
sponsoredbooleansponsored field.
latitudenumberGPS latitude of the work location.
applyUrlstringDirect application URL (null if not available).
publishDatestringPublication date (YYYY-MM-DD).
publishDateISOstringPublication date in ISO 8601 format.
contentHashstringMD5 hash of key fields for change detection (16 chars).
summarystringHuman-readable one-line summary of the listing.
sourcestringSource domain name (e.g. 'pracuj.pl').
scrapedAtstringISO 8601 timestamp of when this item was scraped.
isRepostbooleanTrue if this listing was seen in a previous run (90-day window).
originalPublishDatestringOriginal publish date if this is a repost (null otherwise).
originalUrlstringOriginal URL if this is a repost (null otherwise).

With fetchDetails: true (default):

FieldTypeDescription
benefitsarrayEmployee benefits listed by the employer.
requirementsarrayrequirements field.
descriptionstringFull job description as raw HTML (null if fetchDetails is false).
descriptionTextstringFull job description as plain text (null if fetchDetails is false).
descriptionMarkdownstringFull job description in Markdown format (null if fetchDetails is false).

Example output record:

{
"id": "AbCdEfGhIjKlMnOpQrSt",
"url": "https://www.simplyhired.com/job/AbCdEfGhIjKlMnOpQrSt",
"title": "Senior Software Engineer",
"company": "Acme Corp",
"location": "Austin, TX",
"salary": "$120,000 - $160,000 a year",
"salaryMin": 120000,
"salaryMax": 160000,
"salaryPeriod": "YEAR",
"currency": "USD",
"jobType": "FULL_TIME",
"remote": false,
"companyRating": 4.2,
"sponsored": false,
"latitude": 30.2672,
"longitude": -97.7431,
"benefits": ["Health insurance", "401(k)", "Dental insurance"],
"requirements": ["Python", "AWS", "5+ years experience"],
"description": "<div class=\"jobDescription\">...</div>",
"descriptionText": "We are looking for a Senior Software Engineer...",
"descriptionMarkdown": "## About the role\n\nWe are looking for...",
"applyUrl": "https://acme.com/careers/apply/123",
"publishDate": "2026-04-01",
"publishDateISO": "2026-04-01",
"contentHash": "a1b2c3d4e5f67890",
"summary": "Senior Software Engineer at Acme Corp β€” Austin, TX",
"source": "simplyhired.com",
"scrapedAt": "2026-04-04T09:15:33.000Z",
"isRepost": false,
"originalPublishDate": null,
"originalUrl": null
}

Examples

Example 1 β€” Browse all nursing jobs nationwide

{
"searchQuery": "nurse",
"maxResults": 200,
"fetchDetails": true
}

Example 2 β€” Recent software engineering jobs in San Francisco

{
"searchQuery": "software engineer",
"location": "San Francisco, CA",
"jobType": "fulltime",
"daysOld": 7,
"maxResults": 100
}

Example 3 β€” Fast list-level snapshot without descriptions

{
"searchQuery": "marketing",
"daysOld": 3,
"fetchDetails": false,
"maxResults": 500,
"skipReposts": true
}

Example 4 β€” Scrape specific known job listings

{
"startUrls": [
{ "url": "https://www.simplyhired.com/job/AbCdEfGhIjKlMnOpQrSt" },
{ "url": "https://www.simplyhired.com/job/LmNoPqRsTuVwXyZ12345" }
]
}

Example 5 β€” Daily monitor: new contract jobs in New York

{
"searchQuery": "data analyst",
"location": "New York, NY",
"jobType": "contract",
"daysOld": 1,
"skipReposts": true,
"maxResults": 1000
}

πŸ’° Pricing

$1.99 per 1,000 results β€” you only pay for successfully retrieved listings. Failed retries and filtered reposts are never charged.

ResultsCost
100~$0.20
1,000~$1.99
10,000~$19.90
100,000~$199.00

Flat-rate alternatives typically charge $29–$99/month regardless of usage. At 5,000 results/month, this scraper costs far less with no commitment.

Use the Max results cap and fetchDetails: false to control your spend precisely.


Pricing

This actor uses Pay Per Result pricing at $1.99 per 1,000 results.

VolumeCost
100 results$0.20
1,000 results$1.99
10,000 results$19.90

No subscription fees. Pay only for successfully scraped listings.


Performance

Run sizefetchDetailsApprox. duration
100 resultstrue~3–5 min
500 resultstrue~12–20 min
1,000 resultsfalse~5–8 min
5,000 resultsfalse~20–35 min

SimplyHired serves approximately 20 results per page.


Known limitations

  • Apply URL: SimplyHired routes applications through a tracking layer. The applyUrl field contains the employer's redirected destination where available; it may be null when the application flow is handled internally.
  • Salary: Not published by all employers β€” will be null for listings without disclosed compensation.
  • Sponsored listings: Sponsored results appear in the same feed as organic results and are not filtered out. Use skipReposts across scheduled runs to avoid double-counting.
  • Remote/hybrid status: Only flagged when the listing explicitly contains "remote" in the location field. Hybrid arrangements may not always be captured.

Technical details

  • Source: simplyhired.com β€” US job aggregator with 100,000+ active listings
  • Memory: 512 MB
  • Repost storage: KeyValueStore simplyhired-job-dedup, 90-day TTL
  • Retry: Automatic retry on network errors, exponential backoff, 3 attempts per request
  • Concurrency: Sequential page fetching with session pinning

Additional services

Need a custom actor, additional filters, scheduled runs, or integration support? Send an email to info@unfencedgroup.nl β€” we build on request.


Built by unfenced-group Β· Issues? Open a ticket or send a message.