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
| Tier | Who | Credits / month |
|---|---|---|
| Free | Any Google account | 500 |
| Team | @opactor.com, @anymorph.ai | Unlimited |
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.
429 with Retry-After.Search
GET /search?query=…&max_results=5 — ranked web results.
| Param | Type | Notes |
|---|---|---|
query | string | required |
max_results | int | default 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}'
| Field | Notes |
|---|---|
urls | string[] — 1–10 public HTTP(S) URLs; or use singular url. 1 credit per successful URL |
format | markdown | html | json |
links, image_links | boolean — include extracted links / images |
ttl | seconds; 0 forces a live fetch |
include_selectors, exclude_selectors | CSS selectors to keep / drop |
per_url_timeout_ms | per-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:
| Platform | Actions |
|---|---|
| youtube | search, recent, trending, video, comments, channel, channel_videos, transcript |
| search, feed, user_posts, post, comments | |
| coupang | search, product, reviews, page |
| amazon | search, product, reviews, page |
| naver | serp, ai_mode, ai_brief, keyword_volume, page |
| tiktok | trending, video, comments |
| google_trends | trending_now, interest, geo, related_queries, related_topics |
| search, posts, profile, post, comments | |
| threads | search, profile, post, replies |
| sephora | search, product, reviews |
| ulta | search, product, reviews |
| walmart | search, product, reviews |
| app_store | search, app, reviews |
| google_play | search, 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":"…"}}.
| Status | Code | Meaning |
|---|---|---|
| 400 | INVALID_INPUT / INVALID_JSON | Bad input |
| 401 | UNAUTHORIZED | Missing or revoked key |
| 402 | QUOTA_EXCEEDED | Free-tier credits spent this month |
| 429 | RATE_LIMIT_EXCEEDED | Pool saturated; honor Retry-After |
| 502 | UPSTREAM_ERROR / INVALID_MODEL_OUTPUT | Upstream failure; inspect the structured error before retrying |