Take a Screenshot of a Page Behind a Paywall Using an Existing Browser Profile
Capture the authorized page state already open in your browser, or automate it with Playwright while keeping your login data private.
If the page is already open and your browser profile is authorized to view it, use the browser’s screenshot feature. For a one-off capture, use your browser’s built-in screenshot tool or your operating system’s screen capture. For a full-page image or repeatable workflow, Playwright can capture the rendered page using an authorized session. A screenshot records only what that session can see; it does not unlock article content hidden by a paywall.
Choose the right capture method
| Method | Best for | What it captures |
|---|---|---|
| Operating system screen capture | A quick one-off image | The visible screen or selected area |
| Browser screenshot tool | A one-off full-page or element capture | The page as rendered in the current browser session |
| Playwright | Repeatable or scripted capture | The rendered page in an authenticated browser context or attached tab |
Full-page capture means the scrollable rendered page, not content the page never renders. If your session sees only a headline, preview, or subscription prompt, that is what the screenshot will show. For access to blocked content, use the publisher’s authorized access route.
Capture a full page in Firefox
- Open the page while signed in with an account that is authorized to view it.
- In Firefox, open Settings and find Available Toolbox Buttons.
- Enable Take a screenshot of the entire page.
- Return to the page and click the screenshot button. Firefox saves the image in Downloads.
Firefox can also capture a selected element. The exact menu labels and available controls can vary by browser version. See Mozilla’s Firefox screenshot documentation for its current steps.
Automate a capture with Playwright
Playwright’s screenshot API supports full-page captures. The example below launches a persistent Chromium context using a dedicated user-data directory, opens a page, and saves the rendered full page as a PNG. Sign in through the opened browser if needed, and make sure the account is authorized to view the page.
import { chromium } from 'playwright';
const context = await chromium.launchPersistentContext('./authorized-profile', {
headless: false,
});
try {
const page = context.pages()[0] ?? await context.newPage();
await page.goto('https://example.com/article', { waitUntil: 'domcontentloaded' });
await page.screenshot({ path: 'article.png', fullPage: true });
} finally {
await context.close();
}
Install Playwright in your project with npm install playwright. Replace the example URL with the page you are allowed to access. For a one-time interactive session, headless: false lets you sign in in the launched browser before capture. For repeatable jobs, use a controlled test account and a dedicated profile directory rather than your everyday browser profile.
Playwright documents persistent contexts and cautions against automating with Chrome’s main default profile directory, which may fail. See BrowserType. Its screenshot guide describes full-page capture.
Reuse an existing tab
If the page is already open in a browser tab and you need that exact session, Playwright’s browser extension can attach to existing tabs when configured for remote debugging. This has more setup than launching a dedicated context. Follow the current Attach & Detach instructions for the supported setup.
Protect session data
Browser profiles and saved authentication state contain sensitive session information. A Playwright authentication-state file may include cookies and headers that could impersonate the account. Keep profile directories and state files private, out of source control, and accessible only to the process that needs them. See Playwright’s authentication guidance.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. It captures the page the requested URL serves; it does not reuse your existing browser login or bypass a paywall. For public pages you can capture with a direct request, one GET returns an image or PDF. See the ScreenshotNeo API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Cookie banners, popups, and chat widgets are removed before the shot. Bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Sign up for 1,000 free screenshots a month, no card required.
Common problems and fixes
| Problem | Likely cause | What to do |
|---|---|---|
| The screenshot shows a paywall or preview | The current session is not authorized for the article, or the publisher has not rendered the full content. | Confirm access in the browser and use the publisher’s authorized route if access is missing. A capture cannot reveal content the session cannot see. |
| Playwright opens a logged-out page | The launched context is separate from the browser profile where you signed in. | Sign in within the Playwright-launched context, use a dedicated persistent profile, or configure the documented attach workflow for an existing tab. |
| Launching Chrome with the usual profile fails | Chrome’s main default profile is not a reliable automation user-data directory. | Use a separate profile directory dedicated to automation, as described in Playwright’s BrowserType documentation. |
| The capture cuts off content | A viewport screenshot was taken, or content loads only after scrolling. | Set fullPage: true. If the page lazy-loads sections, scroll through the authorized page before capture and allow its content to render. |
| The page is blank or incomplete | Navigation completed before client-rendered content appeared, or the site failed to load. | Wait for the relevant selector or a suitable page state before capturing; inspect the page in the same context to see whether it actually rendered. |
| Authentication stops working later | Session cookies expired or were invalidated. | Reauthenticate through the normal sign-in flow and refresh the dedicated session state. Do not copy session data into logs or public files. |
Performance, reliability, and storage
- One-off capture: the browser’s built-in tool has the least setup and avoids maintaining an automation script.
- Repeatable capture: Playwright adds startup and page-load work, and the site’s own rendering speed affects completion time. Wait for the content you need rather than relying on a fixed short delay.
- Long pages: full-page images can be large and may take longer to render and write. Choose viewport capture when the full document is unnecessary.
- Reliability: authentication can expire, pages can change, and lazy content can depend on scrolling. For recurring jobs, use a dedicated authorized account and profile, and handle navigation or selector timeouts explicitly.
- Cost: browser-native capture and Playwright are software workflows; this guide makes no claim about hosting or infrastructure costs. ScreenshotNeo’s stated plan prices are Free for 1,000 shots/month, Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000; yearly billing gives two months free.
FAQ
Can a screenshot capture an article that is hidden behind the paywall?
Only if the authorized browser session renders that article. A screenshot preserves the rendered view; it does not grant access to content that remains blocked.
Can I use my regular Chrome profile with Playwright?
Playwright warns that automating with Chrome’s main default profile directory may fail. Use a separate user-data directory or the documented attach workflow.
Is it safe to share a Playwright authentication-state file?
Treat it as a credential. It may contain cookies or headers that let someone act as the account, so keep it private and out of source control.
Does ScreenshotNeo use my browser login?
No. Its one-call URL capture does not reuse an existing browser profile. Use the browser or an authorized Playwright session for pages that require your login.


