Monster APImonster.com ↗
Search and retrieve Monster.com job listings by keyword and location. Get structured job data including salary ranges, company info, employment type, and full descriptions.
What is the Monster API?
This API exposes 3 endpoints for accessing job listings on Monster.com, returning up to 50 structured results per call with fields covering salary ranges, employment type, remote work classification, and full job descriptions. The search_jobs endpoint accepts free-text queries and location strings for nationwide or city-specific searches, while get_job_details retrieves the complete record for any individual posting by UUID or URL.
curl -X POST 'https://api.parse.bot/scraper/8a4302b1-c5b9-4559-b9ed-a9a99018513e/search_jobs' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"limit": "50",
"query": "Software Engineer",
"location": "New York, NY"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace monster-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Monster.com job search — bounded, re-runnable; every call capped."""
from parse_apis.monster_com_job_search_api import Monster, JobNotFound
client = Monster()
# List available job categories for discovery.
for cat in client.categories.list(limit=5):
print(cat.name, cat.slug)
# Search for jobs by keyword and location — limit caps total items fetched.
for job in client.jobs.search(query="Data Scientist", location="San Francisco, CA", limit=3):
print(job.title, job.company, job.date_recency)
if job.salary:
print(f" Salary: {job.salary.currency} {job.salary.min_value}-{job.salary.max_value} per {job.salary.unit_text}")
for loc in job.locations:
print(f" Location: {loc.city}, {loc.state}")
# Drill-down: fetch full details for one job by ID.
first_job = client.jobs.search(query="Python Developer", limit=1).first()
if first_job:
try:
detail = client.jobs.get(job_id=first_job.job_id)
print(detail.title, detail.company, detail.status)
print(f" Posted: {detail.date_posted}, Expires: {detail.valid_through}")
print(f" Apply via: {detail.apply_type}, Remote: {detail.remote_type}")
except JobNotFound as exc:
print(f"Job no longer available: {exc}")
print("exercised: categories.list / jobs.search / jobs.get")
Full-text search over Monster.com job listings by keyword and location. Returns up to 50 structured results per call with descriptions, salary ranges, company info, and locations. Does not paginate beyond a single page — use limit to control result count. Each job includes a jobId suitable for get_job_details drill-down.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of results to return (max 50) |
| query | string | Search keyword or job title |
| location | string | Location to search in (e.g., 'New York, NY', 'San Francisco, CA'). Leave empty for nationwide search. |
{
"type": "object",
"fields": {
"jobs": "array of job objects with jobId, title, company, description, url, locations, salary, employmentType, remoteType, applyType, status, datePosted, validThrough, dateRecency",
"limit": "integer - results requested",
"totalSize": "integer - number of results returned",
"estimatedTotalSize": "integer - estimated total matching jobs"
},
"sample": {
"data": {
"jobs": [
{
"url": "https://www.monster.com/job-openings/lead-software-engineer-new-york-ny--9631ed8b-f388-45ab-bafe-602c9376f3e7",
"jobId": "9631ed8b-f388-45ab-bafe-602c9376f3e7",
"title": "Lead Software Engineer",
"salary": {
"currency": "USD",
"maxValue": 185000,
"minValue": 160000,
"unitText": "YEAR"
},
"status": "ACTIVE",
"company": "Jobot",
"promoted": false,
"seoJobId": "lead-software-engineer-new-york-ny--9631ed8b-f388-45ab-bafe-602c9376f3e7",
"applyType": "INTEGRATED",
"locations": [
{
"city": "New York",
"state": "NY",
"country": "US",
"postalCode": ""
}
],
"datePosted": "2026-06-08T13:15:08.395Z",
"remoteType": "UNKNOWN",
"dateRecency": "3 days ago",
"description": "<b>GraphQL Developer</b>...",
"canonicalUrl": "https://www.monster.com/job-openings/lead-software-engineer-new-york-ny--9631ed8b-f388-45ab-bafe-602c9376f3e7",
"validThrough": "2027-06-09T17:12:50.359Z",
"employmentType": [
"OTHER"
]
}
],
"limit": 5,
"totalSize": 5,
"estimatedTotalSize": 6930
},
"status": "success"
}
}About the Monster API
Search and Filter Jobs
The search_jobs endpoint accepts a query string (job title, skill, or keyword) and an optional location parameter such as 'Austin, TX' or 'Remote'. Omitting location performs a nationwide search. Results include up to 50 job objects per call, each carrying jobId, title, company, description, url, salary, employmentType, remoteType, applyType, and status. The estimatedTotalSize field gives you the total match count even when fewer results are returned, which is useful for gauging market depth for a given query.
Job Detail Records
get_job_details accepts either a Monster job UUID (job_id) or a full Monster URL (job_url) — the ID is resolved automatically from the URL. The response includes the complete job record: a full HTML description, structured salary data with minValue, maxValue, currency, and unitText, an array of locations with city, state, country, and postalCode, plus applyType indicating whether the application is handled on-site (INTEGRATED) or redirects off Monster (OFFSITE).
Categories for Discovery
get_job_categories returns a static list of popular Monster job categories, each with a human-readable name and a slug suitable for use as a query value in search_jobs. This is useful when building browsable job boards or seeding searches without requiring user input.
The Monster API is a managed, monitored endpoint for monster.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when monster.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official monster.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate job postings for a specific role and location into an internal hiring dashboard using
search_jobs - Track salary range trends for software engineering titles across major metro areas using the
salaryfields in search results - Build a job alert system that polls Monster for new postings matching a keyword and sends notifications when
estimatedTotalSizechanges - Populate a vertical job board for a specific industry by seeding searches from
get_job_categoriesslugs - Identify whether a posting accepts direct on-site applications vs. off-site redirects using the
applyTypefield fromget_job_details - Enrich a recruiting CRM with full job descriptions and location data by passing Monster URLs to
get_job_details - Analyze remote work availability by filtering job results on the
remoteTypefield fromsearch_jobs
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Monster.com have an official developer API?+
Can I paginate through all results for a given search query?+
search_jobs returns a single page of up to 50 results per call. Pagination to deeper result sets is not supported — the limit parameter only controls how many of the available results (up to 50) are returned. The estimatedTotalSize field reflects the total matching count, but only the top results are accessible in one call.What salary data does the API expose?+
search_jobs results and get_job_details responses. The salary object includes minValue, maxValue, currency, and unitText (e.g., hourly, annual). Not all postings include salary data — Monster only surfaces what the employer provides in the listing.Does the API support searching by job category, company name, or employment type as dedicated filter parameters?+
search_jobs endpoint filters by query (free text) and location only. Category slugs from get_job_categories can be passed as the query value to approximate category filtering, but dedicated filters for company name, employment type, or remote status are not exposed as separate parameters. You can fork this API on Parse and revise it to add those filter parameters.Does the API return application URLs or apply-now links for each job?+
search_jobs and get_job_details includes a url field pointing to the Monster job page, and an applyType field indicating whether the application is INTEGRATED (handled on Monster) or OFFSITE (redirects to the employer's site). Direct external application URLs for offsite postings are not included. You can fork this API on Parse and revise it to attempt resolving those redirect targets.