MCP server: One MCP server.

ATS Job Pulse: Company Jobs & Hiring Signals

@edtool79-collabMCP server · External

Open jobs and hiring changes for any company, from its domain. Runs on Apify.

Freeno charge per call

One address for any MCP client. Your key stays in your Odel vault.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: only reads or looks up information.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

What it asks for at sign-in

Access toReadChange
Full api accessNot stated: full_api_access

From the sign-in at console-backend.apify.com, as the endpoint publishes it. You approve it there.

Tools

None listed · checked 15 Oct 2026

Odel could not list its tools without signing in.

Try it in the Inspector
README3 min read

ATS Job Pulse logo

ATS Job Pulse — company jobs & hiring signals for AI agents

Who is hiring, for what, and what changed since yesterday?

ATS Job Pulse is a hosted tool (an Apify Actor) that takes a company domain and returns the company's open jobs plus a compact hiring summary, straight from the company's own job board. It works as an MCP tool for Claude, Cursor and other AI agents, and as a plain HTTP API.

  • Auto-detects the job board from a domain: Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters
  • Hiring signals: open jobs, new and closed jobs since the last run, breakdown by department, location and technology
  • Per job: title, department, location, remote flag, salary range (when published), posted date, technologies, apply URL
  • Small output on demand: filters and a summary-only mode sized for an agent's context window
  • Pay per company: $0.05 per successfully processed company. Companies that are not found are free

➡️ Run it: https://apify.com/hirepulse/ats-job-pulse

Use it from an AI agent (MCP)

Add the Apify MCP server with this tool enabled to your MCP client:

json
{
  "mcpServers": {
    "ats-job-pulse": {
      "url": "https://mcp.apify.com/?actors=hirepulse/ats-job-pulse"
    }
  }
}

The first connection opens a browser window to sign in to Apify (a free account is enough to start).

Then ask, for example:

  • "How many open jobs does stripe.com have, and in which departments?"
  • "Which of ramp.com, linear.app and notion.so opened new engineering roles since the last check?"
  • "Does figma.com hire for Kubernetes or LLM skills? Show salary ranges."
  • "List remote data-engineering jobs at these ten companies."

Use it over HTTP

bash
curl -X POST "https://api.apify.com/v2/acts/hirepulse~ats-job-pulse/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companies": ["stripe.com", "linear.app"], "output_mode": "summary_only"}'

Input

Only companies is required. See examples/ for ready-to-use inputs.

FieldDefaultDescription
companiesrequiredDomains (stripe.com) or board slugs (stripe). Prefix to force an ATS: greenhouse:stripe, lever:spotify, ashby:linear, workable:huggingface, recruitee:bunq, smartrecruiters:BoschGroup.
output_modejobs_and_summaryjobs_and_summary, summary_only (smallest) or jobs_only.
track_difftrueFlag each job NEW / EXISTING / CLOSED versus the previous run.
state_iddefault_stateName of the saved history. Runs sharing a state_id are compared.
only_changesfalseReturn only NEW and CLOSED jobs.
title_keywords, departments, locations, technologiesKeep jobs matching any of the given values.
remote_onlyfalseKeep remote jobs only.
max_jobs_per_company0Cap on job records per company (0 = no limit).
extract_tech_keywordstrueDetect technologies in job titles and descriptions.

Output

Two kinds of records, told apart by record_type.

company_summary — one per company:

json
{
  "record_type": "company_summary",
  "company_domain": "linear.app",
  "ats_type": "ashby",
  "total_active_jobs": 31,
  "remote_jobs": 31,
  "jobs_with_salary": 12,
  "is_first_run": false,
  "new_jobs": 2,
  "closed_jobs": 1,
  "new_job_titles": ["Senior Product Engineer", "Enterprise Account Executive"],
  "closed_job_titles": ["Support Specialist"],
  "jobs_by_department": { "GTM": 15, "Product": 13, "Operations": 3 },
  "top_locations": { "North America": 19, "Europe": 8 },
  "top_technologies": { "React": 8, "TypeScript": 8, "GraphQL": 7 }
}

job — one per job posting:

json
{
  "record_type": "job",
  "company_domain": "ramp.com",
  "ats_type": "ashby",
  "job_id": "…",
  "title": "Security Engineer, Cloud",
  "department": "Engineering",
  "location": "New York, NY",
  "is_remote": false,
  "posted_date": "2026-09-03T13:30:34+00:00",
  "salary": "$211.4K - $290.6K",
  "apply_url": "https://jobs.ashbyhq.com/ramp/…",
  "detected_technologies": ["AWS", "Kubernetes", "Python", "Terraform"],
  "status": "NEW"
}

Limitations

  • Companies on other systems (Workday, iCIMS, Taleo, in-house career sites) are reported as not found and are not charged.
  • Salary is returned as the employer published it and is not normalized. Many postings state no range.
  • SmartRecruiters publishes no job description in its listing, so technologies there come from the job title only.
  • A bare slug can occasionally match a different company with the same name on another ATS. Use a prefix (lever:acme) to be exact.

Support

Questions and bug reports: open an issue here, or use the Issues tab on the Actor page.

Similar modules

Browse Competitor intelligence