Introducing the Firecrawl Skill + CLI for Agents. Try it now →

How to build an agent that summarizes a website quickly?

TL;DR

Firecrawl offers two approaches: use the agent endpoint for fully autonomous summarization, or combine map + crawl for more control. The agent handles everything—discovering pages, extracting content, and generating structured summaries.

Autonomous summarization

Let Firecrawl's agent explore and summarize:

result = app.agent({
    "prompt": "Summarize what this company does, their main products, and key differentiators",
    "urls": ["https://example.com"],
})

The agent navigates the site, reads relevant pages, and returns a structured summary.

Controlled approach with map + crawl

For precise control over which pages to include:

# 1. Discover URLs
site_map = app.map("https://example.com")
 
# 2. Filter to key pages
key_pages = [url for url in site_map["links"]
             if "/about" in url or "/products" in url]
 
# 3. Scrape with summaries
content = app.batch_scrape(key_pages[:10], {
    "formats": ["markdown", "summary"]
})

Using the summary format

Firecrawl generates page summaries directly:

result = app.scrape_url("https://example.com", {
    "formats": ["summary"]
})

Key Takeaways

Firecrawl's agent endpoint provides one-call website summarization—just describe what you want to know. For more control, combine map (discover URLs), selective scraping, and the summary format. Both approaches deliver fast website overviews without custom crawling infrastructure.

FOOTER
The easiest way to extract
data from the web
. . .. ..+ .:. .. .. .:: +.. ..: :. .:..::. .. .. .--:::. .. ... .:. .. .. .:+=-::.:. . ...-.::. .. ::.... .:--+::..: ......:+....:. :.. .. ....... ::-=:::: ..:-:-...: .--..:: ......... .. . . . ..::-:-.. .-+-:::.. ...::::. .: ...::.:.. . -... ....: . . .--=+-::. :-=-:.... . .:..:: .:---:::::-::.... ..::........::=..... ...:-.. .:-=--+=-:. ..--:..=::.... . .:.. ..:---::::---=:::..:... ..........::::.:::::::-::.-.. ...::--==:. ..-::-+==-:... .-::....... ..--:. ..:=+==.---=-+-:::::::-.. . .....::......:: ::::-::.---=+-:..::-+==++X=-:. ..:-::-=-== ---.. .:.--::.. .:-==::=--X==-----====--::+:::+... ..-....-:..::-::=-=-:-::--===++=-==-----== X+=-:.::-==----+==+XX+=-::.:+--==--::. .:-+X=----+X=-=------===--::-:...:. .... ....::::...:-:-==+++=++==+++XX++==++--+-+==++++=-===+=---:-==+X:XXX+=-:-=-==++=-:. .:-=+=- -=X+X+===+---==--==--:..::...+....+ ..:::---.::.---=+==XXXXXXXX+XX++==++===--+===:+X+====+=--::--=+XXXXXXX+==++==+XX+=: ::::--=+++X++X+XXXX+=----==++.+=--::+::::+. ::.=... .:::-==-------=X+++XXXXXXXXXXX++==++.==-==-:-==+X++==+=-=--=++++X++:X:X+++X+-+X X+=---=-==+=+++XXXXX+XX=+=--=X++XXX==---::-+-::::.:..-..
Backed by
Y Combinator
LinkedinGithubYouTube
SOC II · Type 2
AICPA
SOC 2
X (Twitter)
Discord