Web Scraping 抓取页面 API
抓取任意网页,以干净的 Markdown 返回其主要内容,并附带标题和元数据。
US$0.70/千次请求,按请求付费,无需订阅。
Introducing Example 2.0
Everything new in the biggest Example release yet.
Today we are shipping the biggest release in our history…
{"url": "https://www.example.com/blog/launch","title": "Introducing Example 2.0","description": "Everything new in the biggest Example release yet.","markdown": "# Introducing Example 2.0\n\nToday we are shipping the biggest release in our history…","html": string,"language": string,"rawHtml": string,"statusCode": integer}
抓取路由
我们把每个页面交给真正能抓取它的最便宜的抓取器。
- 最便宜的抓取器每个页面都从这里开始
- 下一个抓取器仅当页面拦截上一个时
- 完整浏览器仅用于最难抓取的页面
价格按每 1,000 个页面计
- AnyAPI98/100US$1.05
Firecrawl90/100US$3.97Hobby 套餐
Bright Data81/100US$1.50
Jina Reader55/100US$0.73Cloudflare Browser Rendering48/100最多 US$0.10+ US$5/月套餐
100 个页面,每个只试一次,测于 2026年10月1日查看每个页面 →
价格与服务商
Web Scraping 抓取页面 API 价格:一个 API,5 个可互换的服务商
最便宜的服务商优先响应。如果它失败,下一个会在同一次调用中接手。
“被拦截”指网站本身拒绝返回页面的调用占比,不计入可用率。第一个之后的每个提供方只会收到前面提供方失败的页面,也就是更难抓取的网站,因此这些数字并非直接对比。
试一试
一个请求获取 Web Scraping 抓取页面
这个示例展示了 11 个字段中的 6 个。查看全部字段
{
"found": true,
"data": {
"url": "https://www.example.com/blog/launch",
"title": "Introducing Example 2.0",
"description": "Everything new in the biggest Example release yet.",
"markdown": "# Introducing Example 2.0\n\nToday we are shipping the biggest release in our history…"
}
}完整的参数与响应参考:这个接口的每个字段、类型和示例。
参考
一个请求,一种响应结构。
你发送的每个字段和收到的每个字段,都附有真实示例。
最近验证于 2026-11-14 · 可用率和延迟按 30d 统计
请求体
JSON,POST 到这个接口。
- urlstring
https://www.example.com/blog/launch
The full web address of the page to scrape, including its domain, for example https://example.com. The https:// prefix is optional.
- blockAdsboolean
为 true 时(上游默认值),在抓取前移除广告和 Cookie 同意弹窗元素。设为 false 则保留。
- excludeTagsarray
抓取前要移除的 CSS 选择器(例如 ["nav", "footer", ".ads"])。在 includeTags 之后应用。
- formatsarray
要返回页面的哪些表示形式。可任意组合:markdown(以 Markdown 表示的页面内容)、html(浏览器收到的原样页面 HTML,包括 head 和 script 标签)。每种请求的格式都在对应的输出字段中返回。默认两者都返回。rawHtml 是 html 的已弃用别名,为改名前接入的调用方在 rawHtml 字段中返回;请改为发送 html。
- includeTagsarray
要保留的 CSS 选择器。设置后,只抓取匹配这些选择器的内容(例如 ["article", "main"] 或 ["#content"])。
- mobileboolean
为 true 时,使用移动端视口和 user agent 渲染页面,而不是桌面端。有些网站向移动端提供的内容有实质差异。
- onlyMainContentboolean
为 true 时,只返回正文主体内容,去掉导航、页眉、页脚等模板内容。默认为 false,抓取整个页面。
- requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `statusCode`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a record that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. A source that reports a field only in some cases, such as only when the website answered with an error, does not count as returning it.
- waitForinteger
Milliseconds to wait for the page to finish rendering before capture. Use this for JavaScript-heavy pages or single-page apps whose content loads after the initial paint. Capped at 15000 to stay within the request timeout. This wait is time you asked us to spend, so your response takes this much longer, and it is excluded from the latency published for this endpoint. If every provider that can wait fails, the page may still be returned, captured without the wait.
响应
JSON,每个字段一个示例值。
- descriptionstring
Everything new in the biggest Example release yet.
The page meta description.
- htmlstring
The page HTML exactly as the browser received it, head and script tags included. Present when 'html' is among the requested formats (the default).
- languagestring
Two-letter language code the page declares (its html lang attribute or the equivalent metadata).
- markdownstring
# Introducing Example 2.0 Today we are shipping the biggest release in our history…
The page content as clean Markdown. Present when 'markdown' is among the requested formats (the default). Populated whenever the provider has data for the entity.
- rawHtmlstring
The same bytes as 'html'. Deprecated alias returned only when 'rawHtml' is among the requested formats; use 'html'.
- statusCodeinteger可设为必填
HTTP status code the website answered with, such as 200, 404 or 500. Absent when it could not be determined. Some sources report it only when the website answered with an error; name `statusCode` in requireFields to be served only by a source that always reports it.
- titlestring
Introducing Example 2.0
The page title from its metadata.
- urlstring
https://www.example.com/blog/launch
The canonical source URL of the scraped page. Populated whenever the provider has data for the entity.
- foundboolean
true
- reason"not_found"
Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
常见问题
关于 Web Scraping 抓取页面 API
AnyAPI 的 Web Scraping 抓取页面 API 只需一次 POST 请求 /v1/run/web.scrape,就以统一格式的 JSON 返回 Web Scraping 数据。抓取任意网页,以干净的 Markdown 返回其主要内容,并附带标题和元数据。AnyAPI 会在 5 个数据源之间路由每个请求,某个数据源失败时自动切换。费用:每千次请求 US$0.70 起,以美元计价,无需订阅,也没有每月最低消费。过去 30 天,通过 AnyAPI 发起的 Web Scraping 抓取页面 API 调用中有 99.2% 成功,响应时间中位数为 2.7 秒,共测量 477,059 次调用。