Choose search providers for your workflow
Choose Google-only search, automatic fallback, a provider list or consensus. Keep rank measurements consistent and inspect provider provenance when gathering research.
Choose a provider policy before you build retries, caching or comparisons around search results. Google is the default; other enabled providers can answer supported verticals when you opt in. The full provider reference lists coverage and the meaning of each response field.
| Workflow | Policy | Why |
|---|---|---|
| Google rank tracking or SERP audits | engine: "google" |
Results and positions stay tied to Google’s index |
| Agent research where fallback is acceptable | engine: "auto" |
Another enabled engine can answer if Google fails |
| Restrict research to selected engines | engine: ["google", "brave"] |
Only the selected providers can answer, in the service’s route order |
| Research across independent indexes | engine: "consensus" |
Merge results with per-result source labels |
An explicit policy overrides the key’s Allow fallback to other search engines setting. Set engine: "google" explicitly in applications whose output must remain Google-specific.
Use fallback and keep the provider label
from serpkite import SerpKite
sk = SerpKite()
response = sk.search(
"asyncio task group cancellation",
engine="auto",
country="us",
include_domains=["docs.python.org"],
)
print("Answered by:", response.meta.engine)
for result in response.results:
print(result.title, result.link)
Keep meta.engine with your stored search results. A Brave result has Brave’s ranking and snippets, and may lack Google-specific extras. meta.route describes provider attempts on fresh requests; cache hits omit it. A failed attempt along the fallback route costs nothing; the response is settled for the provider that answered.
Use JSON when your application needs provider provenance. Markdown responses are text and do not contain a JSON meta object. If you project with fields, retain the metadata you inspect:
import { SerpKite } from "serpkite";
const sk = new SerpKite();
const response = await sk.search({
q: "asyncio task group cancellation",
engine: ["google", "brave"],
fields: "results.title,results.link,meta.engine,meta.credits_used",
});
console.log(response);
Provider availability depends on the endpoint and deployment. A provider that serves web search may not serve news or images. An unavailable or unsupported explicit policy returns 400 invalid_request; repeating it will not enable that provider. Check the coverage table.
Merge independent indexes with consensus
curl https://api.serpkite.com/v1/search \
-H "Authorization: Bearer $SERPKITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q":"asyncio task group cancellation","engine":"consensus","num":10}'
Consensus is available on web search only. It queries up to three independent indexes, deduplicates URLs and ranks by agreement. Each result’s sources lists the providers that returned it; meta.engine is consensus. The merged position is a consensus rank, so it does not measure a Google ranking.
Budget for each provider that returns nonempty results: three successful single-page sources can cost 3 credits. Failed, blocked or empty providers are free. Cache hits cost half, and consensus results use a separate cache from single-provider requests.
include_domains, exclude_domains and boost_domains cannot be combined with consensus. For restricted-source research, use a single provider or auto with domain filters instead. An unsupported combination returns 400.
Apply the policy consistently
- Rank tracking: use Google explicitly for
/v1/rankand any batch searches you compare over time. Keep country, language, location and device fixed too. - Batches: put
engineinside each request in therequestsarray, alongside its query. Preserve the returned provider with each job result. - Monitors: search and news monitors can save
engine; webpage monitors cannot. Changing a saved monitor search resets its baseline. - Caching: set
max_ageonly when older results suit the workflow. Google-only requests do not receive cached fallback or consensus results. - MCP: tool schemas determine which options a client can pass. A dedicated key’s fallback setting can opt search tools into
autowhen they omitengine.
Related
- Search providers: coverage, route outcomes and consensus billing.
- Rank tracking: Google position measurements at scale.
- RAG pipeline: fetch query-relevant passages for answers.
- Scheduled monitoring: persist a query and its policy.
Last updated: 2026-10-04