Simplyhired Jobs Search Scraper
Pricing
from $2.99 / 1,000 simplyhired job records
Simplyhired Jobs Search Scraper
Scrape job listings from SimplyHired, a global job search aggregator. Extract job titles, companies, locations, salary estimates, and job types for comprehensive job market analysis and recruitment research.
What does SimplyHired Jobs Search Scraper do?
SimplyHired Jobs Search Scraper extracts public vacancies from SimplyHired and opens every selected detail page before writing data. It provides a structured SimplyHired jobs API alternative for recruitment research, job-market intelligence, vacancy monitoring, and employer analysis.
The Actor supports keyword search, exact single-job retrieval, multiple detail URLs, and mixed official start URLs. Search results are deduplicated by canonical job key. Only detail-verified job records that pass identity and required-field validation are written to the Dataset.
Why use this SimplyHired scraper?
- Extract full job descriptions rather than search-card snippets alone.
- Collect company, location, work setting, employment type, salary, benefit, qualification, date, and application fields.
- Run locally or on Apify with scheduling, webhooks, API access, monitoring, and integrations.
- Use direct access by default or an authorized Apify/custom proxy when routing requires it.
- Bound source load and cost with item, page, request, timeout, retry, delay, and concurrency controls.
- Keep Apify run status separate from data completeness, and preserve a successfully written real-record prefix when a later request or write fails.
What data can the Actor extract?
| Field | Type | Description |
|---|---|---|
| recordType | string | Always job; diagnostic and placeholder records are never Dataset items |
| jobId | string | Stable SimplyHired job key |
| title | string | Detail-page job title |
| companyName | string | Public hiring company |
| location | string | Formatted job location |
| jobTypes | array | Employment types |
| workSettings | array | Remote, hybrid, or workplace settings |
| salary | string | Published compensation text |
| benefits | array | Public benefit labels |
| qualifications | array | Public qualification tags |
| description | string | Full normalized job description |
| applyUrl | string | Public application destination |
| detailVerified | boolean | Confirmation that detail identity and fields passed validation |
How to scrape SimplyHired jobs
- Open the Actor and select search, single, multiple, or startUrls mode.
- For search mode, enter a keyword and optional location. For direct modes, provide official SimplyHired job URLs.
- Start with one or two items and one page.
- Leave proxy disabled for the baseline. Enable an authorized proxy only if direct routing is blocked.
- Run the Actor and inspect the dataset, RUN_SUMMARY, and RUN_DIAGNOSTICS.
How much does it cost to scrape SimplyHired?
This is a browser-based Actor. Cost depends on runtime, memory, detail count, pages, retries, and optional proxy traffic. A two-item validation usually consumes only a small fraction of a compute unit. Begin with a bounded run, review actual usage, and increase limits gradually. Your Apify plan and proxy type determine the final amount.
Input
See the Input tab for every option. maxItems is a result cap, while maxPages controls pagination and maxRequests is the hard crawl safety limit. requestTimeoutSecs, maxRequestRetries, requestDelayMs, and maxConcurrency tune reliability without removing the fixed safeguards.
The repository includes INPUT.json for direct-access validation and INPUT-cloud-proxy.json for a small US residential proxy test. Neither fixture contains credentials.
Output
You can download the Dataset in formats such as JSON, HTML, CSV, or Excel. RUN_SUMMARY separately reports platform status (SUCCEEDED or FAILED) and extraction resultStatus (COMPLETE, LIMITED, SKIPPED, DEFERRED, NO_DATA, or FAILED). A run that stored real jobs before a later failure remains SUCCEEDED / LIMITED; a fatal zero-row run is FAILED / FAILED. RUN_DIAGNOSTICS and REQUEST_RECEIPTS are key-value artifacts, never Dataset rows.
{"recordType": "job","jobId": "example-job-key","title": "Software Developer","companyName": "Example Company","location": "Remote","detailVerified": true,"jobUrl": "https://www.simplyhired.com/job/example-job-key"}
Unavailable optional values are omitted. Records never contain nulls, blank strings, placeholder text, empty arrays, or fabricated values. If a later request or Dataset write fails after a real-record prefix was stored, that prefix is retained and the run is marked SUCCEEDED / LIMITED. Fatal zero-row errors are FAILED / FAILED. A confirmed source denial is SUCCEEDED / SKIPPED and discards staged rows. Empty results are NO_DATA only when every requested search has a successful explicit zero-results receipt; ambiguous empties are DEFERRED.
Tips and advanced options
Keep browser concurrency low and use a small retry budget. Pagination uses SimplyHired's public search routes, and duplicate jobs found on several pages are fetched once. Exact job modes are useful for scheduled status checks after a search run has supplied canonical URLs.
For local validation, run apify run --purge --input-file INPUT.json, followed by npm run validate.
FAQ, disclaimer, and support
If a run reports blocked, inspect RUN_DIAGNOSTICS before enabling a proxy. The Actor does not solve CAPTCHAs, access authenticated pages, or bypass access controls.
This Actor extracts public job-advertisement data. Results may contain personal data voluntarily published in a vacancy. Use the data only with a lawful purpose and comply with SimplyHired's terms, robots guidance, GDPR, and other applicable rules. If you are unsure whether your use is legitimate, consult qualified legal counsel.
Use the Actor's Issues tab for reproducible bug reports and the API tab for programmatic access.