Introducing Browser Sandbox - Give your agents a secure, fully managed browser environment Read more →

How can I use Firecrawl to take a screenshot of a webpage instead of Playwright in Python?

Firecrawl's Scrape API supports screenshot as an output format. Pass it in formats and the response includes a URL to a captured image of the fully rendered page, with no Playwright installation, no browser process to manage, and no async setup.

FactorPlaywright (Python)Firecrawl Scrape API
SetupInstall Chromium, configure async browserpip install firecrawl-py
Browser managementLaunch, use, close per requestHandled by Firecrawl infrastructure
JS renderingYesYes
Full-page screenshotManual scroll + stitch or full_page=TrueVia actions with full_page: True
OutputBuffer saved to diskURL to hosted image

Basic screenshot in Python:

from firecrawl import Firecrawl
 
firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")
 
doc = firecrawl.scrape("https://example.com", formats=["screenshot"])
 
print(doc.screenshot)  # URL to the screenshot image

For a full-page screenshot after page interaction, use the actions array:

doc = firecrawl.scrape(
    url="https://example.com",
    formats=["markdown"],
    actions=[
        {"type": "wait", "milliseconds": 1500},
        {"type": "screenshot", "full_page": True},
    ],
)
 
print(doc.screenshot)  # URL to the full-page screenshot

Use Firecrawl when you need screenshots as part of a scraping pipeline, want to avoid managing browser infrastructure, or need screenshots alongside extracted content from the same request. For fine-grained browser control (custom viewports, precise interactions, local file access) Playwright is still the right tool.

See the Scrape API docs for the full list of supported formats and action types.

Last updated: Mar 01, 2026
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