# Monster | $0.99💰 | Search | Details | Scraper  \[/w EMAILS] (`memo23/monster-scraper`) Actor

💰 $0.99 per 1,000 results. Collects Monster.com job data including IDs, titles, company metadata, salary ranges, employment types, posting dates, HTML descriptions, normalized locations, and apply URLs for recruitment analytics.

- **URL**: https://apify.com/memo23/monster-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 156 total users, 11 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.99 / 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.

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

## Monster.com Job Scraper

**Empower Your Talent Intelligence Pipelines** – Capture, analyze, and monitor Monster.com job listings at scale with enterprise-grade reliability. Whether you are tracking hiring demand, enriching recruiting platforms, or conducting market research, our scraper delivers fresh, structured job intelligence while minimizing manual effort.

*"From newly posted openings to deep-dive job detail pages, we turn Monster's listings into your competitive advantage."*

### Overview

The Monster.com Job Scraper is your all-in-one utility for extracting hiring data from Monster.com. Ideal for recruiting teams, workforce planners, and market researchers, it tracks search result pages and individual job details worldwide. With straightforward configuration and structured outputs, it's perfect for anyone building job intelligence pipelines or talent analytics.

### What does Monster.com Job Scraper do?

The Monster.com Job Scraper is a powerful tool that enables you to:

#### Comprehensive Data Collection

- **Job Search Results**
  - Capture structured job cards from Monster.com search result pages
  - Track pagination automatically to cover entire result sets
  - Extract metadata such as job title, company, location, and posting highlights
- **Job Detail Pages**
  - Scrape full job descriptions and requirements from individual job postings
  - Collect recruiter/company contact information when available
  - Preserve benefits, salary/compensation snippets, and application methods
- **Market Insights**
  - Monitor hiring demand across geographies, industries, and job families
  - Build time-series datasets to benchmark recruiting trends
  - Feed downstream analytics, enrichment, and ATS/CRM workflows

#### Advanced Scraping Capabilities

- **Pagination Handling**: Automatically navigates through Monster search results
- **Efficient Processing**: Processes only new or updated postings in subsequent runs
- **Change Detection**: Detects new openings and updates to existing job ads
- **Incremental Data Collection**: Build comprehensive hiring datasets over time

#### Flexible Scraping Options

- **Job Search Results**: Extract job listings by keywords, location, and filters
  - Example: `https://www.monster.com/jobs/search?q=developer&where=Boston%2C+MA&page=1&so=m.h.sh`
- **Individual Job Details**: Target specific job postings using direct URLs
  - Example: `https://www.monster.com/job-openings/salesforce-developer-financial-services-cloud-boston-ma--a5e6ee28-df6e-4e50-8d2a-8f448178aade?sid=7c845d6c-ea96-4f27-bd4c-3111c939ced1&jvo=m.mco.s-svr.1&so=m.h.sh&hidesmr=1`

This tool is ideal for:

- Recruiting intelligence and competitive hiring analysis
- Talent market research across industries and geographies
- Workforce planning and compensation benchmarking
- Building job scraping pipelines for ATS/CRM enrichment
- Monitoring hiring signals for business development & sales

### Features

- **Comprehensive Data Extraction**: Job metadata, descriptions, and employer insights
- **Dual Scraping Modes**:
  - **Search Results**: Scrape all jobs from Monster search result pages
  - **Individual Job Details**: Target specific postings using job detail URLs
- **Flexible Input**: Supports multiple input formats:
  - Search result URLs (keyword, location, filters)
  - Direct job detail URLs
- **Automatic Pagination**: Handles multi-page result sets automatically
- **Efficient Processing**: Concurrent scraping with configurable concurrency settings
- **Reliable Performance**: Built-in retries, throttling, and proxy support
- **Structured Data Export**: Download job data in JSON or CSV for analytics

### Supported Scenario Types

The Monster.com Job Scraper can extract data from multiple job-hunting flows:

1. **Search Result Pages** – Keyword/location queries with optional filters
   - Example: `https://www.monster.com/jobs/search?q=developer&where=Boston%2C+MA&page=1&so=m.h.sh`
   - Fields: `job_id`, `title`, `company`, `location`, `posted_date`, `apply_type`, etc.

2. **Individual Job Postings** – Full details for a single job
   - Example: `https://www.monster.com/job-openings/salesforce-developer-financial-services-cloud-boston-ma--a5e6ee28-df6e-4e50-8d2a-8f448178aade?sid=7c845d6c-ea96-4f27-bd4c-3111c939ced1&jvo=m.mco.s-svr.1&so=m.h.sh&hidesmr=1`
   - Fields: `job_id`, `description_html`, `requirements`, `benefits`, `company_details`, `apply_urls`, etc.

3. **Filtered Market Research Runs** – Jobs narrowed by recency, remote/onsite, or radius filters
   - Example: `https://www.monster.com/jobs/search?q=developer&where=Boston%2C+MA&recency=last+2+weeks&rd=50&et=REMOTE`
   - Fields: `job_id`, `filter_context`, `employment_types`, `activation_recency`, `radius_miles`, etc.

Each scenario returns a structured payload consistent across runs, making it straightforward to pipe into your analytics stack.

### Quick Start

1. **Sign up for Apify**: Create your free account at [apify.com](https://apify.com).
2. **Find the Scraper**: Search for "Monster.com Job Scraper" in the Apify Store.
3. **Configure Input**: Set your search URLs or direct job URLs in the input schema.
4. **Run the Scraper**: Execute the scraper on Apify or locally with Node.js/TSX.
5. **Data Collection**: Export raw job data as JSON or CSV for downstream processing.

### Input Configuration

Here's an example of how to set up the input for the Monster.com Job Scraper:

```json
{
    "startUrls": [
        "https://www.monster.com/jobs/search?q=developer&where=Boston%2C+MA&page=1&so=m.h.sh",
        "https://www.monster.com/job-openings/salesforce-developer-financial-services-cloud-boston-ma--a5e6ee28-df6e-4e50-8d2a-8f448178aade?sid=7c845d6c-ea96-4f27-bd4c-3111c939ced1&jvo=m.mco.s-svr.1&so=m.h.sh&hidesmr=1"
    ],
    "maxConcurrency": 10,
    "minConcurrency": 1,
    "maxRequestRetries": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

#### Input Fields Explanation

- `startUrls`: Array of strings containing any of these formats:
  - Search URL: `"https://www.monster.com/jobs/search?q=developer&where=Boston%2C+MA&page=1&so=m.h.sh"`
  - Job detail URL: `"https://www.monster.com/job-openings/..."`
- `maxItems`: Maximum number of results to scrape (default: 1000).
- `maxConcurrency`: Maximum number of pages processed simultaneously (default: 10).
- `minConcurrency`: Minimum number of pages processed simultaneously (default: 1).
- `maxRequestRetries`: Number of retries for failed requests (default: 100).
- `proxyConfiguration`: Proxy settings for consistent scraping performance.

### Output Structure

The scraper provides structured information about Monster job postings. Outputs are normalized for both search results and job detail pages. Key groups include:

```json
{
    "jobId": "a5e6ee28-df6e-4e50-8d2a-8f448178aade",
    "externalIdentifiers": [
        {
            "identifierName": "NOW_POSTING_ID",
            "identifierValue": "01bd061f-bcdf-443c-8ff4-dc7329831be4"
        },
        {
            "identifierName": "POSITION_AD_ID",
            "identifierValue": "292571243"
        }
    ],
    "dateRecency": "10 days ago",
    "status": "ACTIVE",
    "jobType": "DURATION",
    "ingestionMethod": "ADAPTED_NOW",
    "apply": {
        "applyType": "ONSITE",
        "applyUrl": "https://job-openings.monster.com/v2/job/apply?jobid=292571243"
    },
    "jobPosting": {
        "description": "<p><strong>This is a</strong> 12<strong> month contract-to-hire</strong> and needs to meet Client full-time conversion policies. Those dependent on a work permit sponsor now or anytime in the future (i<strong>e H1B, OPT, CPT, etc</strong>) do not meet Client requirements for this opening.</p><p><strong>**MUST BE HYBRID IN Boston or Springfield, MA or New York, NY</strong></p><p><strong>**MUST BE W2; No Corp-to-Corp**</strong></p><p> </p><p>We are seeking a highly skilled <strong>Salesforce Developer</strong> to join our team and contribute to the development and enhancement of Salesforce solutions within the <strong>Financial Services Cloud (FSC)</strong>. The ideal candidate will have hands-on experience building and customizing Salesforce applications for <strong>wealth management</strong>, <strong>insurance</strong>, and <strong>sales distribution</strong> use cases. This role requires strong technical expertise, business acumen, and a passion for delivering high-quality solutions that drive advisor productivity and client engagement.</p><p><strong>Key Responsibilities</strong></p><ul><li>Develop and customize Salesforce applications using <strong>Apex</strong>, <strong>Lightning Web Components</strong>, <strong>Flows</strong>, and <strong>OmniStudio</strong>.</li><li>Implement FSC features to support client onboarding, policy servicing, advisor workflows, and distribution enablement.</li><li>Collaborate with architects, business analysts, and stakeholders to understand requirements and deliver scalable solutions.</li><li>Integrate Salesforce with external systems using REST/SOAP APIs, middleware, and data connectors.</li><li>Participate in code reviews, unit testing, and deployment activities within Agile development cycles.</li><li>Maintain and enhance existing Salesforce applications, ensuring performance, security, and compliance.</li><li>Document technical designs, configurations, and development processes.</li><li>Stay current with Salesforce releases and recommend relevant enhancements.</li></ul><p><strong>Required Qualifications</strong></p><ul><li><strong>5+ years</strong> of Salesforce development experience, including <strong>2+ years</strong> with <strong>Financial Services Cloud</strong>.</li><li>Strong understanding of <strong>wealth management</strong>, <strong>insurance</strong>, and <strong>sales distribution</strong> business processes.</li><li>Proficiency in <strong>Apex</strong>, <strong>SOQL</strong>, <strong>Lightning Web Components</strong>, <strong>Flows</strong>, and <strong>OmniStudio</strong>.</li><li>Experience with <strong>Salesforce integrations</strong>, including APIs and middleware tools (e.g., ).</li><li>Familiarity with Salesforce security models, data architecture, and declarative tools.</li><li>Salesforce certifications such as <strong>Platform Developer I/II</strong>, <strong>FSC Accredited Professional</strong>, or <strong>OmniStudio Developer</strong>.</li></ul><p> </p><p><strong>Preferred Skills</strong></p><ul><li>Experience with <strong>Einstein Analytics</strong>, <strong>Salesforce Shield</strong>, or <strong>Experience Cloud</strong>.</li><li>Knowledge of compliance and regulatory frameworks (e.g., FINRA, SEC, NAIC).</li><li>Exposure to DevOps tools (e.g. Copado) and CI/CD pipelines for Salesforce.</li><li>Strong problem-solving skills and ability to work independently or in cross-functional teams.</li></ul><p> </p>",
        "baseSalary": {
            "currency": "USD",
            "value": {
                "minValue": 70,
                "maxValue": 85,
                "unitText": "Per Hour"
            }
        },
        "datePosted": "2025-09-17T15:46:12.720Z",
        "employmentType": [
            "FULL_TIME",
            "CONTRACTOR",
            "TEMPORARY"
        ],
        "hiringOrganization": {
            "name": "Albano Systems, Inc.",
            "address": {},
            "logo": "https://securemedia.newjobs.com/CompanyJobPostingLogo/473346/733291.jpg"
        },
        "industry": "Computer Software",
        "jobLocation": [
            {
                "address": {
                    "streetAddress": "10 Fan Pier Boulevard,",
                    "addressRegion": "MA",
                    "addressLocality": "Boston",
                    "postalCode": "02210",
                    "addressCountry": "US"
                }
            }
        ],
        "title": "Salesforce Developer Financial Services Cloud"
    },
    "provider": {
        "code": "monster"
    },
    "brandingExt": {},
    "jobViewPreferences": {
        "hiringOrganizationConfidential": false
    },
    "enrichments": {
        "normalizedJobLocations": [
            {
                "postalAddress": {
                    "address": {
                        "addressRegion": "MA",
                        "addressLocality": "Boston",
                        "postalCode": "02210",
                        "addressCountry": "US"
                    },
                    "geo": {
                        "latitude": "42.34656",
                        "longitude": "-71.034458"
                    }
                },
                "locationId": "27381559",
                "countryCode": "US"
            }
        ],
        "normalizedTitles": [
            {
                "title": "Salesforce Developer"
            }
        ],
        "employmentTypes": [
            {
                "name": "TEMPORARY"
            },
            {
                "name": "FULL_TIME"
            },
            {
                "name": "CONTRACTOR"
            }
        ],
        "company_kb": {
            "normalized_company_name": "Albano Systems, Inc.",
            "normalized_company_guid": "ntuvj7mcl5hmlbtvdstbeztbrh"
        },
        "mescos": [
            {
                "id": "1500127001001"
            }
        ],
        "localized_monster_urls": [
            {
                "location_id": "27381559",
                "url": "https://www.monster.com/job-openings/salesforce-developer-financial-services-cloud-boston-ma--a5e6ee28-df6e-4e50-8d2a-8f448178aade"
            }
        ],
        "language": {
            "language_code": "en"
        }
    },
    "now": {
        "job_ad_pricing_type_id": 1,
        "folder_id": 346641915,
        "eeo": {
            "disability": false,
            "ethnicity": true,
            "gender": true,
            "veteran": false
        }
    },
    "field_translations": [
        {
            "field_name": "SalaryBaseType",
            "name": "HOUR",
            "locale": "en-us",
            "translation": "Per Hour"
        },
        {
            "field_name": "EmploymentType",
            "name": "TEMPORARY",
            "locale": "en-us",
            "translation": "Temporary"
        },
        {
            "field_name": "EmploymentType",
            "name": "CONTRACTOR",
            "locale": "en-us",
            "translation": "Contractor"
        },
        {
            "field_name": "EmploymentType",
            "name": "FULL_TIME",
            "locale": "en-us",
            "translation": "Full-time"
        }
    ],
    "derived_properties": {
        "promoted": true,
        "remote": false
    },
    "policy_decisions": {
        "remoteness_source": "CLIENT_SPECIFIED"
    },
    "formatted_date": "2025-09-17T00:00:00"
}
```

### Output Fields Explanation

#### Core Job Fields

- **`jobId`**: Primary Monster GUID for the job posting.
- **`externalIdentifiers`**: Array of partner identifiers (e.g., `NOW_POSTING_ID`, `POSITION_AD_ID`) that support deduping across feeds.
- **`dateRecency`**: Human-readable posting age surfaced in search results.
- **`status`**: Current lifecycle state (e.g., `ACTIVE`, `EXPIRED`).
- **`jobType`**: Monster classification for posting duration or product type.
- **`ingestionMethod`**: Indicates how the ad entered Monster (e.g., `ADAPTED_NOW`).

#### Application Details

- **`apply.applyType`**: How candidates apply (e.g., `ONSITE`, `INTEGRATED`).
- **`apply.applyUrl`**: Direct link to the Monster-hosted or external application flow.

#### Job Posting Payload (`jobPosting`)

- **`title`**: Display title of the job.
- **`description`**: Raw HTML description including responsibilities and requirements.
- **`baseSalary`**: Normalized compensation object with `currency`, `minValue`, `maxValue`, and `unitText` (hourly, yearly, etc.).
- **`datePosted`**: ISO timestamp when the job was first published.
- **`employmentType`**: Array of employment categories such as `FULL_TIME`, `CONTRACTOR`, `TEMPORARY`.
- **`hiringOrganization`**: Employer metadata including `name`, `address`, and optional `logo`.
- **`industry`**: Monster industry/vertical classification.
- **`jobLocation`**: Array of location objects with structured address details.

#### Provider & Branding

- **`provider.code`**: Source identifier (`monster` for native listings).
- **`brandingExt`**: Container for enhanced employer branding assets (empty in the sample).
- **`jobViewPreferences.hiringOrganizationConfidential`**: Flag for confidential postings.

#### Enrichments (`enrichments`)

- **`normalizedJobLocations`**: Monster-normalized addresses plus geo-coordinates and `locationId` values.
- **`normalizedTitles`**: Standardized role titles for analytics (e.g., `Salesforce Developer`).
- **`employmentTypes`**: Canonical employment type objects with localized names.
- **`companyKb`**: Knowledge base match for the employer (`normalizedCompanyName`, `normalizedCompanyGuid`).
- **`mescos`**: Monster occupation codes for classification.
- **`localizedMonsterUrls`**: Market-specific URLs for the job ad.
- **`language`**: Detected language of the posting content.

#### Pricing & Compliance

- **`now.jobAdPricingTypeId`**: Pricing bucket for the posting.
- **`now.folderId`**: Internal folder / campaign identifier.
- **`now.eeo`**: Equal employment opportunity questionnaire flags (gender, ethnicity, veteran, disability).

#### Localization Metadata

- **`fieldTranslations`**: Mapping from internal enum values (e.g., `EmploymentType`) to localized, human-readable strings.

#### Derived & Policy Attributes

- **`derivedProperties.promoted`**: Indicates whether the job receives premium visibility.
- **`derivedProperties.remote`**: Monster’s determination of remote eligibility.
- **`policyDecisions.remotenessSource`**: Explains why a job was marked remote/non-remote (e.g., `CLIENT_SPECIFIED`).
- **`formattedDate`**: Normalized date string for display.

These explanations mirror the example payload so you can map each field directly when integrating the scraper output into downstream systems.

***

### Explore More Scrapers

If you found this Apify Scraper useful, be sure to check out our other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/B9QxpGHylsP0guHns/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>
- Email: muhamed.didovic@gmail.com

***

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/monster-scraper`).

**Purpose:** Scrape Monster.com job listings — from search-result pages and individual job-detail URLs — into normalized, structured job records for recruiting intelligence and talent-market analytics.

**Minimal input:**

```json
{ "startUrls": ["https://www.monster.com/jobs/search?q=developer&where=Boston%2C+MA"], "maxItems": 25 }
```

`startUrls` also accepts individual job-detail URLs (`https://www.monster.com/job-openings/...`); search URLs paginate automatically.

**Output:** one row per job — jobId, externalIdentifiers\[], dateRecency, status, jobType, ingestionMethod, apply {applyType, applyUrl}, jobPosting {title, description, baseSalary {currency, minValue, maxValue, unitText}, datePosted, employmentType\[], hiringOrganization {name, address, logo}, industry, jobLocation\[]}, provider {code}, enrichments {normalizedJobLocations\[], normalizedTitles\[], employmentTypes\[], companyKb, mescos\[], localizedMonsterUrls\[], language}, derivedProperties {promoted, remote}, formattedDate. Incremental rows also carry changeType and firstSeenAt.

**Behaviors an agent should know:**

- Always set `maxItems` — it caps total rows (schema default 10000); search URLs paginate through the full result set otherwise.
- Filters `includeKeywords`, `excludeKeywords`, `fromDate`, `toDate`, and `maxAgeMinutes` gate rows before billing — filtered rows are never charged.
- `incrementalMode` (default false) emits only NEW / UPDATED / REAPPEARED jobs versus the prior run; state is kept per `stateKey`, so you pay only for changes.
- `compact` and `descriptionMaxLength` shrink payloads for LLM / MCP pipelines; `enrichEmails` (default false) is opt-in and billed per employer email found.
- Optional per-run notifications: Telegram, Slack, Discord, WhatsApp, and a generic webhook.
- Billing: Pay-per-event billing — see the Pricing tab on the actor page.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Monster Worldwide, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available Monster.com job-listing pages — no authenticated endpoints, paid recruiter features, or content behind the Monster.com login wall. Users are responsible for ensuring their use complies with Monster.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

***

### SEO Keywords

monster scraper, scrape monster, monster.com scraper, monster jobs scraper, monster job listings scraper, monster.com api, Apify monster, job board scraper, job listings scraper, recruitment data scraper, hiring data extraction, talent intelligence data, job market analysis, salary benchmark data, recruiter lead-gen, ATS enrichment scraper, us jobs scraper, employment data scraper, tech jobs intelligence, workforce planning data

# Actor input Schema

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

URLs to start with.

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

Maximum number of items that will be scraped.

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

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

## `enrichEmails` (type: `boolean`):

If enabled, tries to find a contact email for each employer by discovering the company's website (Clearbit) and reading its contact/about pages. Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort, billed per contact email found; only charged when an email is returned, never for misses.

## `qualifyByPayment` (type: `boolean`):

Requires "Enrich with contact emails". Scans each business's website — reusing the pages already fetched for email discovery, so no extra cost or time — for payment processors and e-commerce platforms (Stripe, Shopify, PayPal, Paddle, Lemon Squeezy, WooCommerce, Square, Chargebee and more). Adds takesPayments (is this a real paying business?), paymentProcessors (which stack), stripeLiveKey (the public key if exposed) and paymentConfidence. Turn raw contacts into monetization-qualified leads. No extra charge — included with each enriched company.

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

Only keep jobs whose title, company or description contains at least one of these (case-insensitive). Filtered rows are never charged.

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

Drop jobs whose title, company or description contains any of these (case-insensitive).

## `fromDate` (type: `string`):

Only keep jobs posted on or after this date (ISO 8601, e.g. 2026-08-01).

## `toDate` (type: `string`):

Only keep jobs posted on or before this date (ISO 8601). A date-only value means through the end of that day.

## `maxAgeMinutes` (type: `integer`):

Only keep jobs posted within the last N minutes. Empty or 0 = no age limit. Ideal for tight scheduled runs.

## `incrementalMode` (type: `boolean`):

Compare against the previous run and only emit jobs that are NEW, UPDATED, or REAPPEARED — you are only charged for what changed. The first run seeds the baseline. Each emitted row carries `changeType` and `firstSeenAt`.

## `stateKey` (type: `string`):

Optional stable name for this tracked search (e.g. "nurse-toronto"). Leave empty to auto-derive one from the search inputs — same inputs, same baseline.

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

When incremental, also emit rows whose content did not change (charged as normal results).

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

When incremental, emit a small `changeType: EXPIRED` row for every previously-tracked job that vanished from the source.

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

When incremental, skip jobs whose content matches a previously-expired posting (employer re-listed the same ad under a new id).

## `resetIncrementalState` (type: `boolean`):

One-shot: drop the stored baseline for this state key at the start of the run.

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

Emit only the core fields — small payloads for AI-agent / MCP / LLM pipelines.

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

Drop null / empty-string / empty-array fields from each record.

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

Truncate description fields to this many characters (0 = full text). Controls LLM prompt cost and dataset size.

## `telegramBotToken` (type: `string`):

Your bot's token from @BotFather. With Chat ID set, a summary of new jobs is sent after each run.

## `telegramChatId` (type: `string`):

Chat or channel id the bot posts to (e.g. "-1001234567890").

## `slackWebhookUrl` (type: `string`):

Slack incoming-webhook URL (api.slack.com/messaging/webhooks).

## `discordWebhookUrl` (type: `string`):

Discord incoming-webhook URL (Server Settings → Integrations → Webhooks).

## `whatsappAccessToken` (type: `string`):

WhatsApp Cloud API token (Meta Business system user). The recipient must have messaged your business number within the last 24h — Cloud API rule.

## `whatsappPhoneNumberId` (type: `string`):

Your WhatsApp Business phone-number id (numeric, from the Meta dashboard).

## `whatsappTo` (type: `string`):

Recipient phone in E.164 without + (e.g. "14165551234").

## `webhookUrl` (type: `string`):

Receives one JSON POST with { metadata, items } after the run — the universal escape hatch for n8n / Make / Zapier / custom backends.

## `webhookHeaders` (type: `object`):

Optional custom headers for the generic webhook (e.g. {"Authorization": "Bearer …"}).

## `notificationLimit` (type: `integer`):

How many job lines each chat notification includes (1–20). The rest are summarised as a count.

## `notifyOnlyChanges` (type: `boolean`):

With Incremental mode on, notify only about NEW / UPDATED / REAPPEARED jobs.

## `proxy` (type: `object`):

Optional. This scraper already routes through its own residential proxy pool, so you can leave this empty on any plan. Set it only if you want to force your own proxy servers.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.monster.com/job-openings/salesforce-developer-financial-services-cloud-boston-ma--a5e6ee28-df6e-4e50-8d2a-8f448178aade?sid=7c845d6c-ea96-4f27-bd4c-3111c939ced1&jvo=m.mco.s-svr.1&so=m.h.sh&hidesmr=1"
  ],
  "maxItems": 10000,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "enrichEmails": false,
  "qualifyByPayment": false,
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "skipReposts": false,
  "resetIncrementalState": false,
  "compact": false,
  "excludeEmptyFields": false,
  "notificationLimit": 5,
  "notifyOnlyChanges": false
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        "https://www.monster.com/job-openings/salesforce-developer-financial-services-cloud-boston-ma--a5e6ee28-df6e-4e50-8d2a-8f448178aade?sid=7c845d6c-ea96-4f27-bd4c-3111c939ced1&jvo=m.mco.s-svr.1&so=m.h.sh&hidesmr=1"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/monster-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 = { "startUrls": ["https://www.monster.com/job-openings/salesforce-developer-financial-services-cloud-boston-ma--a5e6ee28-df6e-4e50-8d2a-8f448178aade?sid=7c845d6c-ea96-4f27-bd4c-3111c939ced1&jvo=m.mco.s-svr.1&so=m.h.sh&hidesmr=1"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/monster-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 '{
  "startUrls": [
    "https://www.monster.com/job-openings/salesforce-developer-financial-services-cloud-boston-ma--a5e6ee28-df6e-4e50-8d2a-8f448178aade?sid=7c845d6c-ea96-4f27-bd4c-3111c939ced1&jvo=m.mco.s-svr.1&so=m.h.sh&hidesmr=1"
  ]
}' |
apify call memo23/monster-scraper --silent --output-dataset

```

## MCP server setup

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