# Monster Company Jobs

> Monster Company Jobs is a paid API for AI agents from agents.openwebninja.com, paid per call via MPP, price unknown, status unknown (last checked 2026-10-14).

Fetches all open Monster job postings at one or more specified employers by display name, with optional keyword, location, and filter support.

## Facts

- Endpoint: GET https://agents.openwebninja.com/realtime-monster-data/company-jobs?utm_source=zero.xyz
- Price: price unknown
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-14
- Activations on Zero: 0
- Provider: agents.openwebninja.com
- Website: https://agents.openwebninja.com
- Canonical page: https://www.zero.xyz/c/agents-openwebninja-com-monster-company-jobs-e51df961
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_XQp3LxmZCBEnnrnZElV2Q

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agents-openwebninja-com-monster-company-jobs-e51df961
```

Example prompt: Can you pull up all the open job postings at Genentech on Monster right now? I'm interested in full-time roles in the San Francisco area within 50 km.

## When to prefer this

Use this endpoint when you need to enumerate all open jobs at one or more specific named employers on Monster, rather than doing a broad keyword search. It is the right choice when the employer is known and the goal is to browse their complete listing inventory, optionally narrowed by keyword, location, or employment type. Prefer this over the general /search endpoint when company-scoped results are required, since a keyword search for the company name on /search returns far fewer results than the company display name filter.

## Known failure modes

- Misspelled or slugified company name returns 0 results (must use exact employer_name display string)
- radius provided without location returns 400
- Unknown field name in fields parameter returns 400
- page + num_pages combination exceeds Monster's offset ceiling of 500, returning 400
- Company name not present on Monster returns empty data array
- Exceeding 10 employer names in company parameter may produce unexpected results

## How this service works

Every open Monster job posting at one or more employers.

This is the **same search path** as `/search` with Monster's `companyDisplayNames` filter
populated: the same fetch layer, the same parser, the same job builder, the same job
contract and the same `job_id` codec. `location`, `radius`, `country`, `date_posted`,
`employment_types`, `page`, `num_pages` and `fields` all behave exactly as they do on
`/search`.

**Identifying an employer.** Monster publishes no company id, so the match is on the
DISPLAY NAME, which is the string returned as `employer_name` on any job. `Genentech`
works, while a slug such as `genentech-inc`, a URL, or a misspelling returns nothing. It
is a SUBSTRING match, so a short name also reaches longer employers containing it
(`Lines` reaches `Melton Truck Lines` and `Florida Rock & Tank Lines`); pass the full
`employer_name` and it behaves as an exact match. The company filter is what finds them:
`query=Genentech` returned 0 rows where the company filter returned 7.

**A comma inside a name is safe.** The list separator is a comma and most US employer
names end in one (`Cross Country Healthcare, Inc.`). A trailing fragment that is only a
corporate suffix is rejoined to the name before it, so `Cross Country Healthcare, Inc.`
is one employer while `Genentech,Deloitte` is still two.

**Multiple employers are an OR.** Monster ranks the union by relevance, so a small
employer paired with a large one can be absent from page 1 entirely. What is guaranteed
is that every job returned belongs to one of the requested employers.

**`query` is optional here**, unlike on `/search`: the employer is the constraint. So is
`location`, so a caller can browse one employer country-wide.

**`sort_by`, `remote_jobs_only` and `language` are ignored on this endpoint.** Use
`/search` for those.

**An employer with no open jobs returns an empty array**, and so does a name Monster does
not recognise. With no id to validate against, the two cases are indistinguishable.

**Billing:** identical to `/search`. `Requests` counts one per upstream page of 10
actually fetched.


## Output

Returns a paginated array of job objects from Monster, each containing job_id, job_title, employer_name, job_description, job_apply_link, job_location, job_city, job_state, job_country, job_latitude, job_longitude, job_salary, job_salary_string, job_employment_type, job_posted_at, job_is_remote, job_skills, job_highlights, employer_reviews, and many other fields. Also includes request metadata (status, request_id) and echoed parameters.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "company"
 ],
 "properties": {
  "page": {
   "type": "integer",
   "default": 1,
   "maximum": 51,
   "minimum": 1,
   "description": "1-based page to start from. Each page is 10 jobs. Capped at 51 by Monster's upstream\noffset ceiling of 500, and `page` + `num_pages` may not cross it either.\n\n**Default:** `1`\n\n**Allowed values:** `1-51`\n"
  },
  "query": {
   "type": "string",
   "description": "Optional free-form keyword filter applied WITHIN the selected employers. Omit it to\nbrowse an employer's whole open job list; the company is the constraint here. Exactly\none `query` is accepted; a second one is a 400.\n"
  },
  "fields": {
   "type": "string",
   "description": "Comma-separated projection over the job object, for example\n`job_title,employer_name,job_apply_link`. `job_id` and `job_title` are always\nincluded. An unknown field name is a 400.\n"
  },
  "radius": {
   "type": "integer",
   "maximum": 160,
   "minimum": 1,
   "description": "Search radius around `location`, in KILOMETRES, converted to the miles Monster\nexpects. Requires `location`; Monster ignores a radius on a country-wide search, so\nthat combination is a 400. Past the maximum Monster returns nothing, so an\nout-of-range value is also a 400.\n\n**Allowed values:** `1-160`\n"
  },
  "company": {
   "type": "string",
   "example": "Genentech",
   "description": "Comma-separated list of up to 10 employer display names, as returned in\n`employer_name` on any job. A name containing a comma (`Acme, Inc.`) stays one\nemployer. Matching is substring: a misspelling returns nothing, a short name can\nreach longer employers.\n"
  },
  "country": {
   "type": "string",
   "default": "us",
   "description": "2-letter country code. Selects both the Monster locale the search runs on and the\nmarket searched, and both matter: a country's own locale returned 1.35x to 6.9x the\ninventory `en-US` did. See Coverage for the markets Monster actually carries.\n\n**Default:** `us`\n"
  },
  "location": {
   "type": "string",
   "description": "Free-text location, for example `New York, NY` or `London`. Optional: omit it and the\nsearch runs country-wide over `country`, which returns far more inventory than any\none city. Required if you pass `radius`.\n"
  },
  "num_pages": {
   "type": "integer",
   "default": 1,
   "maximum": 20,
   "minimum": 1,
   "description": "How many consecutive pages to fetch and concatenate, starting at `page`. Each page is\n10 jobs
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "request_id",
  "parameters",
  "data"
 ],
 "properties": {
  "data": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "job_id",
     "job_title",
     "employer_name",
     "employer_logo",
     "employer_website",
     "job_publisher",
     "job_employment_type",
     "job_employment_types",
     "job_apply_link",
     "job_apply_is_direct",
     "apply_options",
     "job_description",
     "job_is_remote",
     "job_posted_at",
     "job_posted_at_timestamp",
     "job_posted_at_datetime_utc",
     "job_location",
     "job_city",
     "job_state",
     "job_country",
     "job_latitude",
     "job_longitude",
     "job_benefits",
     "job_benefits_strings",
     "job_google_link",
     "job_salary",
     "job_salary_string",
     "job_min_salary",
     "job_max_salary",
     "job_salary_period",
     "job_highlights",
     "job_onet_soc",
     "job_onet_job_zone",
     "employer_reviews",
     "job_uid",
     "job_seo_id",
     "job_canonical_url",
     "job_apply_type",
     "job_skills",
     "job_industry",
     "job_occupational_category",
     "job_location_type",
     "job_status",
     "job_valid_through",
     "job_provider",
     "employer_description",
     "employer_founding_date",
     "employer_size",
     "employer_address",
     "job_posted_at_date",
     "job_salary_currency",
     "job_publisher_recency_label",
     "job_position"
    ],
    "properties": {
     "job_id": {
      "type": "string",
      "example": "bW9uc3RlcjplNzc2MTJmNS1iYjNiLTQ2NWUtYTk2NS00MzlhZjk0MDk0YmQ",
      "description": "Opaque public id for the posting, `base64url(\"monster:\" + <Monster job uuid>)`. Pass it back to `/job-details`. Stable for the life of the posting."
     },
     "job_uid": {
      "type": "string",
      "example": "e77612f5-bb3b-465e-a965-439af94094bd",
      "description": "Monster's own job id, a permanent UUIDv4. Accepted directly by `/job-details` and the right key for a downstream cache."
     },
     "job_city": {
      "type": "string",
      "example": "DFW Airport",
      "nullable": true,
      "description": "City. `null` on a country-level or region-only posting."
     },
     "job_state": {
      "type": "string",
      "example": "Texas",
      "nullable": true,
      "description": "The full state or province NAME, matching JSearch. The code appears inside `job_location`."
     },
     "job_title": {
      "type": "string",
      "example": 
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-openwebninja-com-monster-company-jobs-e51df961/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agents.openwebninja.com](https://www.zero.xyz/host/agents.openwebninja.com/llms.txt)
