SuperAPI AI Directory

indeed-mcp

Remote MCP server for Indeed: job listings by keyword and location with salary, company and posting date, plus full job postings, as JSON.

Open website

About this tool

Purpose

indeed-mcp is a hosted Model Context Protocol (MCP) server that lets AI clients call two read-only Indeed tools: searching job listings by keyword and location, and reading the full text of a single job. All data is returned as structured JSON. It reads public job information visible to logged-out visitors, requiring no Indeed developer account and no partner approval.

Main capabilities

The server exposes two tools:

  • hasdata_indeed_listing_getJobListings: Returns one page of search results by keyword and location, including searchInformation, a jobs array, peopleAlsoSearchFor, and pagination information (nextPage is the URL of the next page). Each job includes title, company, location, url, a short description, sponsored, a relative date and an absolute isoDate, a details array (such as Full-time, Hybrid work), a benefits array, and a salary object when the job specifies salary.
  • hasdata_indeed_job_getJobDetails: Returns the full job posting based on the job URL, including title, company, location, sponsored, a details object (containing jobType and workSetting arrays), a salary object (if present), and the job body's description (plain text) and descriptionHtml (preserving list and paragraph markup). In addition, the server provides a preset prompt (a ready-made workflow) and exposes 4 resources, each corresponding to a parameter whose acceptable values are a fixed list, with the URI format hasdata://indeed/<parameter>; reading resources does not consume credits.

How to use

An MCP client is required, along with an API Key obtained from the HasData dashboard (free to create, no credit card required). This is a remote server, and the simplest way is to connect via URL and the x-api-key request header, with no need to run a container and no need for an Indeed developer account. Only stdio clients can connect through a lightweight launcher, which has been published as the npm package @hasdata/indeed-mcp and the PyPI package hasdata-indeed-mcp. The server URL is the same for all clients:https://mcp.hasdata.com/mcp?apis=indeed。 OAuth-capable clients can add this URL as a connector and sign in, without placing a key in a configuration file (Settings → Connectors → Add custom connector, paste the URL and sign in). Claude Desktop only loads local (stdio) servers, so access the remote server through a stdio launcher that reads the key from an environment variable and must be added to claude_desktop_config.json. When using Python, you can switch to the PyPI package and run it with uvx without manual installation. Cursor uses ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project). Windsurf uses ~/.codeium/windsurf/mcp_config.json, with the field name serverUrl rather than url. VS Code uses .vscode/mcp.json in the workspace. Users only need to paste the prompt, and the agent automatically selects tools.

Use cases

Suitable for applications that need to let AI agents retrieve Indeed public job information, compare salaries, and extract full job text, such as job search assistance, recruiting market analysis, or job aggregation.

Limitations

  • Read-only only; does not provide job applications, employer dashboards, candidate data, or private jobs.
  • Only reads publicly visible job pages.
  • Each successful call consumes 10 credits, regardless of response size. The free tier provides 1,000 credits per month (about 100 calls), requires no credit card, and renews per billing cycle; paid plans start at $59/month and include 200,000 credits (about 20,000 calls), with unit price decreasing as usage increases; see the pricing page for specific prices. The plan also determines concurrency: the free tier allows 1 concurrent request, Startup is 5, Basic is 15, and Growth tiers range from 50 to 500. Non-200 responses are not billed, but successful calls with no results are still billed.
  • Error handling: clients will almost never see HTTP error codes from tool calls; the MCP layer returns 200 and places the failure in the result, with isError true and the reason as text. A wrong key appears as tool output rather than a connection failure; a missing key is the only true HTTP error (connection failure 401). Parameters that do not match the tool schema are rejected before scraping, returning MCP error -32602: Input validation error, with no scraping and no billing. A search with no matches returns a successful result but an empty jobs array, so check the array length before iterating. A job that has been taken down returns 400, with requestMetadata.status as error.
  • The apis query parameter determines the tools visible to the agent; typos are ignored, and if all are wrong the request fails and lists the unrecognized names and all valid values; omitting the parameter exposes all 57 HasData tools.
  • Salary exists only when explicitly stated in the job posting, so read defensively.
  • Compliance: HasData only accesses public data, but platform terms may restrict automated access; users must ensure compliance themselves, and when personal information is involved, there must be a legal basis such as GDPR or CCPA.
  • The repository itself is the configuration and documentation for the remote server, with no build step. Tests are located in the test/ directory and verify the tool contract; CI runs on every push and weekly, and the live checks in that test consume 10 credits.

License

MIT License, see LICENSE for details.