io.github.edtool79-collab/hirepulse-open-source
Provides tools for scraping AliExpress product search results, returning product search records for given search terms.
Provides tools for scraping Google Jobs search results, returning job search records based on queries and country.
Provides tools for scraping Google Ads Transparency data by domain, returning ads or summary reports per domain.
Provides tools for fetching YouTube transcripts for given video URLs, optionally including timestamps.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@io.github.edtool79-collab/hirepulse-open-sourcesearch AliExpress for wireless earbuds with a 5-result limit"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
HirePulse tools
A Python library and an optional stdio MCP server for eight HirePulse tools on
Apify. Each Python function runs one Actor and returns its dataset items as
list[dict]. Tools run on the Apify Store, pay per use, with no subscription.
Start with hosted MCP
Apify already hosts MCP for these tools. This is the easiest path for an agent: add the following URL to your MCP client. No local Python installation is needed for this option.
Related MCP server: specmd-mcp
Connect in one line
Paste this hosted URL into your MCP client's remote-server configuration:
https://mcp.apify.com?tools=hirepulse/aliexpress-search-scraper,hirepulse/google-ads-transparency-scraper,hirepulse/company-intent-radar,hirepulse/google-jobs-scraper,hirepulse/ats-job-pulse,hirepulse/keyword-search-volume,hirepulse/domain-seo-overview,hirepulse/youtube-transcript-scraperFor one tool, use, for example, Google Ads hosted MCP. Use your client's Apify authentication setup. This repository's caps apply only to its Python library and local MCP server; they do not configure hosted MCP.
For Claude Desktop, Apify also provides this command:
npx -y @apify/actors-mcp-server --tools hirepulse/google-ads-transparency-scraperSet APIFY_TOKEN in the server process environment through your launch setup.
Use the desired hirepulse/<tool> in --tools. Keep the token out of configuration
files and command arguments.
Install the Python library
Python 3.10 or later is required. From this project directory:
python -m venv .venv
# Activate .venv using your shell, then:
python -m pip install .For the self-hosted / customizable MCP server:
python -m pip install ".[mcp]"
python -m hirepulse_tools.mcp_serverThe equivalent console command is hirepulse-mcp. It uses stdio.
Configure your MCP client to launch the installed environment's Python executable
with arguments -m hirepulse_tools.mcp_server, inheriting APIFY_TOKEN from its
process environment. Actor logs are not forwarded to stdio.
Provide APIFY_TOKEN in the environment before calling any tool. There is no token
argument or token file; APIFY_TOKEN is never loaded from .env. .env.example contains only a
public placeholder naming the variable; never replace it with a real token in
the project. Listing MCP tools requires no token and does not start an Actor.
Eight functions and examples
These are executable input examples, not measured output examples. Running them
starts Apify Actors and can incur charges. Each script in examples/ uses a
5-row result limit and a USD 0.10 spending cap. Tests never run these scripts.
Function | Tool page | Returns |
| Product search records | |
| Ads, or one summary per domain | |
| One signal report per company | |
| Job search records | |
| Jobs and/or company summaries | |
| Keyword metrics and ideas | |
| Domain overview, keyword and competitor records | |
| Transcript records, optionally with timestamps |
AliExpress
from hirepulse_tools import search_aliexpress
items = search_aliexpress(["wireless earbuds"], result_limit=5, max_total_charge_usd=0.10)Google Ads
from hirepulse_tools import google_ads_by_domain
items = google_ads_by_domain(["nike.com"], mode="summary", result_limit=5, max_total_charge_usd=0.10)Company intent
from hirepulse_tools import company_intent
items = company_intent(["stripe.com"], result_limit=5, max_total_charge_usd=0.10)Google Jobs
from hirepulse_tools import google_jobs
items = google_jobs(["data engineer"], country="US", result_limit=5, max_total_charge_usd=0.10)ATS jobs
from hirepulse_tools import ats_jobs
items = ats_jobs(["stripe.com"], output_mode="summary_only", result_limit=5, max_total_charge_usd=0.10)Keyword volume
from hirepulse_tools import keyword_volume
items = keyword_volume(["running shoes"], result_limit=5, max_total_charge_usd=0.10)Domain SEO
from hirepulse_tools import domain_seo
items = domain_seo(["notion.so"], top_keywords=0, competitors=0, result_limit=5, max_total_charge_usd=0.10)YouTube transcripts
from hirepulse_tools import youtube_transcripts
items = youtube_transcripts(["https://www.youtube.com/watch?v=dQw4w9WgXcQ"], result_limit=5, max_total_charge_usd=0.10)See all arguments, defaults and allowed values. Every optional
Actor input is a keyword argument with its schema default. Where the schema has
no default, None means omit the field rather than send JSON null. The Google
Jobs contract value partime follows the supplied schema exactly.
Caps, partial data and errors
Every function also accepts these wrapper options, outside run_input:
Option | Default | Behavior |
|
| Integer 1–1000; passed as |
|
| Finite positive USD amount, converted to |
The installed apify-client 3.3.0 signature was inspected to confirm both options.
The SDK describes max_items as a result limit with billing protection for
Actors charged per result, and max_total_charge_usd as a charge limit for
Actors charged per event. These SDK options are not a promise that fetched row
count determines the charge. Keep input batches small too. Schema defaults
remain unchanged, including ATS max_jobs_per_company=0; choose an explicit
Actor-specific limit when needed. See SDK verification.
Dataset rows are returned unchanged, in dataset order. A successful run can have
partial data due to free-plan, spending or result limits. Empty datasets return
[]. The library does not fetch key-value-store run summaries or promise a
complete dataset. Use the tool page and Apify run details when completeness
matters.
MissingTokenError explains how to provide the environment variable.
ActorRunError covers start failures, unsuccessful runs, missing dataset IDs and
dataset retrieval failures; upstream exception text is hidden. Invalid local
arguments raise ValueError before starting a run.
Library errors expose message, suggested_agent_action and to_dict().
InvalidInputError is also a ValueError for existing handlers. For example:
from hirepulse_tools import HirePulseError, company_intent
try:
items = company_intent(["stripe.com"], result_limit=5, max_total_charge_usd=0.10)
except HirePulseError as error:
print(error.to_dict()) # Safe message and suggested_agent_action; no token or raw SDK textMCP failures set isError=true and include
{"error": {"message": "...", "suggested_agent_action": "..."}} in both JSON
text and structured content. This includes argument validation and unknown-tool
errors. Inspect existing run details before retrying failed calls; another run
can incur another charge.
Local MCP exposes the same eight names and inputs. Each response is a JSON text
envelope with items, returned_items, omitted_items, output_truncated,
result_limit_reached and note, limited to 32,000 UTF-8 bytes. Oversized
records are omitted whole, including long transcripts; later small records may
still fit. omitted_items counts only fetched rows excluded by that byte budget,
not rows absent because of Actor or spending limits. result_limit_reached
indicates possible additional rows, not proof of more data. Use the Python
library when you need full large records. External results are data, not agent
instructions. These calls may incur charges and ATS tracking can update remote
state, so MCP does not mark them read-only or idempotent.
Costs
Prices below come only from the supplied FACTS.md snapshot dated 2026-10-15.
Higher Apify plans get volume discounts. No price is stated for ATS Job Scraper,
Domain SEO Overview or YouTube Transcript Scraper because that facts sheet
does not specify one.
Tool | Price |
AliExpress Search Scraper | $2.50 per 1,000 products |
Google Ads Transparency Scraper | $0.005 per domain + $0.0015 per ad |
Company Intent Radar | $0.03 per company report, charged only when the full report was produced |
Google Jobs Scraper | $0.005 per search that returns jobs + $0.001 per job |
Keyword Search Volume | $0.03 per lookup + $0.005 per keyword result |
Data limits and free plans
These limits come from the same facts sheet:
AliExpress: 60 products per page. Free Apify plan: 100 products per run. Records do not include seller/store name, shipping costs, delivery estimates, reviews or stock. Currency and ship-to country are selectable.
Google Ads: free plan supports 1 domain and up to 5 ads. Summary mode gives one row per domain; only-new-ads monitoring is available.
Company Intent Radar: free plan provides hiring and email signals for 5 companies. Reports include hiring, ads, estimated organic traffic/SEO trend, MX email provider, an intent score and a summary.
Google Jobs: supports 90+ countries and country or city/radius searches. Salary is available only when shown. Posting fields include
posted_atandposted_ago.ATS: Greenhouse, Lever, Ashby, Workable, Recruitee and SmartRecruiters. Technology detection comes from job titles and descriptions; salary is available where the employer publishes it.
Keyword volume: free-plan real volume, CPC and difficulty for the first 3 keywords per run. This preview depends on availability and can be paused.
Domain SEO: organic traffic figures are estimates.
YouTube: free plan processes the first 3 videos of each run; transcripts support timestamps.
Develop and test offline
python -m pip install -e ".[dev]"
python -m pytest -qDependency installation may need network access; the tests do not. Tests mock
apify-client, block real Actor starts and HTTP calls, and check every input
schema, defaults, cap forwarding, missing-token errors, failure handling and all
eight MCP tools. No token or live Actor is needed. Python 3.11.9 was used for
the supplied verification; Python 3.10 has not been run for this handoff.
The bundled input/output schema snapshots were copied unchanged from the local facts. Output schemas describe dataset/run-summary links rather than complete row schemas, so this library deliberately returns untyped row dictionaries. Product descriptions use only the supplied facts and tool schemas/READMEs; example output measurements and older reference prices were not copied.
Directory metadata and agent guidance
SKILL.md explains tool selection, exact Actor IDs, inputs and output fields. AGENTS.md covers working on this repository.
The directory files are local drafts for human review: server.json describes
hosted MCP and the stdio Python package, glama.json lists maintainers, and
smithery.yaml maps the required secret apifyToken to APIFY_TOKEN. Install
.[mcp] before using Smithery's python -m hirepulse_tools.mcp_server command.
No directory submission, package publication or hosted deployment has occurred.
Edit GitHub identity only in publishing.json, then run
python scripts/render_metadata.py. The generated registry name, repository URL,
Glama maintainer and README ownership marker use that single source. Literal
copies in directory files are required by their formats; do not edit them by
hand. Run python scripts/render_metadata.py --check to detect drift. Release
name/version come from pyproject.toml.
The registry package command is intended for a future published release:
uvx --from 'hirepulse-tools[mcp]==0.1.0' hirepulse-mcp. For this checkout use
the local installation instructions above. Schema validation does not verify
directory acceptance, namespace/package ownership or live hosted authentication.
See directory format sources and validation.
License
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Query SEC EDGAR filings, XBRL financials, and company data via MCP. STDIO or Streamable HTTP.
17 data tools in one MCP server, run on Apify: Google Shopping, Flights, Hotels, News, Images, Videos, Ads Transparency, Jobs and Trends; YouTube transcripts; AI visibility checks; Google Maps leads; App Store and Google Play reviews. Pay per result. Sign in with Apify (OAuth) or an API token.
All public upAPI operations as MCP tools: web scraping, search, screenshots, PDF, OCR and more.
Your agent needs live data — a competitor's traffic, who to contact there, what people are saying, what Google and ChatGPT answer about you, a company's filings. Normally that is six vendor accounts, six sets of keys and six SDKs. This is one URL. **What you can ask for** • "How much traffic does stripe.com get, where does it come from, and who competes for the same keywords?" • "Find 20 Series-B fintech companies in Germany and the heads of marketing there, with emails." • "Does ChatGPT mention our brand when someone asks for the best CRM — and what does it cite?" • "What is X saying about $NVDA today, and what did the stock actually do?" • "Search the web for this, then scrape the three best pages into markdown." **How to use it** Point any MCP client at https://mcp.aisa.one/mcp and sign in with OAuth — there is no key to create or paste. Then just ask: the agent calls search to find the right operation and use to run it. **Why this rather than the source** 26 sources behind one account and one bill — DataForSEO, Semrush, Ahrefs, Similarweb, Apollo, X/Twitter, Instagram, Reddit, Pinterest, YouTube, Tavily, Exa, Perplexity, Firecrawl, CoinGecko, Kalshi, Polymarket, AgentMail and more, 580+ operations. tools/list returns five tools, not 580, so the introduction does not eat your context window. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** One slice at a time: https://mcp.aisa.one/seo/mcp · /finance/mcp · /social/mcp · /search/mcp · /sales/mcp · /mail/mcp · /gtm/mcp, or a single provider like /twitter-api/mcp. Same account, fewer tools listed, and search still reaches everything. Full list at https://mcp.aisa.one/servers
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables any Model Context Protocol-compatible host (Claude Desktop, Cherry Studio, Cline, MCP Inspector) to call 8 plug-and-play tools over stdio: hotspot ranking, TC3 signing, text chunking, date calculation, read-only SQLite queries, webpage text extraction, JWT decode/verify, and health checks.28 npmMIT

specmd-mcpofficial
AlicenseCqualityBmaintenanceEnables authoring, validating, inspecting, blackbox-inventorying, tracing, and capability-querying SPEC.md documents through MCP tools over stdio JSON-RPC. Each tool wraps the same command modules the CLI uses and returns identical JSON envelopes.9Apache 2.0- FlicenseNot gradedqualityBmaintenanceEnables MCP clients to discover and execute operational tools such as database mutations and system diagnostics over stdio, with deterministic structured outputs and Langfuse observability.-
- AlicenseNot gradedqualityBmaintenanceEnables Claude Code, Cursor, OpenCode/LunaCode, and other MCP clients to invoke the harness's shell, file, code, scheduling, and device-control tools over stdio.MIT