Monster.com Multi-City Job Scraper avatar

Monster.com Multi-City Job Scraper

Pricing

from $3.00 / 1,000 dataset items

Go to Apify Store
Monster.com Multi-City Job Scraper

Monster.com Multi-City Job Scraper

Search one job keyword across many US cities on Monster.com in a single run. Jobs found in several areas are returned once, each tagged with its search city: title, company, GPS, salary when listed, remote flag, posting date and apply URL. No login.

Pricing

from $3.00 / 1,000 dataset items

Rating

0.0

(0)

Developer

axly

axly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

Search one job keyword across many US cities on Monster.com in a single run. Give it a keyword and a list of cities; get back one deduplicated dataset where every job is tagged with the city that found it. No login, no cookies, no browser.

Built for recruiters and staffing agencies tracking open roles nationwide, HR and compensation teams comparing demand between metro areas, and job boards or labour-market researchers who want a clean multi-city export instead of stitching together many single-city runs.

If you only need one city, the single-location Monster.com Job Scraper fits better. This Actor is for several cities at once: nearby cities overlap (New York and Newark share many jobs), so jobs are deduplicated across locations and you are not charged for repeats.

What you get

Each row starts with easy flat columns, followed by Monster's complete record.

FieldDescription
jobIdMonster's unique job id
searchLocation, searchQueryThe city query that returned the job, and the keyword
title, companyJob title and hiring company
city, state, postalCodeJob location (postal code only when Monster provides it)
latitude, longitudeGPS of the job location
remoteMonster's remote flag
salaryMin, salaryMax, salaryUnit, salaryCurrencySalary, only when the employer lists one (a minority of jobs)
employmentTypeFor example FULL_TIME, CONTRACTOR, when available
datePosted, dateRecency, formattedDatePosting date and Monster's "6 days ago" text
monsterUrl, applyUrlJob page on monster.com and the apply link
jobPostingFull posting object including the HTML job description and hiring organization details
enrichments, apply, derivedPropertiesMonster's normalized locations, apply type and flags

Use cases

  • Nationwide hiring analysis: the same role across 20 metros in one export.
  • Salary benchmarking: collect salaryMin / salaryMax where listed, per city.
  • Recruiting and lead lists: companies hiring for a role, with apply links.
  • Job board feeds: schedule daily runs with postedWithinDays.

Input

FieldDescription
queryJob title or keywords, e.g. Software Engineer
locationsList of cities written City, ST (up to 100)
radiusSearch radius around each city, in miles (default 30)
postedWithinDaysany, 1, 3, 7, 14 or 30. Older jobs are skipped and not charged
maxPerLocationJobs to collect per city (default 100, max 501)
maxTotalHard cap on jobs saved in the whole run, also your cost ceiling
deduplicateReturn a job once even if several cities find it (default on)
concurrencyCities searched in parallel, 1-5
{
"query": "Software Engineer",
"locations": ["New York, NY", "Chicago, IL", "Austin, TX"],
"radius": 30,
"maxPerLocation": 10,
"maxTotal": 30,
"deduplicate": true
}

Good to know

  • US only. Monster's mobile data returns jobs for US searches only; other countries came back empty, so only US is accepted.
  • 501 results per search. Monster serves at most the first 501 results for a keyword and city. For deeper coverage use more specific keywords or add neighbouring cities.
  • Ranked by relevance, not date. With postedWithinDays set to a short window only some jobs on each page qualify; raise maxPerLocation to scan deeper.
  • Salary is sparse. Most Monster postings do not list pay; those rows have null salary fields.
  • Listing data is public job-posting information. You are responsible for using it in line with applicable laws and Monster's terms.

Scheduling and integrations

Run it on a schedule from the Apify Console (for example daily with postedWithinDays: "1") and send new results to Google Sheets, Slack, a webhook or your database through Apify integrations. Results export as JSON, CSV, Excel or via the API. Runs that stop before finishing (for example after a platform migration) resume from where they were when started again with the same input.

Use from code or AI agents

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("axlymxp/monster-multi-scraper").call(run_input={
"query": "registered nurse",
"locations": ["Boston, MA", "Denver, CO", "Miami, FL"],
"maxPerLocation": 50,
"postedWithinDays": "7",
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["searchLocation"], job["title"], job["company"], job["salaryMin"])

Because it is a plain Apify Actor, it can also be called from AI agents through the Apify MCP server.

FAQ

Why did a city return fewer jobs than I asked for? Either Monster has fewer matches within the radius, the postedWithinDays window removed older ones, or the jobs were already returned for an earlier city (deduplication).

Which city is shown for a job found by several? The first one that returned it, in searchLocation. The job's own city and state are in city and state.

Does it need a login or proxy? No.

Something looks wrong or is missing. Open an issue on the Actor page with the run link.