SERP API · 6 search engines · 193 countries · organic results

Search results, as JSON you can parse.

SerpResult is a SERP API for Google, Bing, DuckDuckGo, Yahoo, Brave and Yandex. One GET request returns ranked organic results with position, title, URL, domain and snippet. No headless browsers, no proxy pool to babysit, no HTML to scrape.

GET /v1/query

Live call to the public API. Five demo searches a minute per visitor, no key required.

What you get

A small API surface that does the annoying part

Two endpoints, one response shape, and the engine-side mess handled behind them.

Organic results only

Every response is the same normalised array: position, title, url, domain, snippet. No ad blocks, no knowledge panels, no per-engine HTML quirks leaking into your parser.

Six targets, one contract

google_search, bing_search, duckduckgo_search, yahoo_search, brave_search and yandex_search answer with an identical response shape. Switch engines with a query parameter instead of a second integration.

Country-level targeting

190+ countries, from us and gb to br, ng and jp. Each geo resolves its own locale and localizes the search to that country, so results read the way they do on the ground.

Every call accounted for

The dashboard lists every search with its parameters, its outcome and the credits it cost, per key and over time. Reconciling what you spent never needs a support ticket.

Bulk in one request

POST up to 50 queries together and get 50 answers back in the same call. Per-row overrides for target, geo and locale; a bad row fails on its own without taking the batch down.

Nothing to poll

Both endpoints are synchronous. The results are in the response you already have, so there is no job id to store, no queue to drain and no webhook to receive.

MCP server

Search from inside your agent.

Available now. Add https://api.serpresult.com/mcp in Claude, ChatGPT, Claude Code, Cursor or Codex, sign in with your account or use your API key, and your agent gets the same organic results the HTTP API returns.

~/project

$ claude mcp add --transport http serp-api https://api.serpresult.com/mcp

--header "Authorization: Bearer sk_live_..."

✓ Added MCP server serp-api

$ claude

> what ranks on Google for "best noise cancelling headphones" in gb?

⚙ serp_search · target=google_search · geo=gb · num=5

✓ 5 organic results in 812 ms

$

  • One tool, six engines. serp_search takes query, target and geo and returns the organic array.

  • Same contract as HTTP. Position, title, url, domain, snippet, nothing agent-specific to learn.

  • Sign in or bring your key. Approve the connection with your account once, or pass an sk_live key in a header. Either way it spends the same credits as the HTTP API.

Claude · ChatGPT · Claude Code · Cursor · Codex

How it works

Three steps from signup to parsed results

  1. 01

    Get a key

    Sign up and mint a key from the dashboard. Live keys hit the real engines, test keys let you wire the integration up first.

    Authorization: Bearer sk_live_… Create an account →
  2. 02

    Call /v1/query

    One GET with the query, the target and the country. Everything else has a default, so the shortest useful call is a single parameter.

    GET /v1/query?query=…&target=google_search&geo=us Read the reference →
  3. 03

    Parse results.organic

    Ranked rows, already deduplicated and normalised. Read position, title, url, domain and snippet and move on with your day.

    results.organic[0].url

The whole integration

One request in, one predictable object out

Nothing to install. Any HTTP client you already have is the SDK.

request
curl -G "https://api.serpresult.com/v1/query" \
  -H "Authorization: Bearer $SERPRESULT_KEY" \
  --data-urlencode "query=best noise cancelling headphones" \
  --data-urlencode "target=google_search" \
  --data-urlencode "geo=us" \
  --data-urlencode "num=5"
200 response
{
  "id": "qry_9f3c1a7d4b6e4f2a8c05d71e2b93fa60",
  "target": "google_search",
  "query": "best noise cancelling headphones",
  "geo": "us",
  "locale": "en-us",
  "page": 1,
  "results": {
    "organic": [
      {
        "position": 1,
        "title": "The 4 Best Noise-Cancelling Headphones of 2026",
        "url": "https://www.nytimes.com/wirecutter/reviews/best-noise-cancelling-headphones/",
        "domain": "nytimes.com",
        "snippet": "We tested dozens of pairs to find the ones that block the most noise without wrecking the sound."
      },
      {
        "position": 2,
        "title": "Best Noise Cancelling Headphones - RTINGS.com",
        "url": "https://www.rtings.com/headphones/reviews/best/noise-cancelling",
        "domain": "rtings.com",
        "snippet": "Our recommendations are based on measured isolation performance across several frequency ranges."
      }
    ]
  }
}

Stop maintaining a scraper.

Create an account, mint a key, and have parsed organic results in your code before the next standup.