SerpAPI 搜索引擎 — Google 搜索 API
通过 SerpAPI 获取 Google 搜索结果的结构化数据。支持网页、图片、新闻、视频搜索,让 Agent 具备实时搜索能力。
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? <br /> 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
# or if you prefer yarn
yarn add serpapi
const { getJson } = require("serpapi");
getJson({
engine: "google",
api_key: API_KEY, // Get your API_KEY from https://serpapi.com/manage-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
importsyntax and top-levelawait, you need to use - Refer to
at least Node.js 14.8.0.
this example for help.
You will need to add "type": "module" to your package.json:
{
"type": "module",
// rest of package.json
}
import { getJson } from "serpapi";
const response = await getJson({
engine: "google",
api_key: API_KEY, // Get your API_KEY from https://serpapi.com/manage-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, // Get your API_KEY from https://serpapi.com/manage-api-key
q: "coffee",
location: "Austin, Texas",
});
console.log(response);
Features
- TypeScript support.
- Works out-of-the-box with Node.js and
- Promises and async/await support.
- Callbacks support.
- Examples in JavaScript/TypeScript on Node.js/Deno using ESM/CommonJS, and more.
Deno.
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" }); // uses the API key defined in the config
await getJson({ engine: "google", api_key: API_KEY_2, q: "coffee" }); // API_KEY_2 will be used
Using a Proxy
You can use a proxy by passing requestOptions with an HttpsProxyAgent instance. This can be done either globally through the config object or per-request in the parameters.
First, install the required package:
npm install https-proxy-agent
# or if you prefer yarn
yarn add https-proxy-agent
Then use it in your code:
import { config, getJson } from "serpapi";
import { HttpsProxyAgent } from "https-proxy-agent";
// Global configuration
config.requestOptions = {
agent: new HttpsProxyAgent("http://proxy-server:port"),
};
// Or per-request configuration
await getJson({
engine: "google",
q: "coffee",
requestOptions: {
agent: new HttpsProxyAgent("http://proxy-server:port"),
},
});
Pagination
Built-in pagination is not supported. Please refer to our pagination examples for a manual approach:
Functions
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
Table of Contents
- [getJson](#getjson)
- [getHtml](#gethtml)
- [getJsonBySearchId](#getjsonbysearchid)
- [getHtmlBySearchId](#gethtmlbysearchid)
- [getAccount](#getaccount)
- [getLocations](#getlocations)
- [Parameters](#parameters) - [Examples](#examples)
- [Parameters](#parameters-1) - [Examples](#examples-1)
- [Parameters](#parameters-2) - [Examples](#examples-2)
- [Parameters](#parameters-3) - [Examples](#examples-3)
- [Parameters](#parameters-4) - [Examples](#examples-4)
- [Parameters](#parameters-5) - [Examples](#examples-5)
getJson
Get a JSON response based on search parameters.
Parameters
parameterscallbackfn? optional callback
object search query parameters for the engine
Examples
// single call (async/await)
const json = await getJson({ engine: "google", api_key: API_KEY, q: "coffee" });
// single call (callback)
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
parameterscallbackfn? optional callback
object search query parameters for the engine
Examples
// async/await
const html = await getHtml({ engine: "google", api_key: API_KEY, q: "coffee" });
// callback
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.idkey in the - Typically used together with the
asyncparameter. - Accepts an optional callback.
response.
Parameters
- parameters.api_key string? API key - parameters.timeout number? timeout in milliseconds
callbackfn? optional callback
Examples
const response = await getJson({
engine: "google",
api_key: API_KEY,
asy
(内容节选自官方 README)
安装
# 安装到当前项目
npx skills add serpapi
# 全局安装
npx skills add serpapi -g
来源
- 作者:
GenHub - 仓库:https://github.com/serpapi/serpapi-javascript
- npm 包:
serpapi
安装指南
复制下方命令,在终端运行即可安装:
需已安装 GenHub 桌面端
使用指南
安装完成后,在对话框中直接使用此技能。
评论已关闭。