NewIntroducing semantic snapshotsPair every capture with structured DOM data →

Comparison

domscout vs running Playwright yourself

Playwright is a free, well-maintained browser automation library with a first-class test runner, and for testing your own app it is hard to beat. Used as a capture service for other people's pages, it leaves you running the service around it: the browsers to host, the queue, the retries, and the step from HTML to something a model can read. This page sets out that work, what domscout replaces, and when to keep Playwright.

The same job, both ways

Render a page at 1280 by 800, save a screenshot, and print the page as Markdown. On the left, the library and a converter on a machine you run. On the right, one request.

Playwright + Turndown
import { chromium } from "playwright";
import TurndownService from "turndown";

const browser = await chromium.launch();
try {
  const page = await browser.newPage({ viewport: { width: 1280, height: 800 } });
  await page.goto("https://example.com", { waitUntil: "networkidle" });
  await page.screenshot({ path: "page.png" });
  console.log(new TurndownService().turndown(await page.content()));
} finally {
  await browser.close();
}
domscout
import { writeFile } from "node:fs/promises";

const response = await fetch("https://api.domscout.io/screenshot", {
  method: "POST",
  headers: { "Content-Type": "application/json", "x-api-key": "YOUR_API_KEY" },
  body: JSON.stringify({ url: "https://example.com", width: 1280, height: 800, deviceScaleFactor: 1, extractMarkdown: true }),
});
const result = await response.json();
await writeFile("page.png", Buffer.from(result.screenshotBase64, "base64"));
console.log(result.markdown);

What you run when you run it yourself

The script above is the easy part. These are the parts that turn it into something other code can depend on.

ConcernPlaywright yourselfdomscout
The browserA browser you deploy with your app and keep updatedManaged for you
HostingA server or a function big enough to run ChromiumAn HTTPS API
ConcurrencyYou queue work and cap how many browsers run at onceA per-plan rate limit, and durable batch and crawl jobs on Business and above
Page to MarkdownA second library, plus your own cleanup rulesextractMarkdown returns Markdown and a token estimate
FailuresTimeouts, retries and crash recovery are yours to writeFailed requests are refunded; on Pro and above, long captures can run as async jobs
URLs from your usersStopping a user from pointing your browser at an internal address is yours to get rightURLs on private, reserved and metadata addresses are refused
CostThe compute your browsers use, plus the time to run them$9 a month for 5,000 credits on Pro. The capture above costs 1; credits past quota cost $0.002 each, up to 2x quota

When to keep Playwright

If one of these describes your work, running Playwright yourself is the better choice.

  • You test your own app in CI against localhost or a private network. domscout only reaches public addresses.
  • Your targets block scrapers. Every domscout capture leaves from one network address, with no proxy rotation and no captcha solving.
  • You run enough volume on machines you already pay for that per-capture pricing costs more than your own compute.
  • You need Firefox or WebKit. domscout renders in Chromium only.
  • You are writing end-to-end tests. Playwright's test runner, fixtures and tracing are built for that; domscout is built for capturing pages, not asserting on your own UI.

Comparing hosted services instead? domscout vs Firecrawl, ScreenshotOne and Browserless · domscout vs Puppeteer

Give your product a browser.

Get clean web content and visual proof into your workflow in minutes.