# SERP API 快速上手：在 curl、Python 和 Node.js 中完成你的第一次搜索

> 用 curl、Python 或 Node.js 运行你的第一次 SerpCrypto SERP API 搜索：获取密钥、调用一个 endpoint、读取 JSON、查看积分。无需 KYC，加密货币支付。

- URL: https://serpcrypto.com/zh/docs/
- 最后更新: 2026-10-22
- 发布者: SerpCrypto (https://serpcrypto.com)

一个 HTTPS endpoint、一个 API 密钥、每次成功搜索一个积分。本页带你从空账户走到解析好的 Google 搜索结果页，然后再指向参考文档了解其余内容。

**快速回答 — 如何用 SerpCrypto 发出第一次 SERP API 请求？**

购买积分包，从仪表盘复制 API 密钥，然后带上请求头 `Authorization: Bearer YOUR_KEY` 发送 `GET https://serpcrypto.com/api/v1/search?q=your+query`。**SerpCrypto** 会以 JSON 返回搜索结果页，并且只在搜索成功时扣除 1 个积分。10,000 次搜索 花费 US$7.50，使用加密货币支付，无需 KYC，积分永不过期。

## API 概览

| 属性 | 值 |
| --- | --- |
| Base URL | `https://serpcrypto.com/api/v1` |
| 搜索 | `GET https://serpcrypto.com/api/v1/search` |
| 积分 | `GET https://serpcrypto.com/api/v1/credits`（免费） |
| 认证 | Authorization header（Bearer）中的 API 密钥，或 api_key query parameter 中的 API 密钥 |
| 引擎 | Google 搜索、Google 新闻、Google 图片、Google 地图（本地结果）、Google 购物 和 Bing |
| 计费 | 1 积分 = 1 次成功的查询请求，可在任意支持的引擎上返回一页结果。失败的请求不计费 |
| 积分过期 | 预付的搜索积分永不过期：未使用的查询会一直留在你的账户中，直到你使用它们 |
| 格式 | JSON over HTTPS，UTF-8 |

## 如何获取 API 密钥？

四步。无需身份证、无需自拍、无需证件，也不需要邮箱，除非你想要。

1. **开设账户** — 使用账号登录；邮箱为选填。把账户号保存在密码管理器里：它就是你的登录凭证。
2. **用加密货币充值** — 至少发送 BTC, USDT, USDC, ETH, SOL, LTC 的 US$25。余额会在支付页面列出的网络确认数之后到账。
3. **购买积分包** — US$7.50 的 10,000 次搜索 足以测试所有引擎。更大的积分包能把单价降到 US$0.30/千次搜索。参见定价。
4. **复制你的密钥** — 你从已确认的加密货币余额购买积分包后，API 密钥会立即显示在你的 dashboard 中。把它保存在名为 SERPCRYPTO_API_KEY 的环境变量中，绝不要放进代码仓库。

## 如何用 curl 运行第一次搜索？

先导出一次密钥，然后发送一个 GET 请求。配合 `--data-urlencode` 使用 `-G` 参数会自动构建 query string 并为你编码空格和重音字符。返回的是一个 JSON 文档，`jq` 能让它在终端里保持可读。

示例向默认引擎 Google 请求美国区域的英文结果。修改 `q`、`gl` 或 `hl` 后再运行一次：每次成功运行消耗一个积分。

*curl + jq：前三条自然搜索结果*

```bash
export SERPCRYPTO_API_KEY="paste-your-key-here"

curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=best espresso grinder" \
  -d gl=us -d hl=en | jq '.organic_results[:3]'
```

## 如何用 Python 运行同样的搜索？

用任意 HTTP 客户端即可。使用 `requests` 时，把参数作为字典传入，密钥放在请求头里。`raise_for_status()` 会把错误响应（例如密钥错误时的 `401`）转成可捕获的异常。

*Python 3.9+ 配合 requests*

```python
import os

import requests

API_URL = "https://serpcrypto.com/api/v1/search"
API_KEY = os.environ["SERPCRYPTO_API_KEY"]

response = requests.get(
    API_URL,
    params={"q": "best espresso grinder", "gl": "us", "hl": "en"},
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=60,
)
response.raise_for_status()
data = response.json()

print("credits used:", data["search_metadata"]["credits_used"])
for result in data.get("organic_results", [])[:3]:
    print(result["position"], result["title"], result["link"])
```

## 那 Node.js 呢？

Node.js 18 及更高版本自带 `fetch`，因此无需安装任何包。把文件保存为 `.mjs` 扩展名，以便在顶层使用 `await`，然后运行 `node first-search.mjs`。

*Node.js 18+，使用内置的 fetch*

```javascript
// first-search.mjs (Node.js 18 or later: fetch and top-level await are built in)
const API_URL = "https://serpcrypto.com/api/v1/search";
const params = new URLSearchParams({ q: "best espresso grinder", gl: "us", hl: "en" });

const response = await fetch(`${API_URL}?${params}`, {
  headers: { Authorization: `Bearer ${process.env.SERPCRYPTO_API_KEY}` },
});
if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
const data = await response.json();

console.log("credits used:", data.search_metadata.credits_used);
for (const result of (data.organic_results ?? []).slice(0, 3)) {
  console.log(result.position, result.title, result.link);
}
```

## 如何查看我还剩多少积分？

用同一个密钥调用 `GET https://serpcrypto.com/api/v1/credits`。该接口免费，返回三个数字：剩余积分、今日已用积分，以及你的账户可同时运行的查询数。每个账户可同时运行固定数量的查询；该限制显示在你的 dashboard 中，并可按需提高。

*查看你的积分*

```bash
curl -s "https://serpcrypto.com/api/v1/credits" -H "Authorization: Bearer $SERPCRYPTO_API_KEY"
```

*回答（示例值）*

```json
{
  "credits_remaining": 84210,
  "credits_used_today": 1290,
  "concurrency_limit": 10
}
```

## 搜索会返回什么？

所有引擎的回答都采用同一套框架。`search_metadata` 说明搜索是否成功，以及消耗了多少积分。`search_parameters` 重复实际生效的设置（含默认值）。之后是结果页每个区块对应的一个数组或对象，例如 `organic_results` 或 `people_also_ask`。

区块只在页面出现时才会返回，因此读取时请带上默认值。[响应格式](https://serpcrypto.com/zh/docs/response/)页面说明了每个区块和字段。

*Google 回答的结构（已精简，示例值）*

```json
{
  "search_metadata": { "id": "srch_7f3a9c2e41b8", "status": "success", "engine": "google", "credits_used": 1 },
  "search_parameters": { "engine": "google", "q": "best espresso grinder", "gl": "us", "hl": "en", "page": 1 },
  "search_information": { "total_results": 18600000, "query_displayed": "best espresso grinder" },
  "organic_results": [ { "position": 1, "title": "…", "link": "https://www.example.com/…", "snippet": "…" } ],
  "people_also_ask": [ { "question": "…", "snippet": "…", "link": "https://www.example.org/…" } ],
  "related_searches": [ { "query": "best espresso grinder under 300" } ],
  "pagination": { "current": 1, "next_page": 2 }
}
```

## 我最先会用哪些参数？

带默认值和允许值的完整列表见 [API 参考](https://serpcrypto.com/zh/docs/search/)。

| 参数 | 示例 | 作用 |
| --- | --- | --- |
| `q` | `best espresso grinder` | 查询词，就像人平时输入的那样。必填。 |
| `engine` | `google_news` | 要搜索的引擎和垂直领域。默认 `google`。 |
| `gl` | `de` | 结果所在国家/地区，两个字母。默认 `us`。 |
| `hl` | `de` | 界面语言。默认 `en`。 |
| `location` | `Austin, Texas, United States` | 用于本地结果的市级地点。 |
| `device` | `mobile` | `desktop`（默认）或 `mobile` 结果。 |
| `page` | `2` | 结果页码，1 到 10。每页消耗 1 积分。 |

## 一次搜索要花多少积分，什么时候免费？

1 积分 = 1 次成功的查询请求，可在任意支持的引擎上返回一页结果。失败的请求不计费。每页约 10 条自然结果，这是 Google 自 2025 年 9 月起不再支持 num=100 后的返回方式；每多一页就多消耗 1 积分。因参数错误、密钥错误、余额为空或账户繁忙而被拒绝的请求同样免费，对积分接口的每次调用也免费。

截至 2026 年 10 月，价格从 10,000 次搜索 的 US$7.50 到最大积分包的 US$0.30/千次搜索。预付的搜索积分永不过期：未使用的查询会一直留在你的账户中，直到你使用它们。[错误页面](https://serpcrypto.com/zh/docs/errors/)列出了每个错误码以及正确的重试方式。

## 接下来去哪里？

- [API 参考：GET /search](https://serpcrypto.com/zh/docs/search/) — 所有参数、默认值和错误
- [响应格式](https://serpcrypto.com/zh/docs/response/) — JSON 的每个区块和字段
- [地区与语言](https://serpcrypto.com/zh/docs/locations/) — gl、hl、location、device
- [错误与重试](https://serpcrypto.com/zh/docs/errors/) — 错误码、原因、退避
- [Python](https://serpcrypto.com/zh/docs/python/) — 请求、httpx async、CSV 导出
- [Node.js](https://serpcrypto.com/zh/docs/node/) — fetch、并发池、分页
- [curl 和 jq](https://serpcrypto.com/zh/docs/curl/) — 一行命令示例
- [MCP server](https://serpcrypto.com/zh/docs/mcp/) — 在 Claude Desktop 和 Cursor 中进行网页搜索
- [LangChain 和 LlamaIndex](https://serpcrypto.com/zh/docs/langchain/) — 面向 agent 的搜索工具
- [OpenAI function calling](https://serpcrypto.com/zh/docs/openai/) — 工具 schema 和调用循环

## 快速上手问题

### SerpCrypto 有官方 SDK 吗？

不需要。文档提供了可直接复制粘贴的 Python、Node.js 和 curl 代码，直接调用 HTTPS endpoint，所以没有需要安装或持续更新的包。任何带 HTTP client 的语言用法都一样：一次 GET 请求、一个 header、一个 JSON 响应。

### 我可以把 API 密钥放在 URL 里吗？

可以。`api_key=YOUR_KEY` 可以作为查询参数使用，方便在浏览器里快速测试。在代码中，建议优先使用 `Authorization: Bearer` header：URL 出现在日志、浏览器历史记录和分享截图里的频率比 header 高得多。

### 我需要 KYC 或信用卡吗？

不需要。SerpCrypto 不要求 ID、自拍、证件，也不要求银行卡。使用账号登录；邮箱为选填。你使用 BTC, USDT, USDC, ETH, SOL, LTC 支付，最低充值 US$25。

### 我可以在购买大额 pack 之前先测试吗？

无免费套餐：请用最小的积分包进行测试，从最低充值金额中支付；仅为达到最低充值金额而额外补足的部分，如未使用，可在 30 天内申请退还，以 USDT 或 USDC 支付。最小的 pack 和最大的 pack 使用同一个 endpoint 和同样的引擎，所以用小 pack 测试就能知道生产环境会是什么样子。

---

SerpCrypto: SerpCrypto 是面向开发者和 AI Agent 的 SERP API，可将 Google 和 Bing 搜索结果以 JSON 返回，用加密货币支付，无需上传证件。预付费搜索积分自 US$0.30/千次搜索 起永不过期。无需 KYC——无需证件、无需自拍、无需材料。加密货币支付。
