Analog documentation
Analog lets any AI understand websites as code — a perception layer for LLMs that turns webpages into structured records, so an agent can query a page instead of re-reading rendered prose.
from analog import analog
result = analog("https://quotes.toscrape.com/js/")section = result.structured_content[0]print(section.records[:3]) # typed, named, queryable recordsThe extraction engine is deterministic and zero-shot — no LLMs anywhere in the pipeline. Given the same page URL and HTML, the same engine produces the same records. A live page’s HTML can change between fetches. Extraction costs CPU-milliseconds rather than model tokens, and results are reproducible enough to diff.
Three properties worth knowing up front:
- Pages are fetched on your machine. The SDK uses a local headless
browser, which visits as an unauthenticated user by default.
Authenticated content is sent only when you explicitly provide it
through
html=or a custom fetcher. Pages reach Analog’s servers only when you send them for extraction. Extraction URLs are never logged. - Names may be guesses; data may not. When a field name is a guess, the surface says so where it matters; anything touching the data itself (truncation, withheld content, pagination coverage) is disclosed, never silently dropped.
- Your reading is your business. Extraction URLs are never logged server-side. See Privacy & security.
Start here
Section titled “Start here”- Quickstart — install, sign in, first extraction, in about two minutes.
- Install — one line, any platform.
- Authenticate —
analog login, and what the credential actually is. - Extract a page — your first records, and how to read what Analog tells you about them.
- Using Analog from Claude, Cursor, and other agents — the MCP server.
- Limitations — known weak page types, stated before you find them.
Reading this as an AI agent? There’s an onboarding page written for you: /agent-onboarding.md.