scrape
一次抓取即可完成的统一多格式提取。对同一次页面加载请求 markdown、HTML、原始 HTML、纯文本、链接、元数据、截图或 JSON——所有请求的格式都由同一次抓取提供,某个格式失败时会以警告形式返回,而不会让整次调用失败。
使用场景
一次调用替代四次
在一次请求中拿到页面的 markdown、链接和元数据,无需串联 fetch_url、extract_links 和 extract_metadata。
可直接喂给 LLM 的 markdown
开启 onlyMainContent 并请求 markdown,把干净、无模板噪声的页面文本直接送入 RAG 流水线或提示词。
存档快照
同时请求 rawHtml 和 screenshot,一次性捕获页面的机器可读状态和视觉状态。
有韧性的流水线
按格式返回的 warnings 让部分结果得以通过——截图失败不会丢掉你已经付费拿到的 markdown。
Endpoint
/api/v1/tools/scrapeParameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Required | - | 要抓取的 URL(必须包含协议:http:// 或 https://) Example: https://example.com |
formats | array | Optional | ["markdown"] | 要返回的输出格式。可选一个或多个:`markdown`、`html`、`rawHtml`、`text`、`links`、`metadata`、`screenshot`、`json-schema`。 Example: ["markdown", "links", "metadata"] |
onlyMainContent | boolean | Optional | true | 剥离导航、页眉和页脚,只返回正文主体内容。 Example: true |
请求示例
cURL
curl -X POST https://crawlforge.dev/api/v1/tools/scrape \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"formats": ["markdown", "links", "metadata"],
"onlyMainContent": true
}'TypeScript
const response = await fetch('https://crawlforge.dev/api/v1/tools/scrape', {
method: 'POST',
headers: {
'X-API-Key': process.env.CRAWLFORGE_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://example.com',
formats: ['markdown', 'links', 'metadata'],
onlyMainContent: true,
}),
});
const data = await response.json();
if (data.success) {
console.log('Markdown:', data.data.markdown);
console.log('Links found:', data.data.links.length);
console.log('Title:', data.data.metadata.title);
// A 200 with warnings is a PARTIAL success — some formats came back, others didn't.
if (data.data.warnings.length > 0) {
console.warn('Partial result:', data.data.warnings);
}
console.log('Credits used:', data.credits_used);
console.log('Credits remaining:', data.credits_remaining);
} else {
console.error('Error:', data.error);
}Python
import requests
import os
response = requests.post(
'https://crawlforge.dev/api/v1/tools/scrape',
headers={
'X-API-Key': os.environ['CRAWLFORGE_API_KEY'],
'Content-Type': 'application/json',
},
json={
'url': 'https://example.com',
'formats': ['markdown', 'links', 'metadata'],
'onlyMainContent': True
}
)
data = response.json()
if data['success']:
print(f"Markdown: {data['data']['markdown']}")
print(f"Links found: {len(data['data']['links'])}")
print(f"Title: {data['data']['metadata']['title']}")
# A 200 with warnings is a PARTIAL success — some formats came back, others didn't.
if data['data']['warnings']:
print(f"Partial result: {data['data']['warnings']}")
print(f"Credits used: {data['credits_used']}")
print(f"Credits remaining: {data['credits_remaining']}")
else:
print(f"Error: {data['error']}")响应示例
{ "success": true, "data": { "url": "https://example.com", "onlyMainContent": true, "formats": [ "markdown", "links", "metadata" ], "markdown": "# Example\n\nMain content scraped from https://example.com.", "links": [ "https://example.com/about", "https://example.com/pricing" ], "metadata": { "title": "Example", "description": "Page at https://example.com" }, "warnings": [] }, "credits_used": 2, "credits_remaining": 998, "processing_time": 412}data.formats回显本次请求的格式列表data.markdown转换为 markdown 的正文内容(请求 `markdown` 时出现)data.links页面上发现的所有链接(请求 `links` 时出现)data.metadata标题、描述和 meta 标签(请求 `metadata` 时出现)data.warnings每个无法生成的格式对应一条记录。空数组表示所有请求的格式都成功了。credits_used本次请求扣除的 credits(每次抓取 2 credits,与格式数量无关)credits_remaining你剩余的 credits 余额错误处理
输入无效(400 Bad Request)
URL 格式无效,或 formats 中包含受支持列表之外的值。传入该字段时至少需要一种格式。
URL 被拦截(403 Forbidden)
目标解析到私有、内网或链路本地地址,被 SSRF 防护拒绝。只能抓取公网可访问的 URL。
credits 不足(402 Payment Required)
你的账户 credits 不足。购买更多 credits 或升级你的计划。
超出速率限制(429 Too Many Requests)
你已超出所在计划的速率限制。稍等片刻,或升级你的计划以获得更高上限。
data.warnings。返回 200 但 warnings 非空,说明部分格式成功、部分未成功——应当按部分成功处理,而不是失败。credits 成本
Free 计划: 1,000 个一次性 credits = 500 次请求
Hobby 计划: 每月 5,000 credits = 2,500 次请求(19 美元/月)
Professional 计划: 每月 50,000 credits = 25,000 次请求(99 美元/月)
Business 计划: 每月 250,000 credits = 125,000 次请求(399 美元/月)