SearchAPI Documentation

Multi-source research engine for AI applications. 94.3% accuracy on SimpleQA benchmark.

Authentication

All API requests require an API key passed in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Get a free API key at search.ourweb.ink. Free tier includes 100 queries/day.

Quickstart

Ask a factual question and get an answer with sources:

curl
JavaScript
Python
curl "https://search.ourweb.ink/api/ask?q=Who+won+the+Turing+Award+in+2018" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch(`https://search.ourweb.ink/api/ask?q=${encodeURIComponent(question)}`, {
  headers: { 'Authorization': `Bearer ${API_KEY}` }
});
const data = await res.json();
console.log(data.answer);  // "Yoshua Bengio, Geoffrey Hinton, and Yann LeCun"
import requests

resp = requests.get(
    "https://search.ourweb.ink/api/ask",
    params={"q": "Who won the Turing Award in 2018?"},
    headers={"Authorization": f"Bearer {API_KEY}"}
)
data = resp.json()
print(data["answer"])  # Yoshua Bengio, Geoffrey Hinton, and Yann LeCun

GET /api/ask

The primary endpoint. Runs the full multi-phase research loop and returns an extracted answer with sources.

GET https://search.ourweb.ink/api/ask

Parameters

NameTypeDescription
q requiredstringThe question to answer

Response Fields

answerThe extracted answer (string or null if not found)
sourceWhich source provided the answer: snippets, page:URL, wikipedia:Title, rephrase:URL, crossref, fandom:domain
sourcesArray of {title, url} for top search results
pageExcerptsArray of {title, text, url} — relevant paragraphs from fetched pages
snippetContextRaw search snippets as "[Title] text" lines
phasesArray of {phase, source, answer} — each extraction attempt
latency_msTotal response time in milliseconds
// Example response
{
  "answer": "Yoshua Bengio, Geoffrey Hinton, and Yann LeCun",
  "source": "snippets",
  "latency_ms": 3200,
  "sources": [
    { "title": "Turing Award - Wikipedia", "url": "https://en.wikipedia.org/..." },
    { "title": "ACM Turing Award", "url": "https://amturing.acm.org/..." }
  ],
  "pageExcerpts": [
    {
      "title": "Turing Award",
      "text": "2018 Yoshua Bengio \"For conceptual and engineering breakthroughs...\",
      "url": "https://en.wikipedia.org/wiki/Turing_Award"
    }
  ],
  "phases": [
    { "phase": 1, "source": "Google+Bing snippets", "answer": "Yoshua Bengio..." }
  ]
}

General web search via SearXNG + Wikipedia deep parser + Google context. Returns web results, not extracted answers.

GET https://search.ourweb.ink/api/search

Parameters

NameTypeDescription
q requiredstringSearch query
max_resultsnumberMax results to return (default: 10)
formatstringjson or text

GET /api/extract

Extract content from any URL. Returns clean text stripped of HTML, scripts, and navigation.

GET https://search.ourweb.ink/api/extract

Parameters

NameTypeDescription
url requiredstringURL to extract content from
formatstringtext or json

GET /api/research

Academic paper search. Searches arXiv, Semantic Scholar, and OpenAlex. Returns enriched paper metadata.

GET https://search.ourweb.ink/api/research

Parameters

NameTypeDescription
q requiredstringResearch query or paper title
max_papersnumberMax papers to return (default: 5)

Response Format

All endpoints return JSON. Successful responses have HTTP status 200. Errors return 4xx/5xx with an error field.

Research Phases

The /api/ask endpoint runs up to 5 phases, stopping as soon as an answer is found:

  1. Phase 1 — Snippets: Searches Google + Bing via Serpex. Extracts answer from search result snippets. Handles ~80% of questions.
  2. Phase 2 — Page Fetch: Fetches top 4 result pages (Wikipedia first). Reads full page text and extracts answer. Adds ~8%.
  3. Phase 2.5 — Wikipedia Direct: Searches Wikipedia's own API directly (bypasses Google). Catches articles Google misses.
  4. Phase 3 — Rephrase: LLM rephrases the question as a search query. Searches again with the new query. Adds ~2%.
  5. Phase 4 — Specialized: CrossRef for academic papers (DOI lookup by title). Fandom/wiki.gg for game and media data. Adds ~3%.
Each phase only runs if the previous phases returned NOT_FOUND. Most questions are answered in Phase 1 (~3-4 seconds).

Errors

StatusErrorDescription
400Missing queryThe q parameter is required
401UnauthorizedMissing or invalid API key
429Rate limitedToo many requests — wait and retry
500Internal errorResearch loop failed — try again

Rate Limits

TierLimit/api/ask/api/search
Free100/dayYesYes
Pro10,000/dayYesYes
EnterpriseUnlimitedYesYes

Best Practices

The LLM extraction uses a free model (Trinity on OpenRouter). During peak hours, extraction may be slower. The search results are always available even if extraction fails.