Skip to content

New Official SDKs for TypeScript, Python and Go

SerpKite
Get API key
Docs menu / Google Search

Google Search

Organic results, knowledge graph, answer box, People Also Ask, related searches, top stories and sitelinks.

POST https://api.serpkite.com/v1/search Credits: 1 per page (7 for num=100) Try in playground
View as Markdown

The main Google web search endpoint. One call returns the whole results page: organic results in results with resolved destination URLs, knowledge graph, answer box, People Also Ask, related searches, top stories and the local pack when Google shows them.

related_searches is always present (an empty array when Google shows none); the other extras appear only when the page has them.

Request body

Send a JSON object with Content-Type: application/json. The same parameters also work as a query string on GET /v1/search. JSON arrays are rejected: to run many queries at once, use POST /v1/batches at half price. Unknown parameters return 400 invalid_request with a message that names the replacement; see strict validation.

ParameterTypeDefaultDescription
q requiredstringThe search query. Required. Up to 2,048 characters.
countrystringusCountry to search from, as a two-letter ISO code (us, gb, de, in…).
languagestringenInterface language, as a language code (en, de, fr, pt-BR…).
locationstringCanonical location for local results, e.g. "Austin, Texas, United States". Overrides country for geo.
uulestringGoogle-encoded location string. Use instead of location if you already have it.
numinteger10Results per call. 10 per page; 100 fetches the top 100 as a depth bundle for 7 credits instead of 10. One of: 10, 20, 30, 50, 100.
pageinteger1Results page, 1–10. Each page is billed separately.
timestringRestrict to recent results. Shorthand for tbs=qdr:*. One of: hour, day, week, month, year.
tbsstringRaw Google tbs filter, e.g. qdr:w or cdr:1,cd_min:…
devicestringdesktopWhich SERP layout to fetch. One of: desktop, mobile.
safestringoffSafeSearch filtering. One of: off, active.
autocorrectbooleantrueLet Google correct misspelled queries. Set false to search the exact text.
formatstringjsonResponse format. markdown is LLM-ready prose; compact is JSON with only the fields agents need. One of: json, compact, markdown.
fieldsstringComma-separated projection, e.g. results.title,results.link,knowledge_graph. Cuts tokens.
include_contentinteger0Also fetch the top N result pages (0–5) as Markdown. +1 credit per page.
max_ageintegerAccept a cached result up to this many seconds old. Cache hits cost 50% of the credits.
adsbooleanfalseInclude sponsored results in ads.
enginestring or arraygoogleWhich search providers may answer. google is Google only (SerpKite still fails over across its own proxy pools); auto falls back to other providers when Google is blocked or times out; consensus (search only) asks several independent indexes in parallel, merges the results by URL, ranks them by agreement and lists each result's sources, at the sum of one page per provider that returned results; a provider name or a list (e.g. google,brave) restricts the request to those. meta.engine names the provider that answered. One of: google, auto, consensus, brave, bing, yahoo, duckduckgo, mojeek, wikipedia.

Example request

Authenticate with Authorization: Bearer $SERPKITE_API_KEY (GET requests may pass ?api_key= instead). The official SDKs read SERPKITE_API_KEY for you. See Authentication.

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"}'

Response fields

FieldTypeDescription
requestobjectThe normalised request, with defaults filled in: endpoint, engine, q, country, language, location, num, page, device, autocorrect…
results[]arrayOrganic results: position, title, link (resolved), domain, displayed_link, snippet, date, sitelinks[], attributes, rating, rating_count, content (with include_content).
answer_boxobjecttitle, answer, snippet, snippet_highlighted[], link.
knowledge_graphobjecttitle, type, website, image_url, description, description_source, description_link, attributes.
people_also_ask[]arrayquestion, snippet, title, link.
related_searches[]arrayquery.
top_stories[]arrayNews items: position, title, link, domain, source, date, image_url.
places[]arrayLocal pack, same shape as /v1/maps results.
ads[]arraySponsored results (only with ads: true).
metaobjectrequest_id, credits_used, cached, cached_at, engine (the provider that answered), route (provider attempts, see Search providers), latency_ms, parse_quality (ok, partial, empty), resolved_urls.

Every billed response also carries credit and latency headers (X-Credits-Used, X-Credits-Remaining, X-Request-Id…).

Example response

200 OK · illustrative
{
  "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
  }
}

Errors

Errors use one shape: {"error":{"code","message","request_id"}}. Errors are never billed. Full list in Errors.

StatusCodeMeaning
400invalid_requestA parameter is missing or invalid.
401unauthorizedThe API key is missing, invalid or revoked.
402insufficient_creditsYour balance is too low. Buy a pack or wait for the monthly free grant.
429rate_limitedToo many requests per second for your plan. Retry after the Retry-After header.
503upstream_errorGoogle could not be fetched or parsed. Not billed; retry after Retry-After.

Notes

  • Set format: "markdown" or "compact" to cut tokens, or project fields with fields (e.g. results.title,results.link,knowledge_graph). See Output formats.
  • num: 100 returns the top 100 in one call for 7 credits. See Pagination and depth.
  • GET /v1/search?q=… works too, with the same parameters in the query string.