crw-scrape — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited crw-scrape (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
to crw-search (step 1) first. For many pages under a site, use crw-crawl (step 4). For a local PDF, use crw-parse (step 5).
renders. This is a crw advantage: no separate "interact"/browser step.
CLI (binary on PATH):
crw scrape "https://example.com" # → markdown to stdout
crw scrape "https://example.com" --format json -o page.json
crw scrape "https://example.com" --js --css "article.main"
crw scrape "https://example.com" --format links -o .crw/links.txtMCP (inside an agent harness):
crw_scrape(url="https://example.com", formats=["markdown"], onlyMainContent=true)REST (drop-in for Firecrawl SDKs — just swap the base URL):
curl -X POST "$CRW_API_URL/v1/scrape" -H "Authorization: Bearer $CRW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.com","formats":["markdown"],"onlyMainContent":true}'| Need | CLI flag | MCP / REST field | |||||
|---|---|---|---|---|---|---|---|
| Output format | `--format markdown\ | html\ | rawhtml\ | text\ | links\ | json` | formats: [...] |
| Strip nav/footer/sidebar | (on by default; --raw to disable) | onlyMainContent: true | |||||
| Force JS rendering | --js | renderJs: true (null = auto) | |||||
| Wait after load | — | waitFor: 2000 (ms) | |||||
| Keep only selectors | --css "article" / --xpath … | includeTags: ["article"] | |||||
| Drop selectors | — | excludeTags: ["nav","footer"] | |||||
| Pick renderer | — | `renderer: "auto\ | lightpanda\ | chrome\ | chrome_proxy\ | playwright" (auto` is default) | |
| Save to file | -o FILE | (write the response yourself) | |||||
| Structured JSON | --extract '<schema>' | extract: {schema: {...}} — see crw-extract | |||||
| Use a proxy | --proxy URL --stealth | proxy, proxyRotation, stealth |
? and & are shell-special. Always wrap in quotes.crw scrape … & andwait, or issue parallel MCP calls.
--js / renderJs: true, optionally awaitFor. crw's auto-detect covers most SPAs without it.
.crw/, then grep/head.MCP truncates to ~15 000 chars (maxLength: 0 to opt out).
--format json returns the raw full-pageobject (metadata + content), not schema-extracted data. For structured extraction against a schema use --extract '<schema>' — this calls an LLM and requires a configured LLM provider. See the dedicated crw-extract skill.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.