SimplyHired Scraper
Pricing
from $1.99 / 1,000 results
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
Actor stats
1
Bookmarked
3
Total users
2
Monthly active users
42 minutes ago
Last modified
Categories
Share

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?
π Keyword + location search
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:
| Field | Type | Description |
|---|---|---|
id | string | Unique job listing ID from the source platform. |
url | string | Direct URL to the job listing. |
title | string | Job title as published. |
company | string | Employer / company name. |
location | string | Full location as published (city, region, or country). |
salary | string | Raw salary string as shown on the site (null if not published). |
salaryMin | number | Minimum salary (null if not published by employer). |
salaryMax | number | Maximum salary (null if not published by employer). |
salaryPeriod | string | Salary period: YEAR / MONTH / WEEK / DAY / HOUR. |
currency | string | currency field. |
jobType | string | Type of employment (Full-time, Part-time, Contract, etc.). |
remote | boolean | True if the role allows remote work. |
companyRating | integer | companyRating field. |
sponsored | boolean | sponsored field. |
latitude | number | GPS latitude of the work location. |
applyUrl | string | Direct application URL (null if not available). |
publishDate | string | Publication date (YYYY-MM-DD). |
publishDateISO | string | Publication date in ISO 8601 format. |
contentHash | string | MD5 hash of key fields for change detection (16 chars). |
summary | string | Human-readable one-line summary of the listing. |
source | string | Source domain name (e.g. 'pracuj.pl'). |
scrapedAt | string | ISO 8601 timestamp of when this item was scraped. |
isRepost | boolean | True if this listing was seen in a previous run (90-day window). |
originalPublishDate | string | Original publish date if this is a repost (null otherwise). |
originalUrl | string | Original URL if this is a repost (null otherwise). |
With fetchDetails: true (default):
| Field | Type | Description |
|---|---|---|
benefits | array | Employee benefits listed by the employer. |
requirements | array | requirements field. |
description | string | Full job description as raw HTML (null if fetchDetails is false). |
descriptionText | string | Full job description as plain text (null if fetchDetails is false). |
descriptionMarkdown | string | Full 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.
| Results | Cost |
|---|---|
| 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.
| Volume | Cost |
|---|---|
| 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 size | fetchDetails | Approx. duration |
|---|---|---|
| 100 results | true | ~3β5 min |
| 500 results | true | ~12β20 min |
| 1,000 results | false | ~5β8 min |
| 5,000 results | false | ~20β35 min |
SimplyHired serves approximately 20 results per page.
Known limitations
- Apply URL: SimplyHired routes applications through a tracking layer. The
applyUrlfield contains the employer's redirected destination where available; it may benullwhen the application flow is handled internally. - Salary: Not published by all employers β will be
nullfor listings without disclosed compensation. - Sponsored listings: Sponsored results appear in the same feed as organic results and are not filtered out. Use
skipRepostsacross 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.