@hauntapi/mcp-server
A web extraction server that turns permitted public web pages into structured JSON or Markdown using plain-language prompts, returning explicit error signals (never fabricated data) when pages are blocked, login-required, CAPTCHA-gated, or too sparse.
Key capabilities:
Demo without an API key (
try_demo_extract): Verify the server is wired in, explore sample extraction output, and get links to docs, signup, pricing, and free-tier details.General-purpose structured data extraction (
extract_url): Describe in plain English what fields you want (e.g. product names, prices, reviews, contact details) and receive clean JSON, Markdown, or raw HTML. Works with JavaScript-heavy SPAs.Clean Markdown conversion (
extract_markdown): Convert a public page into readable Markdown optimized for RAG pipelines, agent context, or saving as a.mdfile.Article content extraction (
extract_article): Pull structured fields — title, full body text, author, and publish date — from news articles, blog posts, and editorial pages.Page metadata retrieval (
extract_metadata): Obtain title, meta description, Open Graph tags, Twitter Card tags, canonical URL, and other<head>metadata in a consistent JSON schema.Usage monitoring (
get_usage): Check your current plan, monthly credit limit, used credits, and remaining credits.
Extract canonical URL metadata from web pages as part of the metadata extraction capabilities, identifying the preferred URL for content.
Automatically bypass Cloudflare protection when extracting data from URLs, handling JavaScript rendering and Cloudflare security measures transparently.
Access the MCP server source code and documentation on GitHub, with the server hosted at the hauntapi/mcp-server repository.
Handle JavaScript-rendered content when extracting data from URLs, allowing extraction from modern web applications and dynamic websites.
Extract Open Graph metadata (Facebook/Meta tags) and other social media metadata from web pages as part of the metadata extraction capabilities.
Haunt MCP Server
Web extraction for AI agents. Give Claude, Cursor, Windsurf, or any MCP client a clean tool that turns any permitted public web page into structured JSON or Markdown from a plain-language prompt, and returns an honest machine-readable failure instead of fabricated data when a page is blocked.
Website · Docs · Get a free key · Python SDK
Built for agent workflows that need product data, competitor prices, article text, page metadata, small site-wide datasets, lead lists, or research snippets, without brittle CSS selectors. Try it with no API key using the try_demo_extract tool. Free tier: 1,000 credits a month, no card.
Quick Start
1. Add Haunt to your MCP client
This is the block to copy.
{
"mcpServers": {
"haunt": {
"command": "npx",
"args": ["-y", "@hauntapi/mcp-server"],
"env": {
"HAUNT_API_KEY": "your-api-key"
}
}
}
}Get a free API key, no card needed: https://hauntapi.com/?utm_source=github&utm_medium=readme&utm_campaign=mcp_server#signup
Prefer a CLI? npx -y --package @hauntapi/cli@latest haunt-cli init prints the
same block for Claude, Cursor, Windsurf and other MCP clients. It prints config,
it does not edit your files, and it is not itself the server.
2. Prove it is wired in, no key needed
Call try_demo_extract first. It returns a fixed sample extraction JSON and trace
plus docs, signup, pricing and free-tier links, without using credits.
Use Haunt's try_demo_extract tool and show me the signup and docs links.3. Ask for real data
Use Haunt to extract the top five story titles from https://news.ycombinator.com/For Markdown output:
Use Haunt extract_markdown to turn https://fastapi.tiangolo.com/tutorial/ into clean Markdown.Reddit, with no Reddit app and no OAuth:
Use Haunt read_reddit to get the top 10 posts from r/webscraping.Map or crawl a small site:
Use Haunt map_site on https://fastapi.tiangolo.com/ and return the first 100 URLs under /tutorial/.Use Haunt crawl_site on https://fastapi.tiangolo.com/tutorial/ for up to 10 pages. Extract each page title and main summary.Related MCP server: Crawl4AI MCP Server
Capability boundaries
Haunt renders pages in a real browser and reads many Cloudflare-protected and bot-walled pages. It does not go past login walls, paywalls, or CAPTCHA human-verification pages, and it does not promise universal extraction. Those return a typed failure signal (login_required, captcha_required, not_found, upstream_fetch_failed) instead of fabricated data, and a failed read is not charged.
Tools
try_demo_extract
No-key activation check. Returns a fixed sample extraction JSON/trace, Haunt's demo endpoint, docs, signup, pricing, MCP info route, and free-tier details. Use this first when a user has installed the MCP server but has not added HAUNT_API_KEY yet.
extract / extract_url
General-purpose extraction from permitted public web pages. extract and extract_url are aliases so hosted MCP docs and local stdio package users can follow the same wording.
Use it for:
Product names, prices, stock status, reviews
Competitor pricing pages
Directories and lead lists
Job boards
Research pages
Supported permitted public pages where you want clean JSON instead of HTML
It accepts optional response_format values: json (default), markdown / md, and raw_html / html.
extract_markdown
Return clean Markdown from a permitted public page. Use this when the agent or workflow wants readable page text for RAG, notes, docs ingestion, or saving as a .md file instead of structured fields.
extract_article
Extract article fields from news, blog, and editorial pages.
Returns title, body text, author, and publish date when available.
extract_metadata
Extract page metadata including title, description, Open Graph tags, Twitter Card tags, canonical URL, and related metadata.
map_site
Discover up to 500 public same-site URLs from robots.txt, sitemaps, and bounded link traversal. Mapping costs no credits and is available on paid plans.
crawl_site
Discover and apply one prompt and optional JSON Schema across up to 20 public same-site pages. Complete pages use normal extraction credits; partial and failed pages cost nothing. Discovery respects robots rules and fetched crawl content is not stored.
read_reddit
Read Reddit posts or a post's comment thread as structured JSON. No Reddit app, no OAuth, no developer account. Accepts a subreddit URL, a post URL, or shorthand like r/webdev. Set comments to true to read a thread.
Costs 1 credit, and a blocked read costs nothing.
company_profile
Turn a company website URL into a structured profile: what the company does, its product, and the contact and social details published on the site. Read live from the site rather than a stale third-party database.
Costs no credits.
github_repo
Return normalised metadata for a public GitHub repository: description, stars, forks, language, licence, topics, and last push.
Costs no credits.
get_usage
Check current plan, monthly credit limit, used credits, reserved credits, and remaining credits. Use this after a live extraction to see what was charged.
Why Haunt
Reddit posts and comments with no Reddit app, OAuth, or developer account
Natural-language prompts instead of fragile CSS selectors
Robots-aware site mapping and bounded multi-page extraction
Supported fetch paths for JavaScript-heavy pages
Challenge-aware extraction with machine-readable verification signals (
error_code,captcha_provider,requires_human_verification)Clean JSON output for agents, databases, and workflows
Clean Markdown output when the job is page text for agents, RAG, notes, or
.mdfilesFree tier for testing
Pricing
Plan | Credits | Price |
Free | 1,000/mo | £0 |
Starter | 10,000/mo | £19/mo |
Pro | 30,000/mo | £49/mo |
Scale | 80,000/mo | £99/mo |
Credits are not one-to-one requests. Simple public/non-LLM output usually uses 1 credit, normal structured extraction 2, browser-rendered or authenticated extraction 4, and heavy/screenshot extraction 8. Failed, blocked, login/CAPTCHA, provider, and server failures do not burn credits.
Upgrade: https://hauntapi.com/#pricing
Links
Available Tools
5 toolsextract_articleA
Extract the main article content from a news article, blog post, or editorial page. Returns a JSON object with: title (string), body (string, full article text), author (string or null), and published_date (string or null). Use this instead of extract_url when you specifically need article content, it is a focused shortcut with consistent article fields. Read-only, makes no changes to any external system. Requires HAUNT_API_KEY environment variable. Free tier: 1,000 credits/month. Returns an error if rate limit, credit quota, or API key is invalid.
Inputs: url (required).
extract_markdownA
Return clean Markdown from a permitted public web page for agents, RAG ingestion, notes, or .md files. This is a low-cost non-LLM output mode when the page can be fetched cleanly. Blocked, login-required, CAPTCHA-gated, paywalled, and too-thin pages return explicit errors instead of fabricated Markdown. Read-only, makes no changes to any external system. Requires HAUNT_API_KEY environment variable.
Inputs: url (required).
extract_metadataA
Extract page metadata from a public or authorised URL: title, meta description, Open Graph tags (og:title, og:description, og:image, og:url), Twitter Card tags, canonical URL, and any other meta information present. Returns a JSON object with all discovered meta tags grouped by type. Use this instead of extract_url when you only need metadata, it is faster and returns a consistent schema. Read-only, makes no changes to any external system. Requires HAUNT_API_KEY environment variable. Free tier: 1,000 credits/month. Returns an error if rate limit, credit quota, or API key is invalid.
Inputs: url (required).
extract_urlA
Extract structured data from permitted public web pages by providing a URL and describing what you want. Returns clean JSON with exactly the fields you asked for by default. Can also return clean Markdown or raw HTML when response_format is set. Uses supported fetch paths for JavaScript-heavy pages and returns explicit error signals when blocked. It does not solve CAPTCHA, access login/paywall-only pages, or circumvent anti-bot controls. This is the general-purpose extraction tool. Use extract_markdown for LLM/RAG-ready Markdown, extract_article for full article content, or extract_metadata for page meta tags instead, they are optimised shortcuts. Read-only, makes no changes to any external system. Requires HAUNT_API_KEY environment variable. Free tier: 1,000 credits/month. Returns an error if rate limit, credit quota, or API key is invalid.
Inputs: url (required), prompt (required), response_format.
try_demo_extractA
Try Haunt's fixed demo extraction without an API key. Use this first when the user wants to verify the MCP package or see the activation path before signup. Returns demo, docs, signup, pricing, and free-tier links. No API key required. Free tier: 1,000 credits/month.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool targets a distinct extraction purpose: article content, markdown, metadata, general extraction, and a demo without API key. Descriptions explicitly guide when to use which, eliminating ambiguity.
All tool names follow a consistent verb_noun snake_case pattern (extract_*, try_demo_extract). No mixed conventions or vague naming.
5 tools is well-scoped for a web extraction server, covering the main use cases without unnecessary redundancy.
Covers the core extraction needs with specialized shortcuts and a general-purpose tool. Minor gap: no tool for extracting specific structured elements like tables, but extract_url can handle it.
Maintenance
Related MCP Connectors
Web scraping MCP server: any URL to Markdown or JSON, with JavaScript rendering and batch jobs.
Web scraping MCP server — scrape, extract structured data, screenshot any site with anti-bot bypass.
Web scraping, browser automation, screenshots and AI data extraction for AI agents via MCP.
Web scraping for AI agents. Converts URLs to clean, LLM-ready Markdown with anti-bot bypass.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that fetches web pages and extracts clean, AI-friendly Markdown content using Mozilla Readability. It provides secure web access for LLMs with built-in SSRF protection and automated content cleaning for improved context retrieval and summarization.198 npmMIT
- FlicenseNot gradedqualityDmaintenanceA locally-hosted MCP server that provides AI assistants with advanced web crawling capabilities, including structured data extraction, deep site crawling, and page screenshots. It enables users to convert single or multiple URLs into clean Markdown content for processing by LLMs without requiring external API keys for basic features.-
- AlicenseNot gradedqualityDmaintenanceAn MCP server for intelligent web content extraction from JavaScript-heavy sites using single-file and trafilatura. It enables AI agents to fetch, render, and paginate through clean article content and metadata.23MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables AI assistants to fetch web content in multiple formats (HTML, JSON, text, Markdown) with intelligent content extraction, chunk management, and browser automation support.6152 npm15MIT