Skip to content

New: deep research, balance and auto-reload tools in the keyless MCP server. Install in one line

Get started with ContextFetch

No account and no email. Call the API with no key, or buy credits in one click and get your key on the next page.

Try it now, no key

25 free searches a day per IP, in the browser or from your code.

or buy credits

One-time payment. Credits never expire. Full Markdown and pruning included. Card, Apple Pay or Google Pay through Stripe Checkout.

Or add it to your agent

claude mcp add contextfetch -- npx -y @contextfetch/mcp

Already have a key? Check your balance

search.py
import requests

# No key: 25 free searches a day per IP
r = requests.post(
    "https://api.contextfetch.dev/v1/search",
    json={
        "query": "python asyncio timeout",
        "numResults": 5,
        "contents": {
            "text": True,
            "highlights": True,
            "pruned_context": True,
        },
    },
)
print(r.json()["results"][0]["title"])
Response · recorded 2026-10-17
{
  "results": [
    {
      "title": "python - The asyncio Timeout Trap: Why wait_for() Doesn't Stop Tasks Instantly and How to Fix It",
      "url": "https://runebook.dev/en/docs/python/library/asyncio-task/timeouts",
      "publishedDate": "2026-10-12",
      "score": 0.9997752506553548
    },
    {
      "title": "GitHub - aio-libs-abandoned/async-timeout: asyncio-compatible timeout class · GitHub",
      "url": "https://github.com/aio-libs-abandoned/async-timeout",
      "publishedDate": "2026-05-21",
      "score": 0.9997290774366667
    },
    {
      "title": "The async with timeout: Best Practices for Robust Python Asynchronous I/O",
      "url": "https://runebook.dev/en/docs/python/library/asyncio-task/asyncio.timeout",
      "publishedDate": "2026-10-16",
      "score": 0.9996574960130553
    }
  ],
  "costDollars": {
    "total": 0.001
  },
  "contextfetch": {
    "tokens": {
      "raw": 5322,
      "pruned": 2305
    }
  }
}