Monster Jobs Scraper — Search, Company Jobs & Job Details avatar

Monster Jobs Scraper — Search, Company Jobs & Job Details

Pricing

from $2.64 / 1,000 search jobs

Go to Apify Store
Monster Jobs Scraper — Search, Company Jobs & Job Details

Monster Jobs Scraper — Search, Company Jobs & Job Details

Scrape Monster.com job postings with salary ranges, skills, exact posting dates, apply links and the employer's size, HQ address and founding year. Search by keyword and location, list every open job at up to 10 employers, or refresh up to 20 job ids per call.

Pricing

from $2.64 / 1,000 search jobs

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

4 days ago

Last modified

Share

Monster Jobs Scraper — Job Postings, Salaries & Employers 🚀

Store SIÁN Agency Store Jobs Search API Store LinkedIn Jobs Scraper Store ZipRecruiter Jobs Scraper

🎉 Monster job postings with salary, skills and the employer's size, HQ and founding year

Built for recruiters, sales teams and job boards that need Monster data as clean rows


🔎 What is the Monster Jobs Scraper — and when should you use it?

The Monster Jobs Scraper turns public Monster job postings, with salary, skills and the employer's profile into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

Use it when you need: Monster job postings as rows: title, employer, location, exact posting date, the full description and a working apply link. Rows also carry Monster's skill tags, an O*NET occupation code and, when the posting states one, a structured salary range. Where Monster publishes an employer profile, the row adds headcount band, HQ address, founding year and industry, so a job list doubles as a company list. Every row names its employer as Monster spells it, and that name is the key for listing all of the employer's open jobs in one follow-up run.

Use something else when: the roles are not on Monster, or one job board is not enough. Use Jobs Search API for Indeed, Glassdoor and other boards aggregated into this same row shape. Use Glassdoor Scraper for employer reviews, salary reports and interview notes rather than open roles. Use ZipRecruiter Jobs Scraper for ZipRecruiter listings with pay ranges. This actor covers Monster's public job listings in 13 markets: the US, UK, Canada, Ireland, France, Belgium, the Netherlands, Spain, Sweden, Switzerland, Austria, Italy and Luxembourg. Monster lists no jobs in Germany, Australia or India. It also serves at most 510 postings per query for everyone, so a broader pull has to be split by city or keyword.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/monster-jobs-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want Monster job postings with salaries, skills and employer details using the Apify Actor `sian.agency/monster-jobs-scraper`.
Use it when I need: Monster job postings as rows: title, employer, location, exact posting date, the full description and a working apply link. Rows also carry Monster's skill tags, an O*NET occupation code and, when the posting states one, a structured salary range. Where Monster publishes an employer profile, the row adds headcount band, HQ address, founding year and industry, so a job list doubles as a company list. Every row names its employer as Monster spells it, and that name is the key for listing all of the employer's open jobs in one follow-up run.
Don't use it when: the roles are not on Monster, or one job board is not enough — use jsearch-jobs-scraper or glassdoor-data-scraper or ziprecruiter-jobs-scraper instead.
How to call it: pick one `operation` per run. `search` finds jobs by keyword: give it `query`, optionally a `location` such as "Austin, TX", a `country` code and `maxResults`. `companyJobs` lists every open job at up to 10 employers named in `companies`, spelled exactly as the `employerName` of a search row, since Monster has no company id. `jobDetails` re-fetches up to 20 known jobs per call from `jobIds`. It is billed per id, so use it to refresh a shortlist, not to collect. `datePosted`, `employmentTypes` and `remoteOnly` are applied by Monster itself. `radiusKm` needs a `location`. A search row already carries the full description and salary..
Start with this input:
{
"operation": "search",
"query": "software engineer",
"location": "Austin, TX",
"country": "us",
"datePosted": "week",
"maxResults": 50
}
Ask me which role or keyword they want, which city or country, and whether they want one employer's open jobs instead of a keyword search, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • Find registered nurse jobs posted this week around Dallas and show which ones state a salary range.
  • List every open job at Amazon.com Inc and General Motors on Monster, grouped by city and occupation.
  • Search data engineer jobs in the US and give me the hiring companies with their headcount band and HQ.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/monster-jobs-scraper.md.

📋 Overview

Monster Jobs Scraper pulls Monster.com job postings into a clean dataset. Each row has the title, employer, location, exact posting date, skills, occupation code, full description and a working apply link, plus the salary whenever the posting states one. It is built for recruiters, labor-market analysts, job boards and B2B sales teams who read hiring as a buying signal.

What you get:

  • 🏢 Employer profile on the row: where Monster publishes one, each job carries the employer's headcount band, HQ address, founding year, industry and about text. No second lookup.
  • 🔍 Three ways in: search by keyword and place, list every open job at up to 10 employers, or re-check up to 20 saved job ids per call
  • 💰 Structured salary: minimum, maximum, period and currency as separate columns, next to the display string
  • 🧠 Skills and occupation: Monster's skill tags plus an O*NET occupation code and title on every row
  • 🗓️ Exact posting date: a real date and timestamp, with Monster's own "30+ days ago" badge kept alongside
  • 🌍 13 markets: US, UK, Canada, Ireland, France, Belgium, the Netherlands, Spain, Sweden, Switzerland, Austria, Italy and Luxembourg, each searched on its own Monster site
  • 🔗 Same row shape as our other job actors: the field names match Jobs Search API and LinkedIn Jobs Scraper, so one pipeline reads all three

✨ Features

  • 🔍 Search Jobs: keyword, city, radius in km, date posted, employment type, remote only and sort order
  • 🏢 Company Jobs: every open role at up to 10 employers in one run, optionally narrowed by keyword or city
  • 📋 Job Details: re-fetch up to 20 jobs per call by id, Monster UUID, slug or monster.com URL
  • 🧾 Employer data: headcount band, HQ address, founding year, industry, website and about text
  • 💵 Salary columns: min, max, period, currency, or a single figure when the posting states one
  • 🧠 Skill tags and O*NET code: filter and count demand by skill or occupation
  • 🔗 Apply links that work: tracking parameters stripped, plus the employer's own application page when Monster exposes it
  • 📍 Coordinates: latitude and longitude on every posting, ready for a map
  • 📄 Run report: every run writes a readable report with the jobs, the fixes for anything that failed, and exactly what you were charged
  • 🆓 No account needed: no Monster login, cookies or proxy settings

🎬 Quick Start

Pick an operation, give it a keyword or an employer, and run. The actor returns 10 jobs per page and stops at your Max jobs. Results land in a dataset you can export as JSON, CSV or Excel.

curl -X POST "https://api.apify.com/v2/acts/sian.agency~monster-jobs-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operation": "search", "query": "software engineer", "location": "Austin, TX", "maxResults": 50}'

🚀 Getting Started (3 Simple Steps)

Step 1: Choose what to scrape

Pick Search Jobs, Company Jobs or Job Details in the operation list.

Step 2: Fill in the target

Type a keyword and a city, paste employer names, or paste job ids and URLs.

Step 3: Run and export

Press Start, then download the dataset as JSON, CSV or Excel, or open the run report.

Within a minute you'll have:

  • Every matching Monster job with title, employer, location and posting date
  • Salary, skills and occupation where the posting states them
  • Apply links and the Monster posting URL for each job

📥 Input Configuration

FieldTypeUsed byDescription
operationstringallsearch, companyJobs or jobDetails
querystringsearch, companyJobsKeyword such as "registered nurse". Required for search, optional filter for companyJobs
locationstringsearch, companyJobsCity or region, such as "Austin, TX". Empty searches the whole country
countrystringallOne of 13 markets: us, gb, ca, ie, fr, be, nl, es, se, ch, at, it, lu
radiusKmintegersearch, companyJobs1 to 160 km around the location. Needs a location
datePostedstringsearch, companyJobsall, today, 3days, week, month
employmentTypesarraysearch, companyJobsAny of FULLTIME, PARTTIME, CONTRACTOR, INTERN
remoteOnlybooleansearchOnly jobs Monster marks as remote
companiesarraycompanyJobsUp to 10 employer names, spelled as the employerName field of a search row
jobIdsarrayjobDetailsUp to 20 per call: jobId, jobUid, jobSeoId or a monster.com job URL
sortBystringsearchrelevance or date (newest first)
maxResultsintegersearch, companyJobs1 to 510. Monster serves at most 510 postings per query

Search example:

{
"operation": "search",
"query": "registered nurse",
"location": "Dallas, TX",
"radiusKm": 40,
"datePosted": "week",
"maxResults": 100
}

Company Jobs example: run a search first, copy the employerName of a row, and paste it here. Monster has no company id, so the name as Monster spells it is the key.

{
"operation": "companyJobs",
"companies": ["Amazon.com Inc", "General Motors"],
"maxResults": 100
}

Job Details example:

{
"operation": "jobDetails",
"jobIds": [
"bW9uc3RlcjowMGFlNTc4Mi0zOGQxLTRhOWEtYjYyYy0yYWFjMmU2ODU4ZDE",
"https://www.monster.com/job-openings/software-engineer-1-it-round-rock-tx--cef711af-778e-4f02-b8ee-cd090a450cb9"
]
}

📤 Output

Every job is one row with up to 50 fields. Fields Monster did not publish for a posting are left out of that row rather than written as empty strings.

FieldTypeDescription
jobTitlestringJob title
employerNamestringEmployer, as Monster spells it (the key for Company Jobs)
employerSizestringHeadcount band, such as "10,000 employees or more"
employerAddressstringEmployer HQ address
employerFoundingDatestringFounding year
industrystringIndustry Monster assigns
location, city, state, countrystringWhere the job is
postedAtDatestringPosting date (YYYY-MM-DD)
salaryStringstringSalary as displayed
minSalary, maxSalarynumberSalary range
salaryPeriod, salaryCurrencystringHOUR/DAY/WEEK/MONTH/YEAR and currency code
skillsarrayMonster skill tags
occupationalCategory, onetSocstringO*NET occupation title and code
applyLinkstringWhere to apply
jobUrlstringMonster posting page
jobDescriptionstringFull posting text
jobId, jobUidstringIds for refreshing the job later

Example row (from a live search for "software engineer" in Austin, TX; description shortened):

{
"jobId": "bW9uc3RlcjowMGFlNTc4Mi0zOGQxLTRhOWEtYjYyYy0yYWFjMmU2ODU4ZDE",
"jobTitle": "Staff Software Engineer - Embedded Software Platform",
"employerName": "General Motors",
"employerSize": "10,000 employees or more",
"employerAddress": "Flint, Michigan, US",
"employerFoundingDate": "1908",
"industry": "Automotive Sales and Repair Services",
"location": "Austin, TX",
"postedAtDate": "2026-09-04",
"salaryString": "$171,150 - $288,500 per year",
"minSalary": 171150,
"maxSalary": 288500,
"salaryPeriod": "YEAR",
"salaryCurrency": "USD",
"skills": ["Analysis Skills", "Application Programming Interface (API)", "Artificial Intelligence (AI)", "Automation"],
"occupationalCategory": "15-1133.00: Software Developers, Systems Software",
"applyType": "OFFSITE",
"jobUrl": "https://www.monster.com/job-openings/staff-software-engineer-embedded-software-platform-austin-tx--00ae5782-38d1-4a9a-b62c-2aac2e6858d1",
"validThrough": "2027-03-12T11:48:32.624Z",
"jobUid": "00ae5782-38d1-4a9a-b62c-2aac2e6858d1",
"_operation": "search",
"status": "success"
}

💼 Use Cases & Examples

1. Recruiting pipeline and talent sourcing

Recruiters pull every Monster posting for a role and city on a schedule, with posting date and skills on each row, plus salary wherever the posting gives one.

Input: query "registered nurse", location "Dallas, TX", datePosted "week" Output: this week's nursing jobs with pay ranges and apply links Use: a daily shortlist of fresh roles, no job-board tabs

2. Competitor hiring intelligence

Talent and strategy teams watch what rivals are hiring for.

Input: Company Jobs with up to 10 employer names Output: each employer's open roles with titles, occupations and locations Use: see which teams a competitor is growing and in which cities

3. B2B lead generation from hiring signals

Sales teams treat a job posting as a buying signal for the tools that role uses.

Input: search for the job title your product serves Output: hiring companies, many with headcount band, HQ address, industry and website Use: a lead list sorted by company size, straight from the job rows

4. Compensation benchmarking

HR and comp analysts collect stated salaries for a role across markets.

Input: a role keyword, one run per city or country Output: min, max, period and currency as numbers, dated exactly Use: track pay movement week over week

5. Skills demand and labor-market analytics

Researchers count demand by skill and occupation.

Input: broad keyword searches across cities Output: skill tags and O*NET codes on every row Use: which skills are rising, where, and for which occupations

6. Job board and aggregator content

Niche job boards import fresh Monster postings.

Input: a keyword plus datePosted "today" Output: title, employer logo, description and apply link Use: a daily feed in the same shape as our LinkedIn and Jobs Search actors

7. Checking whether roles are still open

Anyone holding a shortlist of saved jobs.

Input: Job Details with up to 20 ids per call Output: the current posting for each id still live Use: ids missing from the output are postings Monster has taken down


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('sian.agency/monster-jobs-scraper').call({
operation: 'search',
query: 'software engineer',
location: 'Austin, TX',
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].jobTitle, items[0].employerName, items[0].salaryString);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_API_TOKEN')
run = client.actor('sian.agency/monster-jobs-scraper').call(run_input={
'operation': 'companyJobs',
'companies': ['Amazon.com Inc'],
'maxResults': 100,
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item['jobTitle'], item.get('employerSize'), item.get('location'))

cURL

curl -X POST "https://api.apify.com/v2/acts/sian.agency~monster-jobs-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operation": "search", "query": "warehouse associate", "location": "Columbus, OH", "datePosted": "3days", "maxResults": 30}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: a schedule, for example every morning at 7:00
  2. HTTP Request: call the run-sync endpoint above with your search
  3. Process: keep rows whose postedAtDate is new since yesterday
  4. Action: push them to a sheet, a CRM or a Slack channel

📊 Performance & Pricing

Pay per job returned, plus a small start fee per run. Nothing is charged for a search that matched nothing, a closed posting, or an input the actor could not read.

EventPaid plans (from)Free plan
Job found (Search Jobs)$0.003$0.012
Employer job found (Company Jobs)$0.003$0.012
Job detail returned (Job Details)$0.010$0.040
Run started$0.005$0.02

A search row already carries the full posting, description and salary included. So collect jobs through Search Jobs or Company Jobs, and keep Job Details for re-checking ids you stored earlier.

FREE plan

  • 25 jobs per run, every field included
  • No credit card required to try it
  • Up to 510 jobs per query, which is Monster's own ceiling
  • Lower prices on higher Apify plans (down to $0.00234 per job)

🔗 View current pricing


❓ Frequently Asked Questions

Q: Do I need a Monster account or cookies? A: No. The actor reads Monster's public job listings. There is nothing to log in to and nothing of yours to get restricted.

Q: How do I get every job at one company? A: Run Search Jobs first and copy the employerName of any row, for example "Amazon.com Inc". Paste it into Employer names and pick Company Jobs. Monster has no company id, so a slug or a misspelling returns nothing. The same company can appear under more than one name ("General Motors" and "General Motors Co"), so add both if you see both.

Q: Why do only some rows have employer size, address and founding year? A: Monster only shows that profile for employers that set one up, roughly one posting in six. Where it exists you get size band, HQ address, founding year, industry and about text. Where it does not, those fields are absent.

Q: How many jobs can I get for one search? A: Up to 510. Monster stops serving results past that point for everyone, however broad the query. For more, split the search by city or by narrower keywords.

Q: Which countries are covered? A: The US, UK, Canada, Ireland, France, Belgium, the Netherlands, Spain, Sweden, Switzerland, Austria, Italy and Luxembourg. Monster lists no jobs in Germany, Australia, India and most of Asia and Latin America, so those are not offered.

Q: Why is the Remote field empty on most rows? A: Monster only says whether a job is remote on postings returned because of a remote filter. A blank means Monster did not say, not that the job is on-site. Turn on Remote jobs only when remote matters.

Q: Why is the date posted older than the window I picked? A: Monster filters on its own refresh date, so a job reposted this week can carry an original posting date from earlier.

Q: What export formats are available? A: JSON, CSV, Excel, XML and HTML, straight from the Apify dataset, or through the API.


🐛 Troubleshooting

Company Jobs returned nothing

  • Check the spelling against the employerName of a search row, including "Inc", "Co" or ".com"
  • An employer with no open jobs and a name Monster does not know look the same, so try the name exactly as a search row shows it

Search returned fewer jobs than Max jobs

  • Clear the Location to search the whole country, or widen Date posted
  • Check the Country: each market only lists its own jobs

"Radius needs a Location"

  • Add a city such as "Austin, TX", or clear the Radius. Monster ignores a radius on a country-wide search

Job Details returned fewer rows than ids

  • The missing postings are closed. You were not charged for them. Take fresh ids from a Search Jobs run

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

Monster is a trademark of its respective owner. This actor is not affiliated with, endorsed by, or sponsored by Monster, and it reads only publicly listed job postings.


🤝 Support

We answer every issue


Built by SIÁN Agency | More Tools