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.
Two 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. See Privacy & security. - 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.
Start here
Section titled “Start here”- Quickstart — install, sign in, and run your first extraction.
- Install — installer routes for macOS, Linux, WSL, and Windows.
- 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 — where output is currently weakest.
Reading this as an AI agent? There’s an onboarding page written for you: /agent-onboarding.md.