# SimplyHired Jobs Scraper — Titles, Salary, Company & Skills (`haketa/simplyhired-scraper`) Actor

Scrape jobs from SimplyHired by keyword and location. Get title, company, company rating, salary, job type, skills, benefits, location and full description as clean JSON, CSV or Excel — for recruiting, salary benchmarking and labor-market research.

- **URL**: https://apify.com/haketa/simplyhired-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## SimplyHired Jobs Scraper — Titles, Salary, Company & Skills

Collect job listings from **SimplyHired** as clean, structured data. Search by keyword and location and get every matching job back with **title, company, company rating, salary, job type, skills, benefits, location and full description** — ready to export as JSON, CSV or Excel.

Built for **recruiters, staffing agencies, job seekers, salary and labor‑market analysts, and data teams** who need US hiring data without paging through listings by hand.

***

### ✨ Why use this scraper

- **Full job records, not just titles** — company, rating, salary, job type, skills, benefits, location and posting date on every job.
- **Salary included** — the salary text as shown, plus structured min/max, period and currency when the job page provides it.
- **Company signals** — company name and star rating, logo and company‑page link (with details on).
- **Skills & requirements** — the skills and requirements each role lists, perfect for matching and demand analysis.
- **Full descriptions** — optionally fetch each job page for the complete description, qualifications, coordinates and apply link.
- **Search by keyword & location** — any role, in any US city, state or ZIP.
- **Clean, typed output** — numbers as numbers, skills as arrays — ready for spreadsheets, databases and BI tools.
- **Export anywhere** — JSON, CSV, Excel, HTML or via the Apify API and integrations.

***

### 🚀 Quick start

1. Enter one or more **search keywords** (for example `software engineer`, `registered nurse`).
2. Set a **location** (`New York, NY`) — or leave empty for nationwide.
3. Set **Maximum jobs** and click **Start**.

Each job comes back as one clean record.

***

### 📥 Input

| Field | Type | Description |
|---|---|---|
| **Search keywords** (`searchQueries`) | array | Roles/keywords to search. |
| **Location** (`location`) | string | City, state or ZIP. Empty = nationwide. |
| **Include full job details** (`includeDetails`) | boolean | Add full description, structured salary, qualifications, coordinates and apply link. |
| **Maximum jobs** (`maxItems`) | integer | Cap across all keywords. |
| **Max pages per keyword** (`maxPagesPerSearch`) | integer | Result pages per keyword (~20 jobs each). |
| **Concurrency** (`maxConcurrency`) | integer | Parallel detail fetches. |
| **Proxy configuration** (`proxyConfiguration`) | object | Apify Proxy recommended (datacenter‑first, US‑residential fallback). |

#### Example 1 — one role in a city

```json
{
  "searchQueries": ["software engineer"],
  "location": "New York, NY",
  "maxItems": 300
}
```

#### Example 2 — several roles with full detail

```json
{
  "searchQueries": ["registered nurse", "medical assistant"],
  "location": "Dallas, TX",
  "includeDetails": true,
  "maxItems": 500
}
```

***

### 📤 Output

Each job is one dataset item. Example (with details on):

```json
{
  "jobKey": "t4bWK0x5rDdzE6qEiBJ_67Y80jGO0E9j",
  "title": "Backend Engineer",
  "company": "Steadily Insurance Agency",
  "companyRating": 4.1,
  "location": "Austin, TX",
  "url": "https://www.simplyhired.com/job/t4bWK0x5rDdzE6qEiBJ_67Y80jGO0E9j",
  "salaryText": "$150,000 - $190,000 a year",
  "salaryMin": 150000,
  "salaryMax": 190000,
  "salaryPeriod": "YEAR",
  "salaryCurrency": "USD",
  "jobTypes": ["Full-time"],
  "remoteAttributes": [],
  "workSettings": ["In-Office"],
  "benefits": ["Health insurance", "401(k)", "Dental insurance"],
  "requirements": ["Mid-level", "Python", "2 years"],
  "skills": ["Python", "MLOps", "Model deployment"],
  "qualifications": ["Python", "AI models", "Production systems"],
  "city": "Austin",
  "state": "TX",
  "latitude": 30.2715,
  "longitude": -97.7419,
  "description": "Location: Austin, TX. Employment Type: Full-time...",
  "applyUrl": "https://www.simplyhired.com/out?r=...",
  "companyLogo": "https://...",
  "datePosted": "2026-06-02T00:00:00.000Z",
  "sponsored": false,
  "easyApply": false,
  "detailScraped": true,
  "scrapedAt": "2026-08-28T10:00:00.000Z"
}
```

#### Field reference

**Job**

| Field | Description |
|---|---|
| `jobKey` | SimplyHired job ID (unique). |
| `title`, `snippet` | Job title and short snippet. |
| `url` | Job page URL. |
| `datePosted` | Posting date. |
| `sponsored`, `easyApply` | Listing flags. |

**Company**

| Field | Description |
|---|---|
| `company`, `companyRating` | Employer and star rating. |
| `companyLogo`, `companyPageUrl` | Logo and company page (details on). |

**Compensation & role**

| Field | Description |
|---|---|
| `salaryText` | Salary as shown. |
| `salaryMin`, `salaryMax`, `salaryPeriod`, `salaryCurrency` | Structured salary (details on). |
| `jobTypes`, `workSettings`, `remoteAttributes` | Full/part‑time, on‑site/remote. |
| `skills`, `requirements`, `qualifications` | Skills and requirements. |
| `benefits` | Listed benefits. |
| `description` | Full description (details on). |
| `applyUrl` | Application link (details on). |

**Location**

| Field | Description |
|---|---|
| `location`, `city`, `state` | Location. |
| `latitude`, `longitude` | Coordinates (details on). |

***

### 💡 Use cases

- **Recruiters & staffing** — monitor demand for roles and skills across US markets and build sourcing lists.
- **Job seekers** — track new postings for your role, with salary, company rating and skills in one place.
- **Salary & market analysts** — aggregate `salaryMin`/`salaryMax` by role, location and job type to build pay benchmarks.
- **Talent intelligence** — measure hiring trends, remote‑vs‑office mix and in‑demand skills.
- **ATS / CRM feeds** — pipe structured jobs into applicant‑tracking systems and dashboards.
- **Researchers & data teams** — build clean datasets of the US labor market.

***

### 🎯 Tips for best results

- **Add a location** to focus a search; leave it empty to go nationwide.
- **Keep details off for speed.** The listing already has salary, skills, type and company rating; turn on **Include full job details** only when you need the full description and structured salary.
- **Combine keywords** to cover a segment in one run.
- **Filter after export** — pull broadly, then filter on `salaryMin`, `companyRating`, `jobTypes` or `skills`.

***

### 🔌 Run it your way

- **Apify Console** — enter keywords and click Start.
- **API** — start runs and pull the dataset programmatically.
- **Scheduler** — refresh the jobs feed on a schedule.
- **Integrations** — push results to Google Sheets, Zapier, Make, webhooks, S3 and more.

***

### ❓ FAQ

**Which country does SimplyHired cover?**
SimplyHired focuses on the United States.

**Do I need an account or API key?**
No. Just enter keywords and a location.

**Are salaries included?**
Yes, when the employer publishes them — as `salaryText`, plus structured `salaryMin`/`salaryMax`/`salaryPeriod` when you turn on full details.

**Do I get the full description?**
Turn on **Include full job details** to add the complete description, qualifications, coordinates and apply link for each job.

**In what format is the data?**
Structured JSON by default, exportable to CSV, Excel, HTML and more.

**Can I run it on a schedule?**
Yes — use the Apify Scheduler, or start runs through the Apify API and its integrations.

***

### ⚖️ Legal & responsible use

This tool collects **publicly available** job‑posting information for legitimate business use such as recruitment, market research and salary analysis. You are responsible for how you use the data and for complying with all applicable laws and regulations, the website's terms, and data‑protection rules. Do not use the output to infringe intellectual‑property rights or for any unlawful purpose. This scraper is not affiliated with, endorsed by, or connected to SimplyHired; all trademarks belong to their respective owners.

***

#### Tags

`simplyhired` · `simplyhired scraper` · `us jobs` · `job scraper` · `job listings` · `salary data` · `recruitment` · `talent sourcing` · `hr tech` · `job search` · `employment` · `careers` · `labor market` · `hiring` · `job board`

# Actor input Schema

## `searchQueries` (type: `array`):

Job keywords or titles to search (e.g. software engineer, registered nurse, warehouse). Leave empty to get the most recent jobs for the location.

## `location` (type: `string`):

City, state or ZIP to search in (e.g. New York, NY). Leave empty for nationwide.

## `includeDetails` (type: `boolean`):

Fetch each job's page to add the full description, structured salary (min/max/period), qualifications, coordinates, company rating and apply link. Slower and costs more.

## `maxItems` (type: `integer`):

Stop after collecting this many jobs across all keywords.

## `maxPagesPerSearch` (type: `integer`):

Maximum result pages per keyword (each page has ~20 jobs).

## `maxConcurrency` (type: `integer`):

How many job pages to fetch in parallel when full details are on.

## `proxyConfiguration` (type: `object`):

Residential US proxy is recommended. The actor uses datacenter first and falls back to US residential automatically.

## Actor input object example

```json
{
  "searchQueries": [
    "registered nurse",
    "data analyst",
    "sales"
  ],
  "location": "New York, NY",
  "includeDetails": false,
  "maxItems": 200,
  "maxPagesPerSearch": 100,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "software engineer"
    ],
    "location": "New York, NY",
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/simplyhired-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["software engineer"],
    "location": "New York, NY",
    "maxItems": 200,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/simplyhired-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "software engineer"
  ],
  "location": "New York, NY",
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/simplyhired-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/simplyhired-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6H7td9cce9bx30iyj/builds/kvFXu6CwFK8EOQnu4/openapi.json
