MH MediaHarvester Web Context API

Crawl

Crawl Website

Give MediaHarvester one starting URL and get back the pages your workflow actually needs, with crawl depth, source URL and status preserved for every result.

POST /v1/web/crawl

What you get

Developer-ready output for Crawl Website

01 Markdown for every successful page
02 Depth, page and URL regex controls
03 Per-page status and crawl depth
04 Same-domain and subdomain options

Real workflows

Where teams use Crawl Website

These examples map to the endpoint's current inputs and outputs—not hypothetical platform features.

Refresh a RAG knowledge base

Crawl product docs or a help center on a schedule, then index the returned Markdown with each page URL attached.

OutcomeFresh retrieval context without maintaining a custom crawler.
Inventory a site before migration

Enumerate pages, depth and status before a CMS rebuild so content teams know what exists and what failed.

OutcomeA concrete migration checklist instead of a manual spreadsheet.
Build repeatable research jobs

Collect a bounded set of same-domain pages for account research, due diligence or competitive review.

OutcomeConsistent source material with crawl limits you can enforce.

How it works

4 concrete steps from input to result

1

POST a starting URL

2

Discover links and sitemap URLs

3

Scrape each allowed page

4

Return results with metadata

API response

Fields developers usually wire first

Turn a public or authorized website into a structured set of source-aware pages for search, RAG, migration audits and research pipelines.

results[].url results[].markdown results[].depth metadata.numSucceeded
curl.exe -H "X-API-Key: YOUR_API_KEY" "http://127.0.0.1:8013/v1/web/crawl"

Developer FAQ

Common questions about Crawl Website

12 answers
How do I limit a crawl?

Use maxPages, maxDepth and urlRegex together. That keeps the crawler focused on docs, pricing, blog or another path family instead of following every internal link.

Can I crawl subdomains?

Yes, enable followSubdomains when the job should move from a root domain to docs, help or app subdomains. Keep it off when you only want the starting host.

Is the crawl synchronous?

Small crawls can return immediately. Larger crawls should be treated as jobs so your app can poll status, store partial output and retry failed pages safely.

What endpoint should I call for Crawl Website?

Use POST /v1/web/crawl. Local development accepts the X-API-Key header with YOUR_API_KEY, and production clients can use the same shape with their own key.

Can I call it from CLI, SDK, MCP and no-code tools?

Yes. The same endpoint can be called with curl, the TypeScript SDK, Python SDK, MCP server, Zapier, Make, n8n, Google Sheets or Excel workflows where appropriate.

How does caching with maxAgeMs work?

When maxAgeMs is supported, a cached response can be reused if it is younger than the requested freshness window. Set maxAgeMs to 0 when you need a fresh scrape or extraction.

What happens when a page is blocked or requires login?

The API returns clear states such as blocked, verification_required, login_required, robots_disallowed or permission_required. It does not promise to bypass access controls.

Which response fields should I store?

Most integrations store results[].url, results[].markdown, results[].depth, metadata.numSucceeded, plus source URL, status, confidence and timestamp fields when present. Keep source metadata so users can audit values later.

Can I batch this endpoint?

For local or small workflows, loop over a list of URLs or domains. For larger jobs, use crawl, batch workflow endpoints or a queue so failures and retries are tracked cleanly.

How should I handle errors in production?

Check success, HTTP status, error.type and retryable flags. Retry timeouts and temporary network failures, but do not retry robots, login or permission errors without changing input or authorization.

Does the API work with JavaScript-heavy sites?

The engine router starts with fast fetching and escalates when content quality is low. Browser-style rendering is used where available, while access-control barriers are reported explicitly.

Is this safe to use with customer data?

Send only domains, URLs or fields your workflow needs. Use retention controls for generated artifacts and avoid storing unnecessary raw HTML, screenshots or extracted personal data.

Related data APIs

Build the next step in the workflow