Web Evidence Pack – PDF, Screenshot, Text & Monitor avatar

Web Evidence Pack – PDF, Screenshot, Text & Monitor

Pricing

from $40.00 / 1,000 evidence packs

Go to Apify Store
Web Evidence Pack – PDF, Screenshot, Text & Monitor

Web Evidence Pack – PDF, Screenshot, Text & Monitor

Capture public web pages into timestamped PDF, full-page screenshot, clean text, and HTML. Get metadata, SHA-256 fingerprints, and persistent change detection in one API-ready run for QA, compliance, audits, and monitoring.

Pricing

from $40.00 / 1,000 evidence packs

Rating

0.0

(0)

Developer

Guilherme Mendel

Guilherme Mendel

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

Web Evidence Pack

Capture public web pages as timestamped evidence bundles: PDF, full-page screenshot, clean text, source HTML, metadata, and a SHA-256 content fingerprint in one API-ready run.

The Actor is designed for QA checks, compliance records, public-page archiving, vendor-page audits, and scheduled change monitoring. It does not require a separate server, browser farm, or file host.

Web Evidence Pack icon

What one successful event creates

  • Printable A4 PDF with backgrounds
  • Full-page PNG screenshot
  • Extracted visible text
  • Optional rendered HTML
  • Final URL, HTTP status, page title, load time, timestamp, and word count
  • SHA-256 fingerprint for deterministic change detection
  • Persistent snapshots when a snapshotKey is supplied
  • Dataset row plus downloadable files in the run's key-value store

The pay-per-event event is charged only after the page is successfully captured. Blocked and failed pages are not charged for an evidence-pack event.

Example input

{
"urls": [
{ "url": "https://example.com" },
{ "url": "https://www.iana.org/help/example-domains" }
],
"formats": ["pdf", "screenshot", "text", "html"],
"respectRobotsTxt": true,
"snapshotKey": "vendor-terms-weekly",
"waitUntil": "domcontentloaded",
"timeoutSecs": 30,
"postLoadWaitSecs": 1,
"maxConcurrency": 2
}

The urls field accepts URL strings through the API and request-list objects through the Console editor. A run can process up to 100 unique public URLs.

Example result

{
"inputUrl": "https://example.com",
"finalUrl": "https://example.com/",
"status": "captured",
"httpStatus": 200,
"title": "Example Domain",
"capturedAt": "2026-07-13T23:41:59.502Z",
"loadTimeMs": 112,
"wordCount": 19,
"contentHash": "c1d5188c6a2eac7fe21f56b03a396b45cb434f30b653d6939f5d2db08babe99f",
"changed": false,
"firstCapture": true,
"pdfRecordKey": "EVIDENCE_001_100680ad546c_PAGE.pdf",
"screenshotRecordKey": "EVIDENCE_001_100680ad546c_FULL.png",
"textRecordKey": "EVIDENCE_001_100680ad546c_TEXT.txt",
"htmlRecordKey": "EVIDENCE_001_100680ad546c_SOURCE.html"
}

When the Actor runs on Apify, result rows also contain direct API URLs for generated artifacts.

Change monitoring

Set a stable snapshotKey, then run the same input manually, through the API, or on an Apify schedule. The Actor stores the last SHA-256 hash for each input URL in a dedicated named key-value store.

  • First capture: firstCapture: true, changed: false
  • Same content later: firstCapture: false, changed: false
  • Different rendered HTML: firstCapture: false, changed: true, with previousHash

Apify webhooks can notify another system after a scheduled run. Filter the dataset for changed: true in the receiving automation.

Safety and responsible use

This Actor is intentionally limited to public HTTP(S) pages.

  • Private, loopback, link-local, reserved, .local, and localhost targets are blocked.
  • Redirects and browser subresources are checked to reduce SSRF risk.
  • URLs containing embedded credentials are rejected.
  • robots.txt is respected by default, and verification fails closed.
  • Concurrency, timeouts, viewport size, input count, text size, and HTML size are bounded.
  • Login automation, CAPTCHA bypass, private pages, and anti-bot evasion are not supported.

Use the Actor only for pages you may lawfully access and process. A timestamp and hash help establish a reproducible record, but they are not a qualified timestamp or a guarantee of legal admissibility.

Limitations

  • Browser-rendered HTML can include dynamic values, which may change the hash even when the meaningful content did not.
  • Pages that require authentication, CAPTCHA solving, browser extensions, or disabled TLS verification are unsupported.
  • Very large HTML is not stored above 15 MiB; visible text is truncated above 5 MiB.
  • Full-page screenshots may fail on unusually tall or graphics-heavy pages. Other requested artifacts can still succeed and the result will include a warning.
  • Artifact API URLs can require authorization when the storage is private.

Local development

Requirements: Node.js 22 or newer.

npm install
npm run check
npm run test:integration
npx apify-cli validate-schema
npx apify-cli run --purge --input-file ./examples/input.json

The competitor monitor can be refreshed with:

$npm run market:snapshot

It records adjacent Apify Store products, 30-day users, 30-day runs, and pricing models under reports/snapshots/.

Outputs

  • Default dataset: one structured result per input URL
  • Default key-value store: PDF, PNG, TXT, HTML, and OUTPUT summary
  • Named snapshot store: one SNAPSHOTS record when snapshotKey is supplied

Support scope

Supported issues are reproducible failures on public pages within the documented limits. Custom login flows, anti-bot bypasses, legal certification, and custom scraping projects are outside this Actor's scope.