Skip to content

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 records

The 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.

Reading this as an AI agent? There’s an onboarding page written for you: /agent-onboarding.md.