快速开始
在你的控制台免费获取密钥。每月赠送 3,000 点额度,无需绑卡。把密钥放进 x-api-key 请求头,调用一个接口即可。
下面就是实际返回的数据。选择一个接口,查看一次真实的近期响应(此处电话已打码,API 会完整返回):
每次成功搜索只扣 1 点额度,无论返回多少条结果。地图是唯一例外,按返回的每家商家计 1 点额度。空结果搜索免费,购买的额度永不过期。每个响应都是同一套稳定的 JSON 结构,且与 serper 保持一致,因此你可以把现有代码直接指向我们,无需改写解析器。
| 额度 | 价格 | 每 1,000 次 |
|---|---|---|
| 每月 3,000 | 免费,无需绑卡 | $0 |
| 25,000 | $49 | $1.96 |
| 100,000 | $149 | $1.49 |
| 500,000 | $549 | $1.10 |
| 2,500,000 | $1,999 | $0.80 |
额度包最高可达 2.5 亿点,售价 $100,000,即每 1,000 次 $0.40。价格不含税。
一个接口,一个参数即可选择 Google 数据面。改变 type,其余保持不变。
你可以请求的数据面:
| type | 返回内容 |
|---|---|
web | Google 网页搜索:自然结果、大家还在问、相关搜索 |
maps | 本地商家:名称、地址、电话、网站、评分、评论数 |
places | 单个地点,采用精简、与 serper 完全一致的结构 |
news | Google 新闻:标题、来源、日期,以及一张真实的主图 |
shopping | Google 购物商品,含价格和卖家 |
images | Google 图片结果 |
videos | Google 视频,含直连缩略图 |
scholar | Google 学术论文与引用 |
patents | Google 专利结果 |
autocomplete | 针对查询的 Google 自动补全建议 |
webpage | 把任意网址转成干净的文本、元数据和 JSON-LD,可直接喂给 AI(RAG) |
lens | 以图搜图:传入图片 url,即可获得该图片出现的网页,含标题和链接 |
reviews | 某商家的 Google 评论,支持排序和分页 |
常用参数
| param | 作用 |
|---|---|
q | 你的搜索查询。大多数数据面必填。 |
gl | 国家代码,如 us 或 gb。 |
hl | 语言代码,如 en。 |
location | 搜索的所在地,用于 maps 和 places,如 Miami, FL。 |
limit | 用于 type=maps:返回多少家商家。默认 20,最多 100。 |
num | 用于 type=reviews:每页返回多少条评论。默认 20,最多 50。用于 type=images:返回多少张图片。不填则返回全部,通常约 99 张。 |
num | 用于 type=reviews:每页返回多少条评论。最多 50。 |
page | 返回第几页结果。 |
完整的机器可读规范在 /v1/openapi.json。把你的工具或智能体指向它即可。
通过第二个接口获取公开的、无需登录的 LinkedIn 数据,结构同样干净。用 type 选择你要的内容,传入个人主页或公司网址(或关键词),约一秒即可拿回 JSON。
你可以请求的类型:
命名只有一条规则:单数取你指定的那一个,复数查找多个。person 接收一个网址并返回那个人;people 接收关键词并返回一份列表。job 和 jobs 同理。旧的名称(profile、search)依然与以往完全一致,且将永久保留。
| type | 输入 | 返回内容 |
|---|---|---|
person | 一个 /in/ 网址 | 完整的公开主页:姓名、标题、简介、所在地、粉丝数、人脉数、工作经历、教育经历和技能。profile 是同一个东西,且继续可用。 |
people | 一个姓名,或一个职业 | 两种方式查找人物。给出姓名(keywords=bill gates,可选 location=Canada)最多返回 50 条匹配。或给出职业(title=accountants,可选 location=Chicago, IL)查找提供该服务的人,并附上每个人列出的服务项。search 是同一个接口,且继续可用。 |
company | 一个 /company/ 网址 | 公司信息:行业、规模、员工数、总部、网站、专长、相似公司 |
job | 一个职位网址 | 单个职位的完整详情:职位名称、公司、资历级别、描述(纯文本和 HTML)、职能、结构化地点、薪资(如有标明),以及该职位是否仍在招聘 |
jobs | 关键词(可加地点) | 职位搜索结果。每一行的字段与 job 相同。 |
posts | 个人主页或公司网址 | 个人或公司的近期动态:正文、点赞数、日期、类型和链接。加上 comments=true 可获取评论内容。 |
refresh | 一个 /in/ 网址 | 快速新鲜度检查:姓名、当前公司和学校(含数字 ID),以及主页是否可访问。专为大规模保持数据库最新而设计。主页无法访问时不计费。 |
参数
| param | 作用 |
|---|---|
url | LinkedIn 网址,用于 profile、company 和 posts。 |
keywords | 搜索内容。type=search 必填。在 type=jobs 上可选—完全不带关键词、只传筛选条件,就能得到所有匹配的职位。 |
sortBy | 在 type=jobs 上,结果默认按最新排序。传入 sortBy=relevance 可使用 LinkedIn 自己的相关性排序。 |
location | 用于 type=jobs 的可选地点筛选。多个地点用分号分隔(location=London;Berlin)或重复该参数。用分号而不是逗号,这样像 New York, NY 这样的地点才能保持完整。每次调用最多 3 个地点。在 type=search 上,它把姓名搜索限定到某个国家(例如 location=Canada)。 |
company | 在 type=jobs 上:只返回该公司的职位。可传公司名、/company/ 网址或数字 ID。 |
title | 在 type=people 上:按职业查找人物,例如 title=accountants 或 title=real estate agents。搭配 location 指定单个城市(Chicago, IL);不填地点则在全国范围和多个城市中搜索,以凑足你请求的数量。职业取自 LinkedIn 自己的服务类别,因此未知的职业会返回空结果,而不是错误的猜测。profession 是可接受的别名。 |
postedWithin | 在 type=jobs 上:24h、week 或 month。 |
employmentType | 在 type=jobs 上:Full-time、Part-time、Contract、Temporary、Internship、Volunteer 或 Other。用逗号分隔多个值(employmentType=Full-time,Contract)可匹配其中任意一个。 |
seniority | 在 type=jobs 上:Internship、Entry level、Associate、Mid-Senior level、Director、Executive 或 Not Applicable。用逗号分隔多个值可匹配其中任意一个。 |
daysSincePostedMin / daysSincePostedMax | 在 type=jobs 上:按职位发布至今的天数筛选。每个职位还会返回 postedAgeText 以及一个 postedDaysMin/postedDaysMax 区间,因为 LinkedIn 公布的是分档的时长("2 weeks ago")而非精确日期。该区间经过校准,因此上下界是真实的。 |
titleInclude | 在 type=jobs 上:只保留标题包含其中任意一项的职位。用逗号分隔(titleInclude=engineer,developer)。 |
titleExclude | 在 type=jobs 上:剔除标题包含其中任意一项的职位。用逗号分隔(titleExclude=senior,staff)。排除优先于包含。 |
descriptionKeywords | 在 type=jobs 上:只保留标题或描述包含其中任意一项的职位。用逗号分隔。 |
locationExclude | 在 type=jobs 上:剔除这些地点的职位。用分号分隔,因为地名里含有逗号(locationExclude=New York, NY;Austin, TX)。 |
hasRecruiter | 在 type=jobs 上:true 只保留标明了可联系人的职位,false 只保留没有标明的职位。这类职位还会返回一个 jobPoster 对象,含该联系人的姓名、标题和主页网址。LinkedIn 大约每五个职位公布一个发布者。 |
count | 在 type=jobs 上:count=true 只返回 totalAvailable—有多少职位匹配你的筛选条件—而不返回具体行。它是免费的;响应中带有 charged: 0。用它在正式运行前先估算搜索规模。 |
num / limit | 返回多少条结果;两种写法都可用。jobs 默认 25(最多 100),posts 默认 50(最多 100),search 默认 10(最多 15),people 默认 10(最多 50)。 |
email | 在 type=profile 上设置 email=true,可增加 workEmail、emailStatus(verified、pattern-likely 或 unknown)和 emailConfidence。 |
domain | 配合 email=true:如果你已经知道公司网站(如 acme.com),可以传入。 |
companyId | 在 type=profile 上设置 companyId=true,可为工作经历加上 LinkedIn 的数字公司 ID。schoolId=true 对教育经历同理。 |
schema | 在 profile 或 company 上设置 schema=scrapin,即可获得 ScrapIn 结构的响应,让现有流水线无需改动即可接入。 |
employees=true | 在 type=company 上:同时返回部分员工样本。 |
comments=true | 在 type=posts 上:同时抓取评论内容。动态正文、评论数、反应类型和图片默认即会返回。 |
enrich=true | 在 type=search 上:为找到的每个人返回完整主页,而不只是摘要。 |
额度
每次成功调用扣 1 点额度,与 API 其余部分一致。唯一例外是带增强的人物搜索(type=search&enrich=true):由于每条结果都以完整主页返回,因此按返回的每个主页计 1 点额度,与你直接抓取这些主页的花费完全相同。私密或受限页面返回空结果,且免费。
批量列表与 webhook
当你手上是一份列表而不是单个网址时,把整份列表放进一个请求里发送。批量支持 person、refresh、company 和 posts—person、refresh 和 posts 用 /in/ 网址,company 用 /company/ 网址。每一行都在我们这边并行抓取,结果按你发送的顺序返回,其中一行失效绝不会拖垮其余各行。短暂的波动会自动重试,因此你的列表会干净地返回。计费方式不变:按返回真实数据的行数付费,返回为空或无法访问的行免费。
这种方式一次往返最多可处理 100 个网址。响应是一个按你输入顺序排列的数组,每一行要么带有 data,要么带有各自的 error。
异步搭配 webhook,最多 10,000 行
对于更大的列表,加上一个 webhook 网址。我们会立即返回一个任务 ID,在后台处理,并在批量完成时把完整结果 POST 到你的 webhook。我们只保留计数,绝不保留你的结果。
你会立即拿回 202 和一个 jobId。批量完成后,你的 webhook 会收到一次 POST,负载与同步调用返回的相同,另外附上 jobId。请求头 X-Crustapi-Job 携带任务 ID,方便你匹配每次投递。如果你的接口宕机,我们会重试一次,你也随时可以自己查询进度:
状态查询只返回计数:多少行、多少成功、多少被计费,以及 webhook 是否已投递。你的数据存放在你的 webhook 那里,不在我们这边。
值得注意的细节
| 规则 | 工作方式 |
|---|---|
| 类型 | refresh(推荐用于保持数据库最新)、person(即 profile)、company 或 posts。person、refresh 和 posts 用 /in/ 网址,company 用 /company/ 网址。 |
| 上限 | 同步调用每次最多 100 个网址,带 webhook 的异步调用每次最多 10,000 个。 |
| 可靠性 | 任意一行遇到短暂拦截都会自动重试,因此一次不稳定的抓取通常仍能带回数据,而不是报错。 |
| 计费 | 每返回数据的行扣 1 点额度。无法访问的行免费。格式错误的网址算作错误行,绝不计费。 |
| 顺序 | 结果始终与你的输入顺序一致,可以直接对应拼接到你的行上。 |
| Webhook 规则 | 公开的 https 网址,其中不含任何凭据。我们只 POST 一次 JSON,失败重试一次,且不跟随任何重定向。 |
| 隐私 | 异步结果投递后即被遗忘。我们只存储计数,不存储内容。 |
CLI
更喜欢用终端?安装 CLI,就能在你的 shell 里拿到同样的数据,可选 JSON 或 CSV。
输出默认是 JSON,可以干净地管道传递,状态行输出到 stderr,因此你的管道不会被污染。加上 --csv 即可输出 CSV。它已发布在 npm 上,名为 crustapi-cli。
面向 AI 助手的 MCP
为 Claude Desktop、Cursor、Cline 或任意 MCP 客户端提供实时 Google 数据。无需安装,npx 会直接运行。把下面这段加入你的客户端配置并重启即可。
会出现三个工具。search 用一次调用覆盖整个菜单,scrape_webpage 把任意网址转成可直接喂给 AI 的干净文本(RAG),get_reviews 拉取某商家的 Google 评论。该包已发布在 npm 上,名为 crustapi-mcp。
集成
CrustAPI 只是一个 HTTP 接口,因此可以接入任何能调用网址的工具。下面是大家问得最多的平台的复制即用配置。
Clay
用实时 Google 数据丰富任意 Clay 表格。添加一个 HTTP API 增强列,并把它指向这里。
把某个表格列映射到 {{Company}}(或任意查询),然后把 places[0].website、places[0].phone、places[0].reviewsCount 等字段拉进列中。把 type=maps 换成 web、news 或 reviews,就能用 Google 已知的任何内容做增强。
任意 HTTP 节点(n8n、Make、Zapier、Retool)
到处都是同样的思路:向 /v1/search 发起 GET 请求,把密钥放进 x-api-key 请求头,就能得到可映射到字段的干净 JSON。无需 SDK。
AI 智能体框架
LangChain、CrewAI、Haystack 和 LlamaIndex 都原生支持加载 MCP 服务器,因此上面的 MCP 配置能让 CrustAPI 成为其中任意一个框架里的工具。原生软件包已经发布:PyPI 上的 langchain-crustapi 和 npm 上的 n8n-nodes-crustapi。其他需求请发邮件到 support@crustapi.com。
智能体支付(x402)
你的智能体无需注册、无需绑卡、无需密钥就能开始。它可以用 x402(开放的 HTTP 支付标准)自行购买额度。如果你的智能体框架已经支持 x402,那么你无需写任何额外代码就能用上。
下面是完整的握手流程。
- 你的智能体在不带密钥的情况下调用
POST /v1/x402/topup?pack=agent。 - 我们返回
402 Payment Required,附上金额、付款地址,以及 Base 上的 USDC 合约。 - 智能体的钱包签署一份免 gas 的 USDC 授权(EIP-3009),并带着签名再次发送请求。
- 我们在链上验证并结算,然后返回一个已经充好额度的真实 API 密钥。
从这里开始,这个密钥就和其他密钥一样。智能体调用 /v1/search,花掉它刚买的额度。
402 质询
不带密钥调用充值接口,你就会拿回付款条款。
付款之后
你的 x402 客户端签署授权并重试。我们完成结算,返回一个可立即使用的密钥。
有几点值得了解:
- 付款使用 Base 上的 USDC,且免 gas。你的智能体签署一份授权,因此无需持有 ETH 来支付 gas。
- agent 套餐是首充 $5 换 2,500 点额度。更大的套餐运作方式相同,随着用量增长,只需传入不同的 pack。
- 通过 x402 付款获得的额度与用银行卡购买的额度完全相同。每次成功搜索扣 1 点额度,空结果免费。
询问你的 AI
还有疑问?复制这份包含详细产品说明的 md 文件,拿去问你的智能体。
智能体可以直接在 crustapi.com/llms.txt 获取它。
遇到这里没写到的问题?发邮件到 support@crustapi.com,会有真人回复。