Latest release · v1.2.2

The web & document layer
for AI agents

Any URL, document, email, archive or source file in — clean Markdown or structured JSON out. One self-hosted Rust binary with a CLI, Firecrawl & Jina Reader APIs, an MCP server, and packages for Python, Node.js, Go, Java, C#, Ruby, PHP and more.

2.4 ms
PDF → Markdown, per page
20.49× faster than pypdf (50.0 ms)
0.24 ms
HTML → Markdown, per page
8.12× faster than Turndown (1.9 ms)
1.0 ms
Main-content extraction, per page
7.26× faster than crw (7.4 ms)
91.7/s
Office & e-book files parsed
3.40× faster than xberg (27.0/s)
Benchmarks

Measured, not promised

Strongest result per domain from the published 1.1 benchmark report — the same numbers as the project README, with methods and sources in the full report.

Latency per page — lower is better

Single thread · milliseconds per page
PDF → Markdown2.4 vs 50.0 ms20.49×
PageSiftpypdf
HTML → Markdown0.24 vs 1.9 ms8.12×
PageSift · F1 fidelity 1.000Turndown
Main-content extraction1.0 vs 7.4 ms7.26×
PageSift · p50, Firecrawl 597 pagescrw
Publication-date search0.31 vs 2.0 ms6.45×
PageSifthtmldate (fast)

Throughput — higher is better

Files per second · single worker unless noted
PDF → Markdown (resident server)176.5 vs 100.6 files/s1.75×
pdf_oxidePageSift
Office & e-books91.7 vs 27.0 files/s3.40×
xbergPageSift · structure kept 0.988

Peak memory per worker — lower is better

Megabytes, from the same benchmark report
PDF processing32 vs 3,675 MB113.1× less
PageSiftDocling (CPU)
HTML main content20 vs 1,200 MB60.8× less
PageSiftReadability + Turndown
Crawl, 200 sites × 100 pages218 vs 5,500 MB25.2× less
PageSiftspider

Benchmarks measured for PageSift 1.1; xberg 1.3.9 measured 2026-11-04. Full methods: docs/benchmarks.md · Wild-crawl coverage 0.740 vs Crawl4AI 0.529 (polite, 40 sites × 60 pages).

Architecture

One pipeline, every input

The request pipeline from the architecture docs: entry points feed one engine, policy and network guards run before any fetch, a render decision picks the cheapest path that adds content, and every source lands in the same outputs.

Inputs URLs · local files CLI · HTTP API MCP · SDKs · C ABI Engine pagesift-engine Policy robots · rate limits identity leases Fetch HTTP · SSRF guards validated tunnels Plan render only when it pays HTML · arena DOM PDF · own reader Office · e-books · email OCR · scans & formulas Syntax · 373 languages Content & Extract main content · metadata selectors · chunking Outputs Markdown · JSON · links · WARC pagesift-store cache · selector memory · records pagesift-itna · opt-in, off by default barrier recovery · one bounded browser fallback Own code down to the format: zero-copy HTML5 parser, PDF layer, Office readers, neural inference and a Chrome DevTools client — no Python, JVM or Node runtime behind it.
Capabilities

What it can do

Six verbs cover the API surface — the same operations in the CLI, the HTTP APIs and the MCP tools.

scrape · Clean content

Main-content detection and Markdown that keeps headings, lists, tables, code and math. Renders JavaScript only when that adds content.

crawl · Whole sites

Sitemaps, query-focused crawls that stop when pages stop helping, trap handling, robots.txt and per-host limits. WARC output on every crawl.

map · Site maps

Discover the URLs of a site before you spend budget fetching them, then feed the list into crawl, batch or extract.

batch · Many URLs, one job

Batch scraping with job persistence, durable webhooks and per-owner isolation. Poll or cancel jobs from the API or MCP.

monitor · Change monitoring

Scheduled checks that separate real changes from dates, counters and ads, with webhooks when something actually moved.

agent · Research runs

POST /v2/agent answers a question from the web with your own model — and checks each field of the answer against the page it came from.

Documents & OCR

Own Rust readers for PDF, Office, e-books, email, archives and databases — including damaged files and CJK fonts. Scanned pages go through PP-OCRv6, display formulas through PP-FormulaNet, on CPU or NVIDIA GPU.

Structured extraction

JSON by CSS selectors that are relocated when a site changes, or by a schema your model writes once and PageSift caches. Browser actions — clicks, typing, scrolling, kept sessions — when a page needs them.

Safety & honest results

Private-network and DNS-rebinding guards. A partial page, a truncated file or a skipped scan returns a warning code instead of looking complete.

Inputs

Almost anything goes in

One call handles the whole pile — no separate converters to wire up.

Web pages

URLs & HTML, rendered only when it adds content

PDF

Including scanned pages, via OCR

Office

Word, Excel, PowerPoint — current & legacy — plus OpenDocument, RTF, HWP

E-books

EPUB, MOBI, FB2

Email

.eml, .mbox, .msg — attachments recurse

Archives

zip, tar, gz, bz2, xz, 7z — and WARC in & out

Data files

CSV, SQLite, dBASE, Markdown & text formats

Source code

373 source-code & config languages, split by function & class

Interfaces

Drop-in compatible, everywhere

Already have Firecrawl or Jina Reader code? Change the API URL and keep going. Building an agent? The MCP server speaks the same operations.

HTTP APIs

Firecrawl v1/v2 and Jina Reader (/r/ and /s/) endpoints on the same self-hosted binary — plus a file-upload API for local documents.

# Firecrawl API
curl localhost:3002/v2/scrape \
  -H 'Authorization: Bearer sk-test' \
  -d '{"url":"https://example.com","formats":["markdown"]}'

# Jina Reader
curl localhost:3002/r/https://example.com
Firecrawl v1/v2Jina Reader Upload APIMulti-server gateway

MCP server — stdio or HTTP

Ten tools for agents: the eight everyday operations, plus the agent pair when a model is configured. Attach with one command:

claude mcp add pagesift -- pagesift mcp
pagesift_scrapepagesift_batch_scrape pagesift_crawlpagesift_poll_job pagesift_cancel_jobpagesift_map pagesift_interactpagesift_interact_stop pagesift_agentpagesift_agent_status

Packages & bindings

Native packages for the big three, a Rust crate, and a C ABI that carries the engine into a dozen more languages. LangChain and LlamaIndex integrations included.

PythonNode.js / TypeScriptRust GoJavaKotlinC# RubyPHPLuaPerl DartSwiftZig LangChainLlamaIndex

Platforms & runtime

Linux x86_64 / aarch64 (glibc ≥ 2.28 and musl), macOS arm64, Windows x86_64, and a Docker image. Nothing to install for HTTP, PDF and Office; a browser for JavaScript pages, an NVIDIA GPU for OCR and your own model for /v2/agent are found at run time.

18–377 MB per workerone worker per core cgroup-sized capacitymetrics & audit log
Install

Running in a minute

Pick your surface — they all run the same engine.

SurfaceInstallFirst call
CLIcargo install pagesift --lockedpagesift scrape https://example.com
Pythonpip install pagesiftpagesift.scrape("https://example.com").markdown
Node.jsnpm install @pagesift/node(await new Scraper().scrape("https://example.com")).markdown
Serverdocker run -p 3002:3002 ghcr.io/yolow92/pagesift:1.2.2curl localhost:3002/r/https://example.com
MCP—claude mcp add pagesift -- pagesift mcp
New in 1.2 · itna

Access-barrier recovery, opt-in

  • Off by default. Enable with [itna] enabled — nothing changes until you ask.
  • Classified, then bounded. Barriers are classified first; a blocked or challenged page gets at most one browser fallback, sharing one network budget across redirects and sub-requests.
  • Never escalates the wrong cases. Rate limits (429) and login walls never trigger the browser path.
  • Isolated sessions. Sessions are leased per owner, origin, egress and fingerprint; HTTP cookies reach the browser only through an exact-origin handoff.
  • Humans stay in the loop. Interactive CAPTCHAs are reported as needing a human — never solved.
Changelog

What's new in 1.2.2

  • Crawl, batch and extract jobs are restricted to their owner.
  • Search and extract page attempts now count against the daily quota.
  • Cached pages are checked against robots.txt before reuse.
  • Unsupported snapshot and base64-image options are rejected instead of silently ignored.

All releases → · CHANGELOG

Good fit — and when to pick something else

Feeding pages and documents to an LLM, a RAG index or an agent; self-hosting a Firecrawl-style service with no per-page fees; mixed input on small machines. Pick something else for standalone image files, a managed cloud service, or if AGPL does not work for you and a commercial license is not an option.

License

Open source, commercially licensable

Free to self-host under AGPL — with a commercial route for proprietary deployments.

AGPL-3.0

Use, modify and self-host PageSift under the GNU AGPL v3. The full source is on GitHub.

Read the license →

Commercial license

For proprietary linking or private deployment without AGPL obligations, a commercial license is available.

Terms → · licensing@pagesift.dev