Skip to content

New Official SDKs for TypeScript, Python and Go

SerpKite
Get API key

Migration guide

Migrate from Tavily

Tavily returns results from its own index, cleaned for LLMs. SerpKite returns what Google shows, as LLM-ready Markdown, with page content on request. For most agent tools the swap is a single function.

Why switch

Why teams move from Tavily to SerpKite

01

Real Google results

Your agent sees the same ranking, answer box and People Also Ask that a person sees on google.com.

02

A fraction of the price

$0.80 vs $7.50 per 1k at entry and $0.60 vs $5.00 around 100k a month. Credits never expire.

03

LLM-ready without a second model

format=markdown and fields= cut tokens; include_content=N fetches the top N pages as Markdown in the same call.

04

Your queries stay yours

Query text is never logged. We don't use queries for training or share them.

The change

Before and after

agent_search.py (Tavily) −9 lines
import os
from tavily import TavilyClient

client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])
res = client.search(
    "latest EU AI Act guidance for startups",
    max_results=5,
    topic="general",
    include_raw_content=True,
)
context = "\n\n".join(r["raw_content"] or r["content"] for r in res["results"])
agent_search.py (SerpKite) +6 lines
from serpkite import SerpKite  # pip install serpkite

sk = SerpKite(timeout=60)  # reads SERPKITE_API_KEY
context = sk.search(
    "latest EU AI Act guidance for startups",
    format="markdown",
    include_content=3,
)  # str: results and top-3 pages as Markdown

With format=markdown the response body is ready to paste into a prompt. include_content=3 adds the top three pages as Markdown for +1 credit each.

Reference

Parameter and field mapping

Request parameters

Request parameter mapping
Tavily SerpKite Notes
api_key / Authorization: Bearer tvly-… Authorization: Bearer skt_live_… The SDKs read SERPKITE_API_KEY.
query q
max_results num 10 per page is 1 credit. Trim client-side or with fields.
topic="news" POST /v1/news
time_range=day|week|month|year time=day|week|month|year
include_domains=[…] site:a.com OR site:b.com in q
exclude_domains=[…] -site:a.com in q
include_raw_content=True include_content=1…5 +1 credit per fetched page.
include_answer=True answer_box (in the response) Google's own answer box or featured snippet, when Google shows one. We don't generate answers.
country country Two-letter code (us, de…).
search_depth (none) Every call is a live Google results page.

Response fields

Response field mapping
Tavily SerpKite Notes
results[].title results[].title
results[].url results[].link Plus a canonical domain.
results[].content results[].snippet Google's snippet, not an extracted chunk.
results[].raw_content results[].content Page Markdown when include_content covered this result.
results[].score results[].position Google's rank instead of a relevance score.
answer answer_box.answer Or answer_box.snippet, with its link.
images POST /v1/images

Live example

Google Search: request and response

curl https://api.serpkite.com/v1/search \
  -H "Authorization: Bearer $SERPKITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q":"best espresso machine 2026","country":"us","language":"en"}'

1 credit per call. Failed and empty results are free. Run it in the playground

200 OK (abridged)
{
  "request": {
    "endpoint": "search",
    "engine": "google",
    "q": "best espresso machine 2026",
    "country": "us",
    "language": "en",
    "num": 10,
    "page": 1,
    "device": "desktop",
    "autocorrect": true
  },
  "results": [
    {
      "position": 1,
      "title": "The Best Espresso Machines of 2026, Tested and Reviewed",
      "link": "https://www.example.com/best-espresso-machines",
      "domain": "example.com",
      "displayed_link": "https://www.example.com › best-espresso-machines",
      "snippet": "We pulled more than 1,200 shots on 42 machines to find the best espresso makers for every budget, from beginner-friendly to prosumer.",
      "date": "Sep 12, 2026",
      "sitelinks": [
        {
          "title": "Best budget pick",
          "link": "https://www.example.com/best-espresso-machines#budget"
        },
        {
          "title": "Best dual boiler",
          "link": "https://www.example.com/best-espresso-machines#dual-boiler"
        }
      ]
    },
    {
      "position": 2,
      "title": "Espresso Machine Buying Guide (2026)",
      "link": "https://coffee.example.org/guides/espresso",
      "domain": "coffee.example.org",
      "displayed_link": "https://coffee.example.org › guides › espresso",
      "snippet": "Single boiler, heat exchanger or dual boiler? What the specs mean and which features are worth paying for."
    },
    {
      "position": 3,
      "title": "r/espresso: What machine would you buy in 2026?",
      "link": "https://www.reddit.com/r/espresso/comments/abc123/",
      "domain": "reddit.com",
      "displayed_link": "https://www.reddit.com › r › espresso",
      "snippet": "Discussion thread with 480 comments comparing entry-level and prosumer machines."
    }
  ],
  "people_also_ask": [
    {
      "question": "What is the #1 rated espresso machine?",
      "snippet": "Reviewers most often rank dual-boiler machines with PID control at the top…",
      "link": "https://www.example.com/best-espresso-machines"
    },
    {
      "question": "Is a $500 espresso machine worth it?",
      "snippet": "For daily drinkers, a mid-range machine usually pays for itself within a year…",
      "link": "https://coffee.example.org/guides/espresso"
    }
  ],
  "related_searches": [
    {
      "query": "best espresso machine under $500"
    },
    {
      "query": "best espresso machine for beginners"
    },
    {
      "query": "dual boiler vs heat exchanger"
    }
  ],
  "meta": {
    "request_id": "req_01J8ZK4M6Q2V7",
    "credits_used": 1,
    "cached": false,
    "engine": "google",
    "latency_ms": 942,
    "parse_quality": "ok",
    "resolved_urls": true
  }
}

Watch out

Gotchas

  • No score. Use position. If your code filters on a score threshold, filter on position (e.g. top 5) instead.
  • answer_box is often missing. Google doesn't show an answer box for every query. If your agent relied on answer, fall back to the top snippets.
  • Snippets are short. Google snippets are one or two sentences. For grounding, use include_content or the Webpage to Markdown API.
  • Latency. include_content fetches pages, so budget a few extra seconds and raise your HTTP timeout.
  • Called Tavily through a framework tool? Use langchain-serpkite (SerpKiteSearch, SerpKiteRetriever), serpkite[crewai] (SerpKiteSearchTool) or our MCP server. See LangChain and LangGraph.

Checklist

Step by step

  1. 1 Create a free account and copy your skt_live_… key.
  2. 2 Replace the Tavily client with the SerpKite SDK (pip install serpkite or npm install serpkite), a POST /v1/search, or our framework tool.
  3. 3 Map query → q, topic=news → /v1/news, time_range → time, domain filters → site: operators.
  4. 4 Choose an output: format=markdown for prompts, compact or fields for structured tools.
  5. 5 Replace include_raw_content with include_content=N where you need full pages.
  6. 6 Compare answers on 20–50 real agent tasks, then switch.

Pricing

SerpKite vs Tavily: price

Price comparison with Tavily
SerpKite Tavily
Free tier 2,500 on signup + 1,000/mo, no card 1k/mo
Entry, ~$50 pack $ per 1k searches $0.80 $7.50
~100k searches / month $ per 1k $0.60 $5.00
~1M searches / month $ per 1k $0.60 enterprise
Best public list price $ per 1k $0.60
Credit expiry Never Monthly

Tavily lists $7.50 per 1k at entry and $5.00 around 100k a month, with monthly credits. Volume pricing is enterprise-only. SerpKite packs: $1.00 per 1k on the $10 pack down to $0.60 on the largest self-serve pack; larger volumes on request, enterprise from $0.18. Competitor list prices verified on vendor pages on 2026-09-28. See pricing.

FAQ

Migrating from Tavily

Start building

Leave Tavily today

2,500 free credits, then 1,000 every month. No credit card.