Company Signals MCP: Startup Jobs & Hiring Data for AI Agents
Pricing
from $3.75 / 1,000 tool calls
Company Signals MCP: Startup Jobs & Hiring Data for AI Agents
MCP server for Claude, ChatGPT, Cursor and other AI agents: search 260,000+ open jobs at 8,000+ startups, list any company's open roles live from its career board, and detect which ATS it uses. Pay per tool call.
Pricing
from $3.75 / 1,000 tool calls
Rating
0.0
(0)
Developer
Red Fox Scout
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
An MCP server that gives Claude, ChatGPT, Cursor and any other MCP-compatible AI agent live hiring data, for recruiters, sales teams and job seekers who work through an AI assistant. It also runs as a batch Actor: give it a list of company domains and get one row per company with its open roles, job board, top hiring departments, tech stack, social links, careers page and mail provider, on a schedule or from a task. $0.005 per successful tool call, or per completed domain row in batch mode.
- search_jobs: search 260,000+ open jobs at 8,000+ startup and tech companies (Greenhouse, Lever and Ashby career boards), refreshed daily. Filter by keywords, location, remote, department, posting date or company.
- company_jobs: list one company's open jobs live from its own career board. Give it a website (
stripe.com), a careers URL, orats:slug(greenhouse:airbnb). Works with Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio and Breezy. - detect_ats: find which applicant tracking system a company hires with, and its job board name.
Price: $0.005 per successful tool call or per enriched domain in batch mode ($5 per 1,000). Failed calls and error rows are free. Apify's free plan ($5 monthly credit) covers about 1,000 calls or domains a month.
Questions it answers
Ask your agent, or run a batch:
- "Which startups are hiring ML engineers in Berlin this week?"
- "List Figma's open design roles."
- "Which of these 20 companies opened sales roles recently?" (a buying signal)
- "Does Notion use Greenhouse or Ashby?"
Who uses this
- 🤖 AI agent builders: give an assistant up-to-date hiring data without writing a scraper.
- 💼 Sales and RevOps: ask your agent which target accounts are hiring for roles your product serves.
- 🤝 Recruiters: let an agent shortlist companies hiring for the roles you place.
- 🧭 Job seekers: ask for fresh roles that match your skills, location and remote preference.
Why this Company Signals MCP
- 🔌 One endpoint, three tools: job search across 8,000+ career sites, one company's live jobs, and its applicant tracking system.
- ⚡ Live and fresh: the job index is rebuilt daily and company jobs are read from the company's own board at call time.
- 🗂️ Batch mode: a list of domains in, one row per company out, with open roles, top hiring departments, tech stack, social links and mail provider.
- 🔁 Schedules and tasks: batch runs work like any Actor run, so they can run daily and feed a sheet or CRM.
- 💰 $0.005 per call or per company row, failed calls and error rows free.
How to use: connect an MCP client
- Get your Apify API token from Console → Settings → API & Integrations (a free Apify account is enough).
- Add the server to your MCP client. Server URL (Streamable HTTP):
https://redfoxscout--company-signals-mcp.apify.actor/mcp
- Send the token as a Bearer token. Example for Claude Desktop, Cursor or any client that takes a JSON config:
{"mcpServers": {"company-signals": {"url": "https://redfoxscout--company-signals-mcp.apify.actor/mcp","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
- Ask your agent a hiring question. It picks the right tool on its own.
You can also reach these tools through Apify's own MCP server (mcp.apify.com), which lets agents discover and call Apify Actors.
Input
Two ways in: an MCP client calls the tools with the arguments shown under Output, or a batch run takes these fields:
| Field | Type | Default | What it does |
|---|---|---|---|
domains | array | required | Company domains, one per line, such as stripe.com. Full website URLs also work. Up to 200 per run. Entries that are not domains come back as free error rows. |
signals | array | all four | Signals to add to each row: hiring (job board, open roles, top departments), techStack (tools on the homepage and their categories), socials (profile links) and emailProvider (mail provider from live DNS MX records). Empty means all four. |
maxConcurrency | integer | 3 | Domains looked up at once, from 1 to 5. |
Output
What each tool returns (batch rows are described under Batch mode below):
search_jobs returns totalMatches, indexBuiltAt and up to 100 jobs (newest first, at most 5 per company by default), each with company, title, department, location, workplace type, salary when published, posting date, job URL and ATS. company_jobs returns the company's open job count, matching jobs and the same fields. detect_ats returns ats and boardSlug, or found: false with a reason.
A real search_jobs response (data engineer or analytics engineer, remote or London, last 3 days, one job per company), shortened:
{"indexBuiltAt": "2026-10-06T10:37:02.354Z","totalMatches": 48,"returned": 8,"jobs": [{"company": "Jobgether","title": "Senior Data Engineer, Data Management & BI","department": "Security & IT","location": "US","workplaceType": "remote","salary": null,"postedAt": "2026-10-06T09:44:08.070Z","url": "https://jobs.lever.co/jobgether/8389a752-c409-42c8-ba60-f15d4be74035","ats": "lever","companySlug": "jobgether"},{"company": "Valtech","title": "Senior Data Engineer","department": null,"location": "Portugal - Remote","workplaceType": "remote","salary": null,"postedAt": "2026-10-06T07:05:12.000Z","url": "https://job-boards.eu.greenhouse.io/valtech/jobs/4989690101","ats": "greenhouse","companySlug": "valtech"},"..."]}
A real detect_ats response for notion.so:
{ "company": "notion.so", "found": true, "ats": "ashby", "boardSlug": "notion", "detectedVia": "https://notion.so/careers" }
Example tasks
Ready-made inputs you can open, change and run:
Use with Claude
The quickest way, no token to copy: Claude connects through Apify's hosted MCP server and you sign in with your Apify account.
- In Claude (desktop app or claude.ai), open Settings, then Connectors, then Add custom connector.
- Name it
Company Signalsand paste this server URL:https://mcp.apify.com?tools=redfoxscout/company-signals-mcp - Select Continue, then Add, and sign in to Apify when your browser opens.
Then try:
- "Find remote machine learning jobs at startups posted this week and rank them against my resume." (attach your resume)
- "Which of these companies are hiring data engineers right now: stripe.com, ramp.com, notion.so, figma.com, airbnb.com?"
For the first prompt Claude calls search_jobs with:
{ "keywords": ["machine learning", "ML engineer"], "remote_only": true, "posted_within_days": 7, "max_results": 50 }
For the second it calls company_jobs once per company, e.g. { "company": "stripe.com", "keywords": ["data engineer"] }. Each successful call costs $0.005.
Batch mode: one row per company domain
Start the Actor with a list of domains instead of connecting an MCP client. Each domain becomes one row with the same hiring data the tools return, plus the company's homepage profile, tech stack, social links and mail provider. Run it once, put it on a schedule, or call it from the API.
Input (all fields are described under Input above):
{ "domains": ["notion.so", "vercel.com"], "signals": ["hiring", "techStack", "socials"] }
Real output for the input above (a run with signals set to hiring, techStack and socials, so emailProvider is not requested):
{"domain": "vercel.com","error": null,"siteError": null,"companyName": "Vercel","description": "The autonomous stack for every app and agent.","logoUrl": "https://lishhsx6kmthaacj.public.blob.vercel-storage.com/vercel-wordmark.svg","country": "US","careersUrl": "https://vercel.com/careers","ats": "greenhouse","boardSlug": "vercel","openRoles": 86,"topDepartments": [],"techStack": ["Next.js"],"techCategories": ["Framework"],"socials": {"linkedin": "https://www.linkedin.com/company/vercel","x": "https://x.com/vercel","facebook": "https://www.facebook.com/VercelHQ","instagram": "https://www.instagram.com/vercel","youtube": "https://www.youtube.com/@VercelHQ","github": "https://github.com/vercel","tiktok": null},"emailProvider": null,"hasMx": null,"scrapedAt": "2026-10-08T12:55:23.574Z"}
| Field | What it holds |
|---|---|
domain, error, siteError | The domain looked up. error is set only for rows that were not charged. siteError says why the homepage could not be read (for example a block page); profile, tech and social fields are then null, while hiring data still comes from the job board. |
companyName, description, logoUrl, country, careersUrl | From the homepage: its name, meta description, logo or icon, and the country in its own organization data. A regional site can show its region rather than the head office. |
ats, boardSlug, openRoles, topDepartments | The job board found (Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters, Personio or Breezy), its board name, open roles, and up to five departments with their counts. Boards that publish no departments give an empty list. |
techStack, techCategories | Tools found in the homepage HTML, such as Next.js, Google Analytics, Stripe or HubSpot, and their categories. Tools that a page loads only with JavaScript are not seen. |
socials | LinkedIn, X, Facebook, Instagram, YouTube, GitHub and TikTok profile links from the homepage or its organization data. |
emailProvider, hasMx | The mail provider behind the domain's MX records (Google Workspace, Microsoft 365, Zoho, Proofpoint, Mimecast, GoDaddy, Fastmail, Proton Mail, Amazon SES or Other), and whether the domain accepts mail at all. No mailbox is contacted. |
scrapedAt | When the row was made. |
Each domain that completes is charged one tool call, $0.005. Error rows are free.
What this Actor does not do: it does not log in, use cookies, solve CAPTCHAs or read private pages, and it does not return names or contact details of people. It runs no headless browser, so it cannot see tools or links that a page adds only with JavaScript. There is no proxy option yet.
Data and limits
- Jobs come from each company's official public job-board API. Company and job data only; no personal data about recruiters or employees.
- The search index is rebuilt daily;
company_jobsreads live. - Coverage: companies on Greenhouse, Lever and Ashby in our index (it grows over time). Workday and iCIMS aren't covered.
How much does it cost?
- Tool call: $0.005 per successful call, whatever the number of jobs it returns. Failed calls are free.
- 100 calls cost about $0.50; 1,000 calls about $5.
- Batch mode: $0.005 per domain that completes, so 100 domains cost about $0.50 and 1,000 about $5. Error rows are free.
- Apify's free plan includes $5 of credit every month, enough for about 1,000 calls. Paid Apify plans get Store discounts of up to 25%.
FAQ
Is this legal? The tools read public job-board APIs that companies publish so their jobs get syndicated. Only job and company data is returned.
Which clients work? Any MCP client that supports Streamable HTTP with an Authorization header, such as Claude Desktop, Claude Code, Cursor and VS Code.
Do I need an AI agent to use it? No. Batch mode takes a list of domains and writes one row per domain to the dataset (see Batch mode above).
Do I need bulk exports, schedules or alerts instead of agent calls? Use Startup Jobs Search or ATS Jobs Scraper.
Related Actors
- Startup Jobs Search: the same index as a bulk search with monitoring mode.
- ATS Jobs Scraper: live jobs from any company on 8 ATS.
- Website Tech Stack Detector: what a company's website is built with.
Credits
The starting company list comes from the open-source job-board-aggregator project (MIT licence). See NOTICE.
