Scrape Google search results using Serper, the fastest and most affordable SERP API.
# npm
npm install serper
# yarn
yarn add serper
# pnpm
pnpm add serper
import { Serper } from "serper"; // ES Modules
const { Serper } = require("serper"); // CommonJS Modules
const serper = new Serper({
apiKey: process.env.SERPER_API_KEY // Get your API key at https://serper.dev/api-key
});
const results = await serper.search("search terms");
Configuration is very simple; just three things.
const serper = new Serper({
apiKey: process.env.SERPER_API_KEY, // Your API key, this is required
timeout: 10000, // Request timeout in milliseconds, 10000 by default
doCache: true // Enable to cache responses, true by default
});
The client usage is just as simple as what was shown in the quick start. Simply initializing a client, then making requests with async methods.
Currently, you can search under all supported Serper API routes. They are:
All of these can be called using the exact same client API and the respective name of the route as the function name. By replacing "search" in the quick start function, you can run any search imaginable!
Pagination is built in to Serper with three simple functions, nextPage
, prevPage
and toPage
. Currently, due to API limitations, there is no indicator in nextPage
as to the end of all pages. The prevPage
function just returns the first page if you try to go negative. The self explanatory toPage
results in the specified page.
All client responses contain nextPage
and prevPage
, as well as all pagination responses.
let results = await serper.search("dog shelters");
for (let x = 0; x < 5; x++) {
results = await results.nextPage();
}
All responses from the Serper Client are locally cached to reduce credit usage during pagination and repeated searching. The cache can easily be disabled by setting the cache
config value to false
, although this is not recommended as it will significantly slow down your application, and should only be used when current information (ie. news) is needed.
API docs are available online here, and a large collection of usage examples are available in the examples/ directory.
Note: All examples assume top level await, which is supported in modern Node.js and most modern browers.
This code is released under the permissible MIT license. Anyone can contribute, use, redistribute, and sell this library without any credit, although it is appreciated.
Generated using TypeDoc