SerpApi for JavaScript/TypeScript
Scrape and parse search engine results using SerpApi. Get
search results from Google, Bing, Baidu, Yandex, Yahoo, Home Depot, eBay and
more.
🪧 Coming from google-search-results-nodejs ? Check out the migration document to find out how to upgrade. |
---|
Quick start
Node.js
- Supports Node.js 7.10.1 and newer.
- Refer to
this example
for help.
npm install serpapi
const { getJson } = require("serpapi");
getJson({
engine: "google",
api_key: API_KEY,
q: "coffee",
location: "Austin, Texas",
}, (json) => {
console.log(json["organic_results"]);
});
Node.js with ES Modules (ESM) and top-level await
- If you prefer using the
import
syntax and top-level await
, you need to use
at least Node.js 14.8.0. - Refer to
this example
for help.
You will need to add "type": "module"
to your package.json
:
{
"type": "module",
}
import { getJson } from "serpapi";
const response = await getJson({
engine: "google",
api_key: API_KEY,
q: "coffee",
location: "Austin, Texas",
});
console.log(response);
Deno
- Import directly from deno.land.
- Usage is otherwise the same as above.
- Refer to
this example
for help.
import { getJson } from "https://deno.land/x/serpapi/mod.ts";
const response = await getJson({
engine: "google",
api_key: API_KEY,
q: "coffee",
location: "Austin, Texas",
});
console.log(response);
Features
Configuration
You can declare a global api_key
and timeout
value by modifying the config
object. timeout
is defined in milliseconds and defaults to 60 seconds.
All functions, other than getLocations
, accepts an optional api_key
and
timeout
that will take precedence over the values defined in config
.
getLocations
doesn't require an API key.
import { config, getJson } from "serpapi";
config.api_key = API_KEY;
config.timeout = 60000;
await getJson({ engine: "google", q: "coffee" });
await getJson({ engine: "google", api_key: API_KEY_2, q: "coffee" });
Built-in pagination is not supported. Please refer to our pagination examples
for a manual approach:
Functions
Table of Contents
getJson
Get a JSON response based on search parameters.
Parameters
parameters
object
search query parameters for the enginecallback
fn? optional callback
Examples
const json = await getJson({ engine: "google", api_key: API_KEY, q: "coffee" });
getJson({ engine: "google", api_key: API_KEY, q: "coffee" }, console.log);
getHtml
Get a HTML response based on search parameters.
- Accepts an optional callback.
- Responds with a JSON string if the search request hasn't completed.
Parameters
parameters
object
search query parameters for the enginecallback
fn? optional callback
Examples
const html = await getHtml({ engine: "google", api_key: API_KEY, q: "coffee" });
getHtml({ engine: "google", api_key: API_KEY, q: "coffee" }, console.log);
getJsonBySearchId
Get a JSON response given a search ID.
- This search ID can be obtained from the
search_metadata.id
key in the
response. - Typically used together with the
async
parameter. - Accepts an optional callback.
Parameters
-
searchId
string
search ID
-
parameters
object
(optional, default {}
)
parameters.api_key
string?
API keyparameters.timeout
number?
timeout in milliseconds
-
callback
fn? optional callback
Examples
const response = await getJson({
engine: "google",
api_key: API_KEY,
async: true,
q: "coffee",
});
const { id } = response.search_metadata;
await delay(1000);
const json = await getJsonBySearchId(id, { api_key: API_KEY });
getJsonBySearchId(id, { api_key: API_KEY }, console.log);
getHtmlBySearchId
Get a HTML response given a search ID.
- This search ID can be obtained from the
search_metadata.id
key in the
response. - Typically used together with the
async
parameter. - Accepts an optional callback.
- Responds with a JSON if the search request hasn't completed.
Parameters
-
searchId
string
search ID
-
parameters
object
(optional, default {}
)
parameters.api_key
string?
API keyparameters.timeout
number?
timeout in milliseconds
-
callback
fn? optional callback
Examples
const response = await getJson({
engine: "google",
api_key: API_KEY,
async: true,
q: "coffee",
});
const { id } = response.search_metadata;
await delay(1000);
const html = await getHtmlBySearchId(id, { api_key: API_KEY });
getHtmlBySearchId(id, { api_key: API_KEY }, console.log);
getAccount
Get account information of an API key. https://serpapi.com/account-api
Parameters
Examples
const info = await getAccount({ api_key: API_KEY });
getAccount({ api_key: API_KEY }, console.log);
getLocations
Get supported locations. Does not require an API key.
https://serpapi.com/locations-api
Parameters
Examples
const locations = await getLocations({ limit: 3 });
getLocations({ limit: 3 }, console.log);