Haunt
hauntapi.com
· Haunt
Web extraction for AI agents. Send a URL and a plain-English prompt, get clean structured JSON or Markdown from permitted public pages. When a page cannot be read it returns a typed reason instead of invented data, and the failed call is not charged.
hauntapi.com via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
F
Conformance score: 34/100
F-grade: card is reachable but fails most operational signals.
click to expand breakdown ▾
click to collapse breakdown ▴
agent-card.json changed within the last 7 days. We track these so downstream callers can react.
Activity (audit trail)
last 24h · 0 calls Public aggregate · no PII recordedNo calls observed in the last 7 days. Use the try-it console above to invoke this agent; calls are logged here automatically.
Card history
1 snapshot Every change toagent-card.json
| Captured | Hash | |
|---|---|---|
| 2026-07-25 06:47:37 current | 2b0b5057a39a… |
view → |
Endpoints
| Agent card | https://hauntapi.com/.well-known/agent-card.json |
| Provider | https://hauntapi.com/?utm_source=agent-card&utm_medium=discovery&utm_campaign=sweep-2026-07 |
| Docs | https://hauntapi.com/docs |
Skills · 2 declared · mapped to canonical taxonomy
POST /v1/extract with a url and a prompt. Returns JSON matching your prompt, or a typed failure. Blocked pages cost nothing.
GET /r/<url> returns clean Markdown. Rate limited, never paywalled.
Health · last 1 probes
Cheaper or better alternatives per-skill
For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/hauntapi.com) [](https://agenstry.com/agents/hauntapi.com) [](https://agenstry.com/agents/hauntapi.com) [](https://agenstry.com/agents/hauntapi.com)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"protocolVersion": "0.2.1",
"name": "Haunt",
"description": "Web extraction for AI agents. Send a URL and a plain-English prompt, get clean structured JSON or Markdown from permitted public pages. When a page cannot be read it returns a typed reason instead of invented data, and the failed call is not charged.",
"url": "https://hauntapi.com",
"documentationUrl": "https://hauntapi.com/docs",
"preferredTransport": "JSONRPC",
"provider": {
"organization": "Haunt",
"url": "https://hauntapi.com/?utm_source=agent-card&utm_medium=discovery&utm_campaign=sweep-2026-07"
},
"capabilities": {
"streaming": false,
"pushNotifications": false
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"application/json",
"text/markdown"
],
"securitySchemes": {
"apiKey": {
"type": "http",
"scheme": "bearer",
"description": "Authorization: Bearer <HAUNT_API_KEY>. Free key, no card."
}
},
"skills": [
{
"id": "extract",
"name": "Extract structured data from a web page",
"description": "POST /v1/extract with a url and a prompt. Returns JSON matching your prompt, or a typed failure. Blocked pages cost nothing.",
"tags": [
"web scraping",
"extraction",
"crawl",
"structured data"
],
"examples": [
"Extract the product name, price and stock status from this page",
"Return the article text as Markdown"
]
},
{
"id": "read",
"name": "Read a page as Markdown, no key needed",
"description": "GET /r/<url> returns clean Markdown. Rate limited, never paywalled.",
"tags": [
"reader",
"markdown"
]
}
],
"additionalInterfaces": [
{
"transport": "JSONRPC",
"url": "https://hauntapi.com/mcp/server"
},
{
"transport": "HTTP+JSON",
"url": "https://hauntapi.com/v1/extract"
}
],
"honestFailure": {
"description": "Failures are typed and unbilled, so an agent can branch on the reason rather than act on fabricated data.",
"errorCodes": [
"blocked",
"not_found",
"login_required",
"captcha_required",
"access_denied"
]
}
}