Skip to content

New Official SDKs for TypeScript, Python and Go

SerpKite
Get API key

Migration guide

Migrate from the Brave Search API

Brave ended its free API tier in February 2026; you now need a card for a $5 credit, and the list price is a flat $5 per 1,000. SerpKite has a no-card free tier and returns Google results.

Why switch

Why teams move from Brave Search API to SerpKite

01

Free tier, no card

2,500 credits on signup and 1,000 every month after that. No credit card.

02

Google's results

Brave runs its own independent index. SerpKite returns what google.com shows, including the answer box and People Also Ask.

03

Volume pricing

$0.80 per 1k at ~$50 and down to $0.60 per 1k, vs a flat $5.00. Credits never expire.

04

Same verticals

News, Images and Videos have their own endpoints, with Maps, Places, Shopping and Scholar on top.

The change

Before and after

brave.py −6 lines
import os, requests

res = requests.get(
    "https://api.search.brave.com/res/v1/web/search",
    headers={"X-Subscription-Token": os.environ["BRAVE_API_KEY"]},
    params={"q": "open source vector database", "country": "us", "count": 10, "offset": 0},
    timeout=30,
)
for r in res.json()["web"]["results"]:
    print(r["title"], r["url"], r["description"])
search.py (SerpKite) +6 lines
import os, requests

res = requests.post(
    "https://api.serpkite.com/v1/search",
    headers={"Authorization": f"Bearer {os.environ['SERPKITE_API_KEY']}"},
    json={"q": "open source vector database", "country": "us", "page": 1},
    timeout=30,
)
for r in res.json()["results"]:
    print(r["title"], r["link"], r.get("snippet"))

The call becomes a JSON POST to /v1/search with Authorization: Bearer; country keeps its name, offset becomes page and web.results becomes results. The official SDKs (pip install serpkite, npm install serpkite) wrap the same call: SerpKite().search(q, country="us").

Reference

Parameter and field mapping

Request parameters

Request parameter mapping
Brave Search API SerpKite Notes
X-Subscription-Token Authorization: Bearer skt_live_…
q q
country country
search_lang / ui_lang language
count num 10 per page.
offset (0–9) page (1–10) page = offset + 1.
freshness=pd|pw|pm|py time=day|week|month|year
safesearch=off|moderate|strict safe=off|active
/res/v1/news/search · images · videos POST /v1/news · /v1/images · /v1/videos

Response fields

Response field mapping
Brave Search API SerpKite Notes
web.results[].title results[].title Plain text, no <strong> tags.
web.results[].url results[].link
web.results[].description results[].snippet
web.results[].profile.name / meta_url.hostname results[].domain
query.original request.q
faq / discussions people_also_ask Different sources: Google's PAA box.
infobox knowledge_graph
summarizer (separate call) (none) We don't generate summaries.

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

  • Different index, different ranking. Re-baseline anything that compared positions.
  • No extra_snippets. Use include_content to pull page text for the top results.
  • HTML in descriptions. Brave wraps matches in <strong>; SerpKite snippets are plain text, so remove any tag stripping you added.
  • Goggles and custom re-ranking have no equivalent. Filter with site: and -site: operators.

Checklist

Step by step

  1. 1 Create a free account (no card) and copy your skt_live_… key.
  2. 2 Switch from GET api.search.brave.com/res/v1/web/search to POST api.serpkite.com/v1/search (or an SDK call).
  3. 3 Keep country, map search_lang → language, offset → page, freshness → time.
  4. 4 Rename response fields: web.results → results, url → link, description → snippet.
  5. 5 Move news, image and video calls to their SerpKite endpoints.
  6. 6 Set a spend cap and deploy.

Pricing

SerpKite vs Brave Search API: price

Price comparison with Brave Search API
SerpKite Brave Search API
Free tier 2,500 on signup + 1,000/mo, no card $5 credit, card required
Entry, ~$50 pack $ per 1k searches $0.80 $5.00
~100k searches / month $ per 1k $0.60 $5.00
~1M searches / month $ per 1k $0.60 $5.00
Best public list price $ per 1k $0.60 $5.00 (no volume discount)
Credit expiry Never Monthly

Brave lists $5.00 per 1k with no volume discount, and the free tier now requires a card. 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 Brave Search API

Start building

Leave Brave Search API today

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