serpresult

SerpResult returns live organic search results from Google, Bing, DuckDuckGo, Yahoo, Brave and Yandex as structured JSON. This n8n community node runs a search, a bulk search and reads your account, using your own SerpResult API key.

Package Information

Released: this month
Downloads: 0 weekly / 0 monthly
Latest Version: 0.1.0
Author: ArulGnani

Documentation

n8n-nodes-serpresult

The SerpResult community node for n8n. SerpResult runs live searches on Google, Bing, DuckDuckGo, Yahoo, Brave and Yandex from the country you pick, and returns the organic results as structured data: one item per result, with its position, title, URL, domain and snippet.

The node runs on your own SerpResult API key. Each search costs 1 credit from your SerpResult account; a cached result still costs 1 credit. Bulk Search costs 1 credit per query.

Installation

On a self-hosted n8n instance (owner or admin account):

  1. Go to Settings > Community Nodes and select Install.
  2. Enter n8n-nodes-serpresult as the npm package name.
  3. Tick I understand the risks of installing unverified code from a public source and select Install.

See n8n's community node installation guide for details. To install without the UI, run npm install n8n-nodes-serpresult in ~/.n8n/nodes and restart n8n.

Credentials

The node uses one credential, SerpResult API, with one field.

  1. In the SerpResult dashboard open Developers > API keys (https://app.serpresult.com/dashboard/developers/api-keys) and create a key. Name it after n8n so you can tell its usage apart.
  2. In n8n, add a SerpResult node, open Credential to connect with and select Create new credential.
  3. Paste the key (it starts with sk_) into API Key and select Save.

n8n tests the credential by calling GET /v1/me, which costs no credits. The key is sent as Authorization: Bearer <key>.

Test keys. "Test" is only a label and a lower rate limit. A test key runs real searches and spends real credits.

Operations

Resource Operation Input API call
Search Search Query, Target, Country, Additional Fields GET /v1/query
Search Bulk Search Queries (one per line, up to 50), Target, Country, Additional Fields POST /v1/bulk
Account Get Info none GET /v1/me

Search runs one query on one target and returns its organic results.

Bulk Search runs up to 50 queries in one request. Put one query per line; blank lines are ignored. Target, Country and every Additional Field apply to all of them.

Get Info returns the account email, plan, the credits it can spend right now (credits_available) and the key's label and mode. It costs no credits.

Target is the engine: Google, Bing, DuckDuckGo, Yahoo, Brave or Yandex. Country is the country the search exits from, so the results are the ones a searcher there sees. 193 countries are available.

Additional Fields are optional. Leave one unset and the API applies its own default.

Field Values Served by
Locale a tag like en-us (default: the country's main locale) every target
Page 1 to 5 Google, Brave and Yandex; the other targets serve page 1 only
Results per Page 1 to 20 up to 20 on Google, Bing and Brave; up to 10 on DuckDuckGo, Yahoo and Yandex
Safe Search Off, Moderate, Strict every target except DuckDuckGo and Yandex

A value the target cannot serve fails with unsupported_parameter and names the parameter.

Output

Search and Bulk Search emit one item per organic result, in rank order, with these fields in this order:

  • position: the result's rank on the page, starting at 1.
  • title: the result's title.
  • url: the result's URL.
  • domain: the domain of url.
  • snippet: the text the engine shows under the title.
  • query: the query that produced the result. In Bulk Search each item carries its own query.
  • target: the engine, such as google_search.
  • geo: the country code the search ran from.
  • locale: the locale the search ran with.
  • page: the results page.
  • request_id: the ID of the search (qry_…).

A search that finds nothing emits no items. It is not an error. If later steps must run anyway, enable the node's Always Output Data setting.

One result:

{
  "position": 1,
  "title": "7 Best Running Shoes in 2026 - RunRepeat",
  "url": "https://runrepeat.com/guides/best-running-shoes",
  "domain": "runrepeat.com",
  "snippet": "Sep 12, 2026 ... The New Balance 1080 v15 stands out in the all-rounder game, bringing a whole new level of comfort while sustaining lightness and responsiveness ...",
  "query": "best running shoes",
  "target": "google_search",
  "geo": "us",
  "locale": "en-us",
  "page": 1,
  "request_id": "qry_f99b881c0da545b48a49608da51c1fb0"
}

Rate limits, credits and keys

Each search costs 1 credit from your SerpResult account; a cached result still costs 1 credit. Bulk Search costs 1 credit per query. Account Info costs no credits.

  • 429 Too Many Requests. Each key has a per-minute limit. The node waits for the Retry-After time (at most 10 seconds) and retries once. If it is still limited, the step stops with Rate limited: your SerpResult plan allows N requests per minute. Space out the runs (for example with Loop Over Items and a Wait) or move to a plan with a higher rate: https://serpresult.com/pricing
  • 402 Payment Required. The account is out of credits. The step stops with a link to https://app.serpresult.com/dashboard/billing. Top up and run it again.
  • 401 Unauthorized. The key is wrong or revoked.
  • 400 unsupported_parameter. The target cannot serve one of the Additional Fields. Remove it or pick another target.

With Settings > On Error > Continue the failing item carries { "error": "<message>" } instead of stopping the workflow.

Compatibility

Built with @n8n/node-cli 0.50 against the n8n nodes API version 1. The package has no runtime dependencies.

Development

pnpm install
pnpm run dev
pnpm run lint
pnpm run check

pnpm run dev starts a local n8n with the node loaded. pnpm run check builds the node and runs check.mjs, which drives it against a mocked API: a Google search, an empty answer, a bulk search with a blank line, a bulk search over 50 lines, a 429 that clears on retry, a 429 that doesn't, a 401, a 402 with Continue on Fail, Get Info, and a check that the Country list matches the API's. samples/ holds the node's real output for each fixture in fixtures/.

This repository is a mirror. The source lives in the SerpResult monorepo under integrations/n8n/, and nodes/SerpResult/shared.ts is a verbatim copy of the client every SerpResult marketplace integration shares. Report issues at https://github.com/ArulGnani/n8n-nodes-serpresult/issues or team@serpresult.com.

License

MIT

Discussion