Search API

Search the web from your application

SearchPipe is a web search API and MCP server for developers building AI agents. Retrieve relevant pages, request a cited answer, and inspect supporting evidence.

One query, results your code can use

Call POST /v1/search with a question or keywords. The response includes source URLs, titles, snippets, and scores. Basic and advanced searches use LLM ranking; fast returns fused engine results without LLM processing.

For known URLs, use Extract. For claims and citations from your own pipeline, use Verify or batch verification.

Choose the processing you need

DepthCostProcessing
fast0.5 creditsRetrieval, rule fusion, and page fetching. No generated answer or audit; raw engine scores are not normalized.
basic1 creditLLM-ranked results and an optional cited answer.
advanced2 creditsLLM-ranked results and an optional cited answer with a statement-level audit when available.

Use output_type="search_results" (default), "answer", or "structured". Fast skips answer generation. Basic and advanced can stream answer text over SSE. Structured output uses a flat schema; validate the generated object in your application.

Make a search request

Verify your email and copy your key from API Keys. Authenticate with Authorization: Bearer sp-YOUR_KEY or X-API-Key: sp-YOUR_KEY. This example requests a basic cited answer.

curl -X POST https://searchpipe.tech/v1/search \
  -H "Authorization: Bearer sp-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"FastAPI tutorial","max_results":5,"output_type":"answer"}'
import httpx

resp = httpx.post(
    "https://searchpipe.tech/v1/search",
    headers={"Authorization": "Bearer sp-YOUR_KEY"},
    json={"query": "FastAPI tutorial", "max_results": 5, "output_type": "answer"},
    timeout=60,
)
resp.raise_for_status()
data = resp.json()
print(data["answer"])
for r in data["results"]:
    print(r["score"], r["title"], r["url"])
const resp = await fetch("https://searchpipe.tech/v1/search", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sp-YOUR_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ query: "FastAPI tutorial", max_results: 5, output_type: "answer" }),
});
if (!resp.ok) throw new Error(`Search failed (${resp.status}): ${await resp.text()}`);
const data = await resp.json();
console.log(data.answer);
for (const r of data.results) console.log(r.score, r.title, r.url);
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"time"
)

func main() {
	payload, _ := json.Marshal(map[string]any{
		"query":          "FastAPI tutorial",
		"max_results":    5,
		"output_type": "answer",
	})
	req, _ := http.NewRequest("POST", "https://searchpipe.tech/v1/search", bytes.NewReader(payload))
	req.Header.Set("Authorization", "Bearer sp-YOUR_KEY")
	req.Header.Set("Content-Type", "application/json")
	client := &http.Client{Timeout: 60 * time.Second}
	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.*;
import java.time.Duration;

public class SearchPipeDemo {
    public static void main(String[] args) throws Exception {
        String json = """
            {"query":"FastAPI tutorial","max_results":5,"output_type":"answer"}
            """;
        HttpClient client = HttpClient.newBuilder()
            .version(HttpClient.Version.HTTP_1_1)
            .connectTimeout(Duration.ofSeconds(10))
            .build();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://searchpipe.tech/v1/search"))
            .timeout(Duration.ofSeconds(60))
            .header("Authorization", "Bearer sp-YOUR_KEY")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();
        HttpResponse<String> resp =
            client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(resp.body());
    }
}
using System.Net.Http.Json;

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "sp-YOUR_KEY");

var payload = new
{
    query = "FastAPI tutorial",
    max_results = 5,
    output_type = "answer",
};

HttpResponseMessage resp = await client.PostAsJsonAsync("https://searchpipe.tech/v1/search", payload);
resp.EnsureSuccessStatusCode();
Console.WriteLine(await resp.Content.ReadAsStringAsync());

MCP clients can connect to the same search pipeline →

Search API parameters

Only query is required. Control max_results (default 5, range 1–20), search_depth, and output_type; add domain/date filters, market preferences, raw content, images, or an agent ranking objective as needed.

See all 19 search parameters and defaults →

Results, answers, and evidence

Read the result list from results, generated text from answer, or a structured object from output. Optional fields may be null. results[].evidence carries quote spans and fetch metadata when available; advanced answer mode may include answer_audit. Structured mode does not include an answer audit.

REST responses include request_id, response_time, usage, and diagnostic warnings/notices. Inspect these fields before using a response. Response field reference →

Use search in your workflow

  • Supply current source material to an agent or RAG pipeline.
  • Find pages across selected domains and date ranges.
  • Generate cited answers and inspect statement-level audit coverage.
  • Retrieve a JSON object using your own flat output schema.

Search API pricing

Search costs 0.5 / 1 / 2 credits for fast / basic / advanced. Cached calls are charged at the same per-call rate. Pipeline failures and rejected output are refunded; successful empty results or unavailable optional answers can still be billed.

PlanPriceCredits
Free$01,000 per UTC calendar month; sign in to renew the monthly allowance.
Starter$10/mo2,500 credits / month
Pro$20/mo5,000 credits / month
Max$35/mo10,000 credits / month
Prepaid recharge$4010,000 credits · $0.0040/credit · never expires
Prepaid recharge$8020,000 credits · $0.0040/credit · never expires

Custom recharges use the standard $0.005/credit rate. See complete pricing and expiration rules →

Search API FAQ

Is SearchPipe a replacement for Google Search API?

SearchPipe is a web search API designed for developers building AI agents who need structured, scored, cleaned results — not raw search-result HTML. It goes beyond traditional search APIs by adding full-text extraction, LLM reranking and optional cited answers.

How is SearchPipe different from Tavily?

Same developer-experience style (API key, one endpoint, structured JSON), but SearchPipe adds per-call credit pricing with automatic refunds and a remote MCP Server option for zero-code agent integration.

Can I use the search API without MCP?

Yes — and it is not a second-class option. The REST API (POST /search) is fully independent, callable from any language, framework or backend service. MCP and the REST API are equal first-class paths to the same pipeline.

What happens when a search fails?

Nothing. Upstream retrieval failures (502) and output content violations (400) are automatically refunded (idempotently). Only successful requests are billed.

Is there a rate limit?

Default: 100 requests per minute with a burst of 20, enforced by a Redis sliding window. Over-limit requests return 429 with a Retry-After header. Contact us to raise the quota for high-volume use.

More APIs and guides