Loading...
Loading...
Discover all URLs on a website without fetching content — fast, low-cost URL inventory via sitemap.xml + link extraction BFS. Use when you need to know which pages exist before deciding what to scrape or crawl: "list all pages", "find URLs on this site", "discover links", "what pages does this site have", "map the site". Step 3 of the crw workflow ladder.
npx skill4agent add us/crw crw-mapcrw map docs.example.com | wc -lgrepcrw map "https://docs.example.com" # URLs to stdout
crw map "https://docs.example.com" -d 3 --format json # JSON object, depth 3
crw map "https://example.com" --sitemap-only # sitemap.xml only
crw map "https://example.com" --no-sitemap # link crawl only
crw map "https://example.com" --format json > .crw/urls.jsoncrw_map(url="https://docs.example.com")
crw_map(url="https://docs.example.com", maxDepth=3, limit=200)
crw_map(url="https://example.com", useSitemap=false) # link crawl only
crw_map(url="https://example.com", crawlFallback=false) # sitemap onlycurl -X POST "$CRW_API_URL/v1/map" -H "Authorization: Bearer $CRW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"url":"https://docs.example.com","maxDepth":2,"limit":200}'
# Response: {"success":true,"data":{"links":[...]}} — links are under data.links
# jq tip for REST: jq '.data.links[]'| Need | CLI flag | MCP / REST field |
|---|---|---|
| Discovery depth | | |
| Result format | | — (always JSON) |
| Sitemap only (no link crawl) | | |
| Link crawl only (no sitemap) | | |
| Cap URL count | — | |
| JS rendering | | — |
| Proxy | | — |
| Stealth mode | | — |
| Rate limit | | — |
| Concurrency | | — |
| Per-page timeout | | — |
truncated: truetotalDiscoveredlimit: 0# 1. Map to see what's there
crw map "https://docs.example.com" --format json > .crw/urls.json
# 2a. Grep for the section you need
grep '"authentication"' .crw/urls.json
# 2b. Scrape a single page
crw scrape "https://docs.example.com/api/authentication"
# 2c. Or crawl the whole /api section
crw crawl "https://docs.example.com/api" -d 2 -l 50crw_map(url="https://docs.example.com", limit=0)
# inspect links[], pick the /changelog/* subset
crw_crawl(url="https://docs.example.com/changelog", maxDepth=1, maxPages=20)/blog/*--sitemap-onlygrepjq '.links[]'wc -ljq '.data.links[]'datacrw scrapecrw crawl