Quickstart

Sign in at /dashboard to get a key, then:

# Search
curl "https://anysearch.site/search?query=web+automation&max_results=5" \
  -H "X-API-Key: $ANYSEARCH_API_KEY"

# Scrape → markdown
curl -X POST https://anysearch.site/fetch \
  -H "X-API-Key: $ANYSEARCH_API_KEY" -H "Content-Type: application/json" \
  -d '{"urls":["https://anymorph.ai"],"links":true}'

Authentication

Research APIs require a key; public pages, health, OpenAPI and OAuth entrypoints do not, sent as either header:

X-API-Key: as-…
Authorization: Bearer as-…

Keys are shown once when created and stored hashed (up to 10 per account). Revocation is immediate. Dashboard management requires a Google session, not an execution key.

Credits & limits

TierWhoCredits / month
FreeAny Google account500
Team@opactor.com, @anymorph.aiUnlimited

1 credit = 1 search query, 1 scraped URL, or 1 social call. An agent run costs 10. Quota resets on the 1st (UTC). When exhausted, calls return 402 QUOTA_EXCEEDED.

Rate limiting is pooled, not per-key: if the upstream ring is saturated the request waits for a slot (up to ~15 s) and only then returns 429 with Retry-After.

GET /search?query=…&max_results=5 — ranked web results.

ParamTypeNotes
querystringrequired
max_resultsintdefault 5, max 20

Batch search

POST /search/batch — up to 10 queries, one round trip. Each query costs 1 credit.

curl -X POST https://anysearch.site/search/batch \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"queries":["hono cloudflare","durable objects"],"max_results":3}'

Scrape

POST /fetch — one or more URLs → markdown (default), HTML or JSON.

curl -X POST https://anysearch.site/fetch \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"urls":["https://anymorph.ai"],"format":"markdown","links":true,"image_links":true}'
FieldNotes
urlsstring[] — 1–10 public HTTP(S) URLs; or use singular url. 1 credit per successful URL
formatmarkdown | html | json
links, image_linksboolean — include extracted links / images
ttlseconds; 0 forces a live fetch
include_selectors, exclude_selectorsCSS selectors to keep / drop
per_url_timeout_msper-URL timeout

Agent

POST /agent {"prompt": "…", "reasoning_effort": "medium"} — a research loop with search, scrape and social tools. Expect 10–60 s (minutes on high). Costs 10 credits on success. Overall deadline: 4 minutes; failed requests are refunded.

Returns {"answer", "steps": [{"tool", "args", "result"}], "sources": {"url": "text"}} — the full tool trace plus every scraped page's text, so you can verify citations against the original.

curl -X POST https://anysearch.site/agent \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"prompt":"Which headless browser APIs launched in 2026? Cite sources."}'

Social & commerce

Available through the MCP social tool (and to the agent). Pick a platform and an action:

PlatformActions
youtubesearch, recent, trending, video, comments, channel, channel_videos, transcript
redditsearch, feed, user_posts, post, comments
coupangsearch, product, reviews, page
amazonsearch, product, reviews, page
naverserp, ai_mode, ai_brief, keyword_volume, page
tiktoktrending, video, comments
google_trendstrending_now, interest, geo, related_queries, related_topics
instagramsearch, posts, profile, post, comments
threadssearch, profile, post, replies
sephorasearch, product, reviews
ultasearch, product, reviews
walmartsearch, product, reviews
app_storesearch, app, reviews
google_playsearch, app, reviews

Unknown combinations return an error listing the valid actions for that platform.

MCP

Streamable HTTP, stateless, at https://anysearch.site/mcp. Tools: search, scrape, agent, social.

# Claude Code
claude mcp add anysearch --transport http https://anysearch.site/mcp \
  --header "Authorization: Bearer $ANYSEARCH_API_KEY"

# Codex (~/.codex/config.toml)
[mcp_servers.anysearch]
url = "https://anysearch.site/mcp"
bearer_token_env_var = "ANYSEARCH_API_KEY"

Errors

Errors are JSON: {"error":{"code":"…","message":"…"}}.

StatusCodeMeaning
400INVALID_INPUT / INVALID_JSONBad input
401UNAUTHORIZEDMissing or revoked key
402QUOTA_EXCEEDEDFree-tier credits spent this month
429RATE_LIMIT_EXCEEDEDPool saturated; honor Retry-After
502UPSTREAM_ERROR / INVALID_MODEL_OUTPUTUpstream failure; inspect the structured error before retrying