# Monster Jobs Scraper - Salary, Company & Full Descriptions (`scrapersdelight/monster-jobs-scraper`) Actor

Monster.com job search: title, company, pay with its source, location + coordinates, remote/hybrid, employment type, skills, SOC code, education, benefits, apply link and the full description on every job. Every Monster filter, past the ~550-job limit, monitor mode, 13 markets.

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

## Pricing

$0.45 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Monster Jobs Scraper do?

**Monster Jobs Scraper** exports job listings from Monster.com search: one row per job with the title, company, location with coordinates, pay (and whether the employer published it or Monster found it in the text), employment type, on-site / remote / hybrid, skills, O\*NET occupation code, career level, education, benefits, the employer's website, size and industry, the apply link and the **full job description**. Recruiters, staffing agencies, sales teams selling to hiring companies, labor-market analysts and job-board builders use it to see who is hiring, where, and for how much.

Monster scraper · Monster.com job scraper · Monster jobs API alternative · monster.com job data export

- **Every Monster search filter**: keywords, any location or GPS point, radius, date posted, employment type, remote only, company.
- **The full record on every job**: description (text, HTML or Markdown), skills, O\*NET code, education, career level, benefits and the employer profile come with each search result. No detail add-on, no second request.
- **Past the ~550-job limit**: Monster serves about 550 jobs per search. **Deep search** splits a big search by state (nationwide) or by employment type and date, and merges the slices without duplicates (measured: 1,000 unique "nurse" jobs from one US search).
- **Job lookups**: paste job URLs or job IDs and get each job's current record.
- **Monitor mode**: schedule it and get only new or changed jobs, with `changeType` NEW / UPDATED (and optionally UNCHANGED / EXPIRED) and repost detection.
- **13 Monster markets**: the US plus the UK, Canada, Ireland, France, Belgium, the Netherlands, Spain, Sweden, Switzerland, Austria, Italy and Luxembourg.
- **No login, no cookies, no browser.**

### What data can you get from Monster?

| | | |
|---|---|---|
| 💼 Job title `title` + standard title | 🏢 Company `company` + `normalizedCompany` | 📍 City, state, ZIP, country |
| 🌐 Latitude / longitude | 🏠 On-site / remote / hybrid `workplaceType` | 🕒 Full-time, part-time… `employmentType` |
| 💵 Pay text, min / max, period `salaryText` | 🔎 Pay source `salarySource` | 🗓️ Posted, "5 days ago", valid through |
| 📄 Full description `description` | 📝 Monster's short summary | 🧠 Skills `skills` |
| 🧾 O\*NET occupation + code `onetCode` | 🎓 Education, career level | 🩺 Benefits `benefits` |
| 🔗 Job page, apply link, final apply page | ↗️ Apply on Monster or company site | 🖼️ Company logo |
| 🌍 Company website, size, industry | 📅 Company founded year, address, about | 📡 Feed the job came from `jobProvider` |
| ✉️ Emails / phones / links in the text (optional) | 🔁 Repost flag `isRepost` | 🆕 `changeType` for monitoring |

### How to scrape Monster with Monster Jobs Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) (it comes with monthly free credit).
2. Open **Monster Jobs Scraper** and type one or more job titles and locations, or paste Monster search or job URLs.
3. Pick filters: radius, date posted, employment type, remote only, companies.
4. Set **Max jobs** (Monster serves ~550 per search; turn on **Deep search** for more).
5. Click **Start**. A 50-job search usually finishes in under a minute.
6. Download the jobs as JSON, CSV, Excel or HTML, or send them to Google Sheets, a webhook or your app.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| **🔍 What to scrape** | | |
| `searchQueries` | array | Job titles or keywords, e.g. `"registered nurse"`. Empty = every job in the locations. |
| `locations` | array | City, state, ZIP or region, e.g. `"Austin, TX"`, `"10001"`, `"California"`, `"TX"`. Empty = the whole country. Every keyword runs in every location. |
| `startUrls` | array | Monster search URLs (filters are kept), SEO search pages (`/jobs/q-nurse-jobs-l-austin-tx`), job URLs or job IDs. |
| `country` | string | Market: `us` (default), `gb`, `ca`, `ie`, `fr`, `be`, `nl`, `es`, `se`, `ch`, `at`, `it`, `lu`. |
| **🎯 Filters** (applied by Monster) | | |
| `radius` | integer | Miles (US, UK) or km (elsewhere) around each location. Default: Monster's 30. |
| `employmentTypes` | array | `FULL_TIME`, `PART_TIME`, `CONTRACT`, `TEMP`, `INTERN`, `OTHER` (any of them). |
| `remoteOnly` | boolean | Only jobs Monster marks remote. |
| `datePosted` | string | `any`, `today`, `2days`, `week`, `2weeks`, `month`. |
| `companyNames` | array | Only jobs at these employers, as Monster spells them. |
| `latitude`, `longitude` | number | Search around a GPS point (used when `locations` is empty). |
| **✂️ Refine results** (checked on each job) | | |
| `includeKeywords` / `excludeKeywords` | array | Keep / drop jobs by words in the title, company or description. |
| `excludeCompanies` | array | Drop employers whose name contains any of these. |
| `onlyWithSalary` | boolean | Keep jobs that publish pay. |
| `applyType` | string | `any`, `monster` (apply on Monster), `company` (company site). |
| `postedAfter` / `postedWithinHours` | string / integer | Date floor, or a rolling window in hours. |
| `skipReposts` | boolean | Drop the same ad re-listed under a new ID. |
| **➕ Extra data** | | |
| `extractContacts` | boolean | Emails, phones and links the employer wrote in the description. |
| `deepSearch` | boolean | Go past the ~550-job limit (state / type / date slices, merged). |
| `includeRawData` | boolean | Add Monster's full record under `raw`. |
| **🔁 Monitoring** | | |
| `monitorMode` | boolean | Only jobs new or changed since the last run of the same search. |
| `monitorStoreName` | string | Key-value store that remembers delivered jobs (default `monster-jobs-monitor`). |
| `emitUnchanged` / `emitExpired` | boolean | Also deliver unchanged jobs / jobs that disappeared. |
| **📦 Output** | | |
| `maxResults` | integer | Most jobs in total (default 100). |
| `maxResultsPerSearch` | integer | Most jobs per keyword × location (0 = no limit). |
| `descriptionFormat` | string | `text` (default), `html`, `markdown`, `all`, `none`. |
| `descriptionMaxLength` | integer | Cut descriptions to N characters (0 = full). |
| `compact` / `excludeEmptyFields` | boolean | Core fields only / leave out empty fields. |
| **⚙️ Advanced** | | |
| `proxyConfiguration` | object | Optional. Your own proxy URLs are tried first; the actor picks its own route otherwise. |

Nothing is required: an empty input runs the example search ("nurse" in Austin, TX).

#### Input JSON

```json
{
    "searchQueries": ["registered nurse", "nurse practitioner"],
    "locations": ["Austin, TX", "Dallas, TX"],
    "datePosted": "week",
    "maxResults": 500,
    "maxResultsPerSearch": 125,
    "descriptionFormat": "text"
}
```

#### Put the job title in the keyword and the place in the location

Monster matches keywords against titles and descriptions. `"nurse"` + `"Austin, TX"` returns about 4,750 jobs within 30 miles; a two-letter state (`"TX"`) searches the whole state (about 41,800 nurse jobs).

#### Use Monster's filters before your own

Radius, date posted, employment type, remote only and companies are applied by Monster, so the ~550 jobs a search can return are all on target. The **Refine results** options are checked after each job arrives.

#### Paste a search URL to copy its filters

Run a search on monster.com, set the filters, and paste the address bar into `startUrls`: `q`, `where`, `et`, `recency`, `rd` and `cn` are read. Job URLs and job IDs in the same list are looked up one by one.

### ⬆️ Output

One row per job. A real row from a "nurse" search in Austin, TX (2026-10-16), shortened:

```json
{
  "jobId": "5b44d876-36cb-4cd9-8261-efefe77c1ce1",
  "title": "Travel Emergency Department RN - $2,200 per week",
  "company": "LanceSoft",
  "location": "Austin, TX",
  "postalCode": "78716",
  "latitude": 30.269379,
  "longitude": -97.765113,
  "workplaceType": "On-site",
  "salaryText": "$2,200 per week",
  "salaryMin": 2200,
  "salaryPeriod": "week",
  "salarySource": "extracted from description",
  "datePosted": "2026-10-11T19:47:06.841Z",
  "dateRecency": "5 days ago",
  "skills": ["Emergency Care", "Emergency Nursing", "Nursing", "Registered Nurse (RN)"],
  "careerLevel": "Experienced",
  "benefits": ["Insurance Options", "Health/Medical Insurance"],
  "companyWebsite": "http://www.lancesoft.com/",
  "companySize": "2,000 to 2,499 employees",
  "industry": "Staffing/Employment Agencies",
  "applyType": "company site",
  "url": "https://www.monster.com/job-openings/travel-emergency-department-rn-2-200-per-week-austin-tx--5b44d876-36cb-4cd9-8261-efefe77c1ce1",
  "description": "LanceSoft is seeking a travel nurse RN ED - Emergency Department for a travel nursing job in Austin, Texas..."
}
```

#### Fields and how often they are filled

Measured on two real runs, 2026-10-16: 100 jobs ("nurse", Austin, TX) and 1,000 jobs (deep search "nurse", United States, 38 states). A field is empty when Monster does not publish it for that job.

| Field | Filled (100 / 1,000) | Field | Filled (100 / 1,000) |
|---|---|---|---|
| title, company, location, coordinates, datePosted, url, applyUrl | 100% / 100% | remoteWorkLevel, careerLevel, education | 43% / 47% |
| description, shortDescription, skills, occupation, onetCode | 100% / 100% | benefits | 23% / 38% |
| workplaceType, employmentType, validThrough | 100% / 100% | normalizedCompany, companyId | 47% / 27% |
| jobProvider | 99% / 99% | companyLogo | 44% / 15% |
| postalCode | 82% / 86% | companyWebsite, companySize, industry, companyDescription | 41% / 10% |
| salaryText / salaryMin / salaryMax / salarySource | 61% / 73% | companyFoundedYear | 25% / 8% |
| applyRedirectUrl | 16% / 16% | companyAddress | 9% / 8% |

Pay source on the 1,000 jobs: found in the description 677, published by the employer 55, no pay 268. Apply type: company site 792, apply on Monster 208. Employment type: Monster labels most jobs "Other" (877); full-time 120, part-time 3. With `extractContacts`, over 216 captured jobs: links 42%, emails 15%, phones 2%.

### How can I use Monster job data?

- 🧲 **Staffing and recruiting agencies**: employers hiring for the roles you place, with pay and the apply link.
- 📈 **Sales teams**: companies posting many jobs are growing; employer website, size and industry come with the row.
- 💵 **Compensation analysts**: pay ranges by title and city, with the pay source.
- 🗺️ **Labor-market research**: O\*NET codes, skills, remote vs on-site and coordinates for mapping.
- 🔔 **Job alerts and job boards**: monitor mode on a schedule delivers only new or changed postings.
- 🤖 **AI agents**: compact rows through the API or MCP.

### How much does it cost to scrape Monster?

Pay per result, no start fee:

| Event | Price | When |
|---|---|---|
| Job | $0.00045 per job ($0.45 per 1,000) | every job row, full description included |

| Run | Cost |
|---|---|
| 50 jobs (the prefilled demo) | $0.0225 |
| 100 jobs | $0.045 |
| 1,000 jobs | $0.45 |

Duplicates, filtered-out jobs and jobs a monitor run already delivered are not charged. Apify's free monthly credit covers thousands of jobs.

### Integrations, API, scheduling and MCP

Run it on a **schedule** with **monitor mode** to receive only new or changed jobs. Send results to **Google Sheets, Slack, Make, Zapier or n8n**, or trigger **webhooks** when a run finishes. Call it from code with the [Python](https://apify.com/scrapersdelight/monster-jobs-scraper/api/python) or [JavaScript](https://apify.com/scrapersdelight/monster-jobs-scraper/api/javascript) client, or let AI assistants use it through the [MCP server](https://apify.com/scrapersdelight/monster-jobs-scraper/api/mcp).

### More job scrapers

- 💼 [LinkedIn Jobs Scraper](https://apify.com/scrapersdelight/linkedin-jobs-scraper) — LinkedIn job postings
- 🧑‍💻 [Dice Scraper](https://apify.com/scrapersdelight/dice-scraper) — tech jobs by keyword and location
- 🧩 [ATS Jobs Scraper](https://apify.com/scrapersdelight/ats-jobs-scraper) — jobs straight from Greenhouse, Lever and Ashby career pages
- 📊 [Indeed Company Jobs Monitor](https://apify.com/scrapersdelight/indeed-company-hiring-monitor) — hiring signals for a list of companies
- 🚀 [Wellfound Jobs Scraper](https://apify.com/scrapersdelight/wellfound-jobs-scraper) — startup jobs
- 🇬🇧 [Reed Jobs Scraper](https://apify.com/scrapersdelight/reed-jobs-scraper) — UK jobs from reed.co.uk

All our actors: [apify.com/scrapersdelight](https://apify.com/scrapersdelight).

### Limits and empty runs

- Monster serves about 550 jobs per search, 50 per request (offset 500 returned 47 jobs, offset 950 none). Use **deep search**, more locations or narrower filters for more.
- Monster ignores its own "sort by date" (the same 50 jobs came back in the same order), so the actor offers no sort option; filter by date posted instead.
- Speed: 50 jobs in about 45 seconds, 100 in about 70 seconds, 1,000 with deep search in about 90 seconds (measured locally). Each search request takes 5-36 seconds; several run in parallel.
- Job lookups (URLs or IDs) take under a second each. A job ID Monster no longer serves is listed under `jobLookups.notFound` in `RUN_SUMMARY` and not charged.
- Monster's country sites (monster.co.uk, monster.fr…) now redirect to monster.com, but Monster's search still serves those markets: Toronto nurse 852 jobs, Paris infirmier 1,722, London nurse 1,632 (2026-10-14/16).
- An empty run costs nothing. `RUN_SUMMARY` lists, per search, Monster's own total, pages read, jobs delivered, duplicates, unchanged and filtered counts, errors and the route used.

### ❓ FAQ

#### How much does Monster Jobs Scraper cost?

$0.45 per 1,000 jobs, full description included. No start fee; an empty run costs nothing.

#### How many jobs can Monster Jobs Scraper get?

Monster serves about 550 jobs per search. With **deep search** the actor splits a big search into slices with their own limits and merges them: one "nurse" search across the United States returned 1,000 unique jobs in about 90 seconds.

#### Does Monster Jobs Scraper get the full job description?

Yes, on every job, as text, HTML or Markdown (`descriptionFormat`), together with skills, O\*NET code, education, career level, benefits and the employer profile.

#### Does Monster Jobs Scraper show where the salary comes from?

Yes. `salarySource` says whether the employer published the pay or Monster found it in the description. **Only jobs with pay** keeps jobs that publish pay.

#### Can Monster Jobs Scraper monitor new jobs?

Yes. Turn on **Only new or changed jobs** and schedule the run: each run delivers jobs earlier runs with the same settings did not deliver (`changeType` NEW) and jobs whose content changed (UPDATED). Reposts are flagged with `isRepost` and `repostOfId`.

#### Does Monster Jobs Scraper work outside the US?

Yes. Set **Market** to the UK, Canada, Ireland, France, Belgium, the Netherlands, Spain, Sweden, Switzerland, Austria, Italy or Luxembourg.

#### Can Monster Jobs Scraper look up specific jobs?

Yes. Paste job URLs (`/job-openings/…`) or job IDs into `startUrls`; each comes back as one row with its current record.

#### Does Monster Jobs Scraper need a login, cookies or an API key?

No. It reads the same public job search a visitor sees, without an account.

#### Can I use Monster Jobs Scraper with the Apify API?

Yes. Start runs and read results with the Apify API or its Python and JavaScript clients; every input above is a JSON key.

#### Can AI agents use Monster Jobs Scraper through MCP?

Yes. Add it to the Apify MCP server; the `compact` option keeps rows short.

#### Why did Monster Jobs Scraper return no results?

Usually the filters exclude everything (for example a narrow employment type plus "today") or the location was not recognised. Open `RUN_SUMMARY`: it shows Monster's own total for each search and why jobs were filtered.

#### Your feedback

Found a bug or need a field? Open an issue on the [Issues tab](https://apify.com/scrapersdelight/monster-jobs-scraper/issues/open); we read every one.

# Actor input Schema

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

What you would type in Monster's search box, e.g. "registered nurse", "python developer", "warehouse". Leave empty to list every job in the locations below.

## `locations` (type: `array`):

City, state, ZIP code or region, e.g. "Austin, TX", "10001", "California", "London". Leave empty to search the whole country of the market below.

## `startUrls` (type: `array`):

Monster search URLs (/jobs/search?q=…\&where=…, /jobs/q-nurse-jobs-l-austin-tx), job URLs (/job-openings/…) or bare job IDs. Search URLs keep their filters; jobs are looked up one by one.

## `country` (type: `string`):

Which Monster market to search. The US is monster.com; the others are the European and Canadian markets Monster's search still serves.

## `radius` (type: `integer`):

Distance around each location: miles in the US and UK, kilometres elsewhere (Monster's own units). Empty = Monster's default of 30.

## `employmentTypes` (type: `array`):

Keep only these employment types (any of them). Leave empty for every type.

## `remoteOnly` (type: `boolean`):

Only jobs Monster marks as remote. On its own it is Monster's remote filter; next to employment types it is checked on each job instead.

## `datePosted` (type: `string`):

Only jobs posted or refreshed within this window (Monster's own filter).

## `companyNames` (type: `array`):

Only jobs at these employers, as Monster spells them, e.g. "Amazon", "CVS Health". Combine with an empty keyword to list a company's open roles.

## `latitude` (type: `number`):

Search around a GPS point instead of a place name (pair with Longitude and Radius), e.g. 30.2672. Used when Locations is empty.

## `longitude` (type: `number`):

GPS longitude of the search centre, e.g. -97.7431.

## `includeKeywords` (type: `array`):

Keep a job only if its title, company or description contains at least one of these words (case-insensitive), e.g. "ICU", "sign-on bonus".

## `excludeKeywords` (type: `array`):

Drop jobs whose title or description contains any of these words, e.g. "travel", "night shift".

## `excludeCompanies` (type: `array`):

Drop jobs from employers whose name contains any of these, e.g. staffing agencies you do not want.

## `onlyWithSalary` (type: `boolean`):

Keep only jobs that publish a pay figure (from the employer or found in the description).

## `applyType` (type: `string`):

Keep jobs you apply to on Monster, or jobs that send you to the company's own site.

## `postedAfter` (type: `string`):

Keep jobs posted on or after this date (YYYY-MM-DD).

## `postedWithinHours` (type: `integer`):

Keep jobs posted within the last N hours, e.g. 6 for a schedule that runs four times a day. 0 = no limit.

## `skipReposts` (type: `boolean`):

Drop a job whose title, employer, place and description match another job already seen (the same ad re-listed under a new ID).

## `extractContacts` (type: `boolean`):

Copy the emails, phone numbers and links the employer wrote in the job description into separate fields.

## `deepSearch` (type: `boolean`):

Monster serves about 550 jobs per search. Deep search re-runs a bigger search split by state (nationwide) or by employment type and date, and removes duplicates.

## `includeRawData` (type: `boolean`):

Add Monster's full job record (every field it sends) under "raw".

## `monitorMode` (type: `boolean`):

Deliver only jobs not delivered by earlier runs of this search (changeType NEW), plus jobs whose content changed (UPDATED).

## `monitorStoreName` (type: `string`):

Name of the key-value store that remembers delivered jobs between runs. Use a different name per tracked search group. Default: monster-jobs-monitor.

## `emitUnchanged` (type: `boolean`):

With monitoring on, also deliver jobs seen before whose content did not change (changeType UNCHANGED).

## `emitExpired` (type: `boolean`):

With monitoring on, add a row (changeType EXPIRED) for each job an earlier run delivered that this run no longer finds. Only when every search was read to the end.

## `maxResults` (type: `integer`):

Most jobs to deliver in total. Monster serves ~550 jobs per search; use Deep search for more.

## `maxResultsPerSearch` (type: `integer`):

Most jobs from each keyword × location pair, so one broad search does not use the whole budget. 0 = no per-search limit.

## `descriptionFormat` (type: `string`):

How the job description is delivered.

## `descriptionMaxLength` (type: `integer`):

Cut descriptions to this many characters. 0 = full text.

## `compact` (type: `boolean`):

Core fields only (title, company, location, pay, dates, links, description) - trimmed for AI / MCP pipelines.

## `excludeEmptyFields` (type: `boolean`):

Leave out fields that are empty for a job instead of writing null.

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

Optional. The actor picks its own route (direct, then Apify's Unblocker for searches). Add your own proxy URLs only if you want them tried first.

## Actor input object example

```json
{
  "searchQueries": [
    "nurse"
  ],
  "locations": [
    "Austin, TX"
  ],
  "country": "us",
  "remoteOnly": false,
  "datePosted": "any",
  "onlyWithSalary": false,
  "applyType": "any",
  "skipReposts": false,
  "extractContacts": false,
  "deepSearch": false,
  "includeRawData": false,
  "monitorMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "maxResults": 50,
  "descriptionFormat": "text",
  "compact": false,
  "excludeEmptyFields": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One row per Monster job.

## `summary` (type: `string`):

Per search: Monster's own total, pages read, jobs delivered, duplicates, unchanged and filtered counts, errors, and the route used.

# 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": [
        "nurse"
    ],
    "locations": [
        "Austin, TX"
    ],
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/monster-jobs-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": ["nurse"],
    "locations": ["Austin, TX"],
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/monster-jobs-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": [
    "nurse"
  ],
  "locations": [
    "Austin, TX"
  ],
  "maxResults": 50
}' |
apify call scrapersdelight/monster-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapersdelight/monster-jobs-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/mpDbFut1O4elMxvoR/builds/Y2TLjygfjc1MmWDkf/openapi.json
