Skip to main content
Glama

Hiring Signals

kadi_bence/ats-jobs-scraper

kadi_bence--ats-jobs-scraper
Destructive

This tool calls the Actor "kadi_bence/ats-jobs-scraper" and retrieves its output results. Actor description: Get open jobs of any company by name: Stripe, Ramp (Greenhouse, Lever, Ashby, Workable, Recruitee, Personio) and NVIDIA, Salesforce (Workday) in one run, board auto-detected. Filters: title, location, remote. Returns per job: title, team, location, salary, date, URL. Default: 20/company. $1.25/1K.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
waitSecsNoMax seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget.
companiesNoOne per line, e.g. Stripe, ramp.com, Hugging Face, or a board URL like https://jobs.lever.co/spotify. The Actor detects which applicant tracking system (ATS) each company uses; the RUN_SUMMARY record shows the board it found. If a company is not found, open its careers page, click a job and paste the board URL (e.g. https://job-boards.greenhouse.io/stripe). Example values: ["Stripe","Ramp","Hugging Face"]
locationsNoKeep jobs whose location text contains ANY of these as a whole word, e.g. London, Germany, US, Remote ('US' matches 'Remote - US' but not 'Austin'). A job with several locations is kept if any of them matches. Not case-sensitive. Leave empty for all.
remoteOnlyNoKeep only jobs whose work mode is remote (from the ATS's workplace field, or 'remote' in the location or title).
monitorNameNoSeparate 'already seen' lists for different schedules, e.g. 'engineers' and 'sales'. Use a new name to start over with a fresh baseline. Example values: "default"default
onlyNewJobsNoRemember returned jobs and output only NEW ones on later runs. Ideal for a daily schedule (hiring signals, job alerts). The first run stores a baseline and returns everything. You only pay for new jobs. Jobs cut off by 'Max jobs per company' are not remembered, so they come in a later run.
atsPlatformsNoWhich applicant systems to try when detecting a company's job board. Leave all selected unless you know the platform (fewer = faster). Workday is tried only when none of the others has the company (large employers like NVIDIA, Salesforce, Intel). Board URLs are always read directly. Example values: ["greenhouse","lever","ashby","workable","recruitee","personio","workday"]
titleExcludesNoDrop jobs whose title contains ANY of these words, e.g. intern, senior, manager. Not case-sensitive ('intern' also drops 'International'; use 'internship' to be precise). Filtered-out jobs are not charged.
titleIncludesNoKeep only jobs whose title contains ANY of these words, e.g. engineer, data scientist. Not case-sensitive. Leave empty for all titles. Filtered-out jobs are not saved and not charged.
titleKeywordsNoSame as 'Job title must contain' above, as one comma-separated text, e.g. 'engineer, data'. Kept for existing tasks; both lists are combined.
postedWithinDaysNoOnly jobs posted in the last N days, e.g. 7. Use 1 for jobs posted in about the last day. Leave empty for any date.
stripContactInfoNoRemoves e-mail addresses and phone numbers from descriptions. Recommended, so you don't store personal data (GDPR). Example values: true
descriptionFormatNoHow to output the job description. Example values: "text"text
maxJobsPerCompanyNoStop after this many jobs per company. 0 = no limit (all open jobs). The default without input (API, MCP and AI-agent calls) is 20. Example values: 20
proxyConfigurationNoNot needed for these public APIs. Enable only if you see blocking errors. Example values: {"useApifyProxy":false}

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
tipNoAdvisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key
runIdYesActor run ID
statsNoRun statistics
statusYesRun status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED
actorIdYesStable Apify Actor ID from the run record
summaryYesPast-tense summary of the run state
exitCodeNoActor process exit code; populated for terminal states (especially FAILED)
nextStepYesOne primary follow-up action with identifiers interpolated
storagesYesDataset and key-value store metadata, keyed by alias. "default" is always the primary entry.
actorNameNo"username/actor-name"
startedAtNoISO timestamp when the run started
finishedAtNoISO timestamp when the run finished (terminal states only)
statusMessageNoPass-through from Apify run.statusMessage
apifyConsoleUrlNoPersonalized Apify Console link to the run; present only for Console sessions

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / atsPlatforms / default
      Previous value: -[
      -  "greenhouse",
      -  "lever",
      -  "ashby",
      -  "workable",
      -  "recruitee",
      -  "personio"
      -]New value: +[
      +  "greenhouse",
      +  "lever",
      +  "ashby",
      +  "workable",
      +  "recruitee",
      +  "personio",
      +  "workday"
      +]
    • changedInput schema / properties / atsPlatforms / description
      Previous value: -"Which ATS to try when detecting a company's job board. Leave all selected unless you know the platform (fewer = faster). Board URLs are always read directly.\nExample values: [\"greenhouse\",\"lever\",\"ashby\",\"workable\",\"recruitee\",\"personio\"]"New value: +"Which applicant systems to try when detecting a company's job board. Leave all selected unless you know the platform (fewer = faster). Workday is tried only when none of the others has the company (large employers like NVIDIA, Salesforce, Intel). Board URLs are always read directly.\nExample values: [\"greenhouse\",\"lever\",\"ashby\",\"workable\",\"recruitee\",\"personio\",\"workday\"]"
    • changedInput schema / properties / atsPlatforms / examples
      Previous value: -[
      -  "greenhouse",
      -  "lever",
      -  "ashby",
      -  "workable",
      -  "recruitee",
      -  "personio"
      -]New value: +[
      +  "greenhouse",
      +  "lever",
      +  "ashby",
      +  "workable",
      +  "recruitee",
      +  "personio",
      +  "workday"
      +]
    • changedInput schema / properties / atsPlatforms / items / enum
      Previous value: -[
      -  "greenhouse",
      -  "lever",
      -  "ashby",
      -  "workable",
      -  "recruitee",
      -  "personio"
      -]New value: +[
      +  "greenhouse",
      +  "lever",
      +  "ashby",
      +  "workable",
      +  "recruitee",
      +  "personio",
      +  "workday"
      +]
    • changedInput schema / properties / atsPlatforms / items / enumTitles
      Previous value: -[
      -  "Greenhouse",
      -  "Lever",
      -  "Ashby",
      -  "Workable",
      -  "Recruitee",
      -  "Personio"
      -]New value: +[
      +  "Greenhouse",
      +  "Lever",
      +  "Ashby",
      +  "Workable",
      +  "Recruitee",
      +  "Personio",
      +  "Workday (if none of the others)"
      +]
  2. First observed

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and openWorldHint=true, and the description adds genuinely new context: the $1.25/1K cost model, the 20-jobs-per-company charged default, and the stateful behavior of monitoring mode (first run stores a baseline, only new jobs later). It does not explain the long-run/polling behavior, but that is covered in the waitSecs schema field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Reasonably front-loaded: the capability statement and platform list come first, followed by filters, returned fields, default and price. The opening wrapper sentence ("This tool calls the Actor ... and retrieves its output results") is boilerplate that adds little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering the safety/open-world profile, the description only needs to carry purpose, cost and operating mode — all of which it does. It is thin only on routing between this generic scraper and the Workday-specific sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter is documented in-schema, so the baseline of 3 applies. The description only surfaces the headline filters and the returned fields ("title, team, location, salary, date, URL"), adding no syntax or edge-case meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ("Get open jobs of any company by name") and enumerates the supported ATS platforms, so an agent knows exactly what comes back. It is clear but never differentiates itself from the sibling kadi_bence--workday-jobs-scraper, which targets an overlapping use case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the defaults and filter description ("Default: 20/company", "Filters: title, location, remote") and the schema explains monitoring mode, but the description itself gives no explicit when-to-use vs the Workday-specific sibling. An agent must infer the choice from the platform coverage alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.