SurfSense/surfsense_web/content/docs/connectors/native/web-crawl.mdx
2026-07-06 19:26:35 -07:00

58 lines
2.6 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Web Crawl
description: Scrape any page or crawl a whole site into clean markdown
---
The web crawler fetches one or more pages — or spiders a whole site — and returns each page as clean markdown, plus metadata, every link with its anchor text, and harvested contact signals (emails, phone numbers, social profiles). JS-rendered pages are loaded in a real browser and auto-scrolled, so lazy-loaded listings are captured too.
## Endpoint
```bash
POST /api/v1/workspaces/{workspace_id}/scrapers/web/crawl
```
## Inputs
| Field | Default | Description |
|-------|---------|-------------|
| `startUrls` | required | 120 seed URLs |
| `maxCrawlDepth` | `0` | Link-hops to follow from each seed. `0` = fetch only the seeds; `1` = also the pages they link to; up to 5. The spider stays on the seed's site |
| `maxCrawlPages` | `10` | Total pages fetched per call, seeds included (max 200) |
| `maxLength` | `50000` | Max characters of markdown kept per page |
| `includeUrlPatterns` | — | Regexes a discovered link must match to be followed (empty = follow every same-site link) |
| `excludeUrlPatterns` | — | Regexes that exclude links from being followed (wins over include) |
## Example
Scrape a single page:
```bash
curl -X POST "$BASE_URL/api/v1/workspaces/1/scrapers/web/crawl" \
-H "Authorization: Bearer $SURFSENSE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "startUrls": ["https://example.com/pricing"] }'
```
Crawl a site's blog, two hops deep:
```bash
curl -X POST "$BASE_URL/api/v1/workspaces/1/scrapers/web/crawl" \
-H "Authorization: Bearer $SURFSENSE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"startUrls": ["https://example.com/blog"],
"maxCrawlDepth": 2,
"maxCrawlPages": 50,
"includeUrlPatterns": ["/blog/"]
}'
```
## Output
One item per fetched page (in crawl order) with its markdown, metadata (title, description), crawl provenance (depth, referrer), links classified as internal/external/social/email/tel, and page-level contacts. The response also includes a site-wide `contacts` summary that deduplicates every email, phone, and social profile found — `siteWide: true` marks header/footer values (the company's own contacts) versus page-local finds like individual team members.
Contact details often live on about/contact/privacy pages, so crawl with `maxCrawlDepth >= 1` to surface them — useful for lead generation and competitive intelligence.
Billing is per successfully fetched page.
For the full input and output JSON schemas and generated code snippets in your language, open **API Playground → Web → Crawl** in your workspace.