Migration guide
Migrate from SerpApi
If you use SerpApi for Google, SerpKite covers the same core engines at a fraction of the list price. Each engine becomes its own /v1 endpoint, the key moves to a Bearer header, and the response stays snake_case with the main list under results. Here is the full mapping.
Why switch
Why teams move from SerpApi to SerpKite
Far lower list price
$0.80 vs $15–25 per 1k at entry, $0.60 vs $7.25 around 100k a month. SerpKite credits also never expire.
LLM-ready output
format=markdown and compact return what an agent needs in far fewer tokens than raw JSON, and fields= projects only the keys you read.
Batch lane at half price
POST /v1/batches queues up to 100 queries per call at half price, with signed webhooks. Built for rank trackers.
Honest about the gaps
SerpApi has 100+ engines, SOC 2 and a legal shield. SerpKite is Google-only today. If you need Amazon, YouTube or Baidu, stay, or split traffic.
The change
Before and after
import os, requests
res = requests.get(
"https://serpapi.com/search.json",
params={
"engine": "google",
"q": "best espresso machine 2026",
"gl": "us",
"hl": "en",
"start": 10,
"api_key": os.environ["SERPAPI_KEY"],
},
timeout=30,
)
data = res.json()
for r in data["organic_results"]:
print(r["position"], r["title"], r["link"])
print(data.get("knowledge_graph"))from serpkite import SerpKite # pip install serpkite
sk = SerpKite() # reads SERPKITE_API_KEY
res = sk.search("best espresso machine 2026", country="us", language="en", page=2)
for r in res.results:
print(r.position, r.title, r.link)
print(res.knowledge_graph)engine becomes an SDK method or /v1 endpoint path, gl/hl become country/language, start becomes page, the key moves to Authorization: Bearer, and organic_results becomes results. Most other keys (knowledge_graph, answer_box, related_searches, top_stories) keep their snake_case names.
Reference
Parameter and field mapping
Endpoints
| SerpApi | SerpKite | Notes |
|---|---|---|
engine=google |
POST /v1/search |
sk.search(…) |
engine=google_news |
POST /v1/news |
|
engine=google_images · google_videos |
POST /v1/images · /v1/videos |
|
engine=google_maps · google_local |
POST /v1/maps · /v1/places |
|
engine=google_maps_reviews |
POST /v1/reviews |
|
engine=google_shopping |
POST /v1/shopping |
|
engine=google_scholar · google_patents |
POST /v1/scholar · /v1/patents |
|
engine=google_autocomplete |
POST /v1/autocomplete |
0.5 credits. |
engine=google_lens |
POST /v1/lens |
2 credits. |
engine=google_ai_mode |
Not supported | |
bing, baidu, yandex, amazon, youtube… |
Not supported | Bing, DuckDuckGo, Brave, Yandex planned for Q1 2027. |
Request parameters
| SerpApi | SerpKite | Notes |
|---|---|---|
api_key |
Authorization: Bearer skt_live_… |
?api_key= also works on GET. The SDKs read SERPKITE_API_KEY. |
q, location, uule |
q, location, uule |
|
gl, hl |
country, language |
Same values (us, en…). |
start |
page |
page = start / 10 + 1. |
num |
num |
num=100 = top 100 for 7 credits. |
tbs, safe, device |
tbs, safe, device |
|
async=true |
POST /v1/batches |
Half price. Poll GET /v1/batches/{id} (sk.batches.wait(id)) or get a signed webhook. |
no_cache=true |
(default) | Realtime by default. Opt in to cache with max_age (50% of credits on a hit). |
output=md |
format=markdown |
Also format=compact and fields=. |
Response fields
| SerpApi | SerpKite | Notes |
|---|---|---|
organic_results |
results |
|
ai_overview |
(not returned) | SerpKite doesn't parse AI Overviews. |
knowledge_graph |
knowledge_graph |
|
answer_box |
answer_box |
|
related_questions |
people_also_ask |
|
related_searches |
related_searches |
|
top_stories |
top_stories |
|
local_results |
places |
|
search_metadata |
meta + X-Request-Id header |
|
search_parameters |
request |
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
{
"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
- A few renamed keys.
organic_results→results,related_questions→people_also_ask,local_results→places,search_parameters→request. A small adapter lets the rest of your code stay untouched while you migrate. - Fewer fields on exotic SERP features. SerpApi parses a very long tail of Google widgets. SerpKite covers the ones that matter for agents and SEO: organic, PAA, knowledge graph, answer box, top stories, local pack, related searches, sitelinks, ads (opt-in). Check the Google Search API schema for anything niche.
- No search archive. SerpApi stores searches and lets you fetch them by ID. SerpKite never logs queries and only caches results for a few hours; store what you need on your side.
- Throughput is per second (20–100 requests/second by pack) rather than per hour.
- Legal and compliance. SerpApi offers SOC 2 and a $2M legal shield. SerpKite has neither yet (SOC 2 is planned); read how we collect data.
Checklist
Step by step
-
1
Create a free account and copy your
skt_live_…key. -
2
Map each
engine=value to a SerpKite endpoint path (table above). -
3
Install an SDK (
pip install serpkite,npm install serpkite, or the Go module) or sendAuthorization: Beareron raw HTTP calls. Convertgl/hltocountry/languageandstarttopage. -
4
Add an adapter for the few renamed keys (
organic_results→results), or update your parsers. -
5
Replace
async=truepolling withPOST /v1/batches+webhook_urlfor bulk jobs. - 6 Run both APIs side by side on a sample of queries and diff the top 10 links.
- 7 Set spend caps and alerts in the dashboard, then cut traffic over.
Pricing
SerpKite vs SerpApi: price
| SerpKite | SerpApi | |
|---|---|---|
| Free tier | 2,500 on signup + 1,000/mo, no card | 250/mo |
| Entry, ~$50 pack $ per 1k searches | $0.80 | $15–25 |
| ~100k searches / month $ per 1k | $0.60 | $7.25 |
| ~1M searches / month $ per 1k | $0.60 | $3.75 |
| Best public list price $ per 1k | $0.60 | $1.96 |
| Credit expiry | Never | Monthly reset |
SerpApi plans reset monthly and are $15–25 per 1k at entry, $7.25 around 100k/month, $3.75 at 1M and ~$1.96 at their best list price. 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 SerpApi
Start building
Leave SerpApi today
2,500 free credits, then 1,000 every month. No credit card.