Skip to content
All flagships

Published Python package

pulldown

Turn a web page into Markdown your pipeline can use.

Fetch a public URL, preserve the content you need, and choose how much detail to pass downstream. Includes a CLI, Python API, MCP server, bounded crawling, and optional browser rendering.

What you can do with it

Who it's for: Developers building research, retrieval, and web ingestion workflows.

Readable Markdown from a URL, with control over how much page content you retain.

Your first useful result

Install in your development environment

python -m pip install "pulldown==0.4.2"
  1. 01

    Extract the example article

    The source contains headings, a link, and a three-service table. Inspect the content and routing metadata, then compare it with the original page in the gallery.

    pulldown get https://pulldown.making-minds.ai/examples/field-notes.html --detail structured --json-output --meta
  2. 02

    Compare the five modes

    Change --detail to minimal, readable, full, or raw. Minimal returns plain text; readable chooses a strategy for the page; structured preserves hierarchy and summarizes tables; full includes page chrome; raw returns HTML.

  3. 03

    Load content created by JavaScript

    The HTTP result is a loading shell. After Chromium runs, expect RENDERED-BOARD-READY and the Documentation, Search, and Export cards. Rendering bypasses the HTTP cache.

    python -m pip install "pulldown[render]==0.4.2"
    python -m playwright install chromium
    pulldown get https://pulldown.making-minds.ai/examples/live-board.html --detail readable
    pulldown get https://pulldown.making-minds.ai/examples/live-board.html --detail readable --render --wait 100

Know the limits

  • Structured tables are summaries and can omit cells. Use full or raw when every row and cell matters, and check the result against its source.
  • Browser rendering rejects redirects and blocks workers and WebSockets. Use a canonical URL; sites that depend on those transports may need another access path.
  • Private addresses are blocked by default, but URL checks do not replace process and network isolation for untrusted sites. Login walls and anti-bot checks can still prevent extraction.

Source & further reading