---
title: "Same as POST /v1/search with query-string parameters"
method: GET
path: "/v1/search"
---

# Same as POST /v1/search with query-string parameters

`GET /v1/search`

## Request

- Base URL: `https://api.serpkite.com`
- URL: `https://api.serpkite.com/v1/search`
- Auth: HTTP bearer

## Query parameters

- `q` string, required
- `country` string
- `language` string
- `location` string
- `num` integer
- `page` integer
- `uule` string
- `ll` string
- `time` string
- `tbs` string
- `device` string
- `safe` string
- `autocorrect` boolean
- `format` string
- `fields` string
- `include_content` integer
- `ads` boolean
- `max_age` integer
- `engine` string
- `include_domains` string
- `exclude_domains` string
- `boost_domains` string
- `start_date` string, date
- `end_date` string, date
- `highlights` boolean
- `api_key` string

## Response `200`

OK (text/markdown when format=markdown)

- SearchResponse
  - `request` RequestEcho, required: The normalised request that produced this response (defaults filled in)
    - `endpoint` string, required
    - `engine` union, required: The engine policy as asked (google, auto, one provider or a list)
      - string
      - string[]
    - `q` string
    - `url` string
    - `country` string
    - `language` string
    - `location` string
    - `num` integer
    - `page` integer
    - `device` string
    - `autocorrect` boolean
    - `tbs` string
    - `start_date` string, date
    - `end_date` string, date
    - `safe` string
    - `place_id` string
    - `cid` string
    - `fid` string
    - `sort` string
    - `include_content` integer
    - `format` string
    - `include_domains` string[]
    - `exclude_domains` string[]
    - `boost_domains` string[]
    - `highlights` boolean
  - `results` OrganicResult[], required
    - `position` integer, required
    - `title` string, required
    - `link` string, required: Resolved destination URL (never a google.com/url or /goto redirect)
    - `domain` string, required: Canonical host without www.
    - `displayed_link` string
    - `snippet` string
    - `date` string
    - `sitelinks` Sitelink[]
      - `title` string, required
      - `link` string, required
      - `snippet` string
    - `attributes` object
    - `rating` number
    - `rating_count` integer
    - `published_at` string: `date` as an ISO 8601 date or date-time when it parses (relative dates resolved against the fetch time)
    - `content` string: Page Markdown when include_content covered this result
    - `highlights` Highlight[]: highlights=true only. Query-ranked passages of the fetched page, best first (instead of content)
      - `text` string, required
      - `score` number, required: Relevance to the query (BM25; higher is better
      - `heading` string: The section heading path the passage sits under
    - `sources` Provider[]: engine=consensus only. The providers that returned this result, in route order; results are ranked by how many there are
  - `answer_box` AnswerBox
    - `title` string
    - `answer` string
    - `snippet` string
    - `snippet_highlighted` string[]
    - `link` string
  - `knowledge_graph` KnowledgeGraph
    - `title` string
    - `type` string
    - `website` string
    - `image_url` string
    - `description` string
    - `description_source` string
    - `description_link` string
    - `attributes` object
  - `ads` OrganicResult[]
    - `position` integer, required
    - `title` string, required
    - `link` string, required: Resolved destination URL (never a google.com/url or /goto redirect)
    - `domain` string, required: Canonical host without www.
    - `displayed_link` string
    - `snippet` string
    - `date` string
    - `sitelinks` Sitelink[]
      - `title` string, required
      - `link` string, required
      - `snippet` string
    - `attributes` object
    - `rating` number
    - `rating_count` integer
    - `published_at` string: `date` as an ISO 8601 date or date-time when it parses (relative dates resolved against the fetch time)
    - `content` string: Page Markdown when include_content covered this result
    - `highlights` Highlight[]: highlights=true only. Query-ranked passages of the fetched page, best first (instead of content)
      - `text` string, required
      - `score` number, required: Relevance to the query (BM25; higher is better
      - `heading` string: The section heading path the passage sits under
    - `sources` Provider[]: engine=consensus only. The providers that returned this result, in route order; results are ranked by how many there are
  - `people_also_ask` PeopleAlsoAsk[]
    - `question` string, required
    - `snippet` string
    - `title` string
    - `link` string
  - `related_searches` RelatedSearch[], required
    - `query` string, required
  - `top_stories` NewsResult[]
    - `position` integer, required
    - `title` string, required
    - `link` string, required
    - `domain` string
    - `snippet` string
    - `date` string
    - `published_at` string: `date` as ISO 8601 when it parses
    - `source` string
    - `image_url` string
  - `places` PlaceResult[]
    - `position` integer, required
    - `title` string, required
    - `address` string
    - `latitude` number
    - `longitude` number
    - `rating` number
    - `rating_count` integer
    - `price_level` string
    - `type` string
    - `types` string[]
    - `website` string
    - `phone_number` string
    - `opening_hours` object
    - `thumbnail_url` string
    - `place_id` string
    - `cid` string
    - `fid` string
  - `meta` Meta, required
    - `request_id` string, required
    - `credits_used` number, required
    - `engine` string: The provider that produced the result (`consensus` for a merged engine=consensus answer)
    - `route` RouteStep[]: Provider attempts in order (fresh results only; absent on cache hits). With engine=consensus, every provider started; ones stopped early are `canceled`, ones cut off by the deadline `timeout`
      - `provider` string, required
      - `outcome` 'ok' | 'partial' | 'empty' | 'soft_empty' | 'blocked' | 'timeout' | 'error' | 'unsupported' | 'bad_param' | 'bad_target' | 'canceled', required
      - `ms` integer, required: Duration of the attempt in milliseconds
    - `cached` boolean, required
    - `cached_at` string, date-time
    - `resolved_urls` boolean
    - `parse_quality` 'ok' | 'partial' | 'empty'
    - `latency_ms` integer

## Other responses

- `400`: Error
- `401`: Error
- `402`: Error
- `403`: Error
- `429`: Error
- `503`: Temporarily unavailable, not billed, safe to retry after `Retry-After`. Codes: `upstream_error` (the upstream page couldn't be fetched or parsed), `upstream_blocked` (the upstream is rate limiting us), `upstream_timeout` (the search took too long), `unavailable` (endpoint or dependency down). The API never sends 502 or 504.

---

[API](https://skmtc.dev/serpkite/apis/serpkite-serp-api.md) · [All operations](https://skmtc.dev/serpkite/apis/serpkite-serp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/serpkite/apis/serpkite-serp-api/revisions/f2c6dd05cfc5?raw)
