Skip to main content

llama-index-readers-urlpipe

Load any web page into LlamaIndex as clean Markdown, ready to index: URLpipe opens it in real Chrome, so JavaScript-rendered content comes back complete, without the menus, footers and cookie banners.

Install

pip install llama-index-readers-urlpipe

Python 3.10 or later. It builds on urlpipe, the official Python client, which is installed with it.

Get an API key

Create a project at urlpipe.dev and copy its API key. The Free plan gives you 1,000 credits a month, no card needed; reading a page as Markdown costs 1 credit, and reading it again within 7 days costs nothing.

export URLPIPE_API_KEY=your_project_key

Or pass it in: UrlpipeReader(api_key="...").

Load pages and ask questions about them

from llama_index.core import VectorStoreIndex
from llama_index.readers.urlpipe import UrlpipeReader

reader = UrlpipeReader()  # reads URLPIPE_API_KEY
documents = reader.load_data([
    "https://urlpipe.dev/docs",
    "https://urlpipe.dev/pricing",
])

index = VectorStoreIndex.from_documents(documents)
answer = index.as_query_engine().query("How many credits does a Markdown request cost?")
print(answer)

VectorStoreIndex uses the embedding model and LLM set in llama_index.core.Settings, OpenAI by default (pip install llama-index brings those in and reads OPENAI_API_KEY).

You get one Document per URL, in the order you gave them:

Field What it holds
text the page as Markdown (or HTML, or a summary; see below)
id_ the same id every time you load that URL with that operation, so an ingestion pipeline's docstore spots a page it already has
metadata["url"] the URL you asked for
metadata["operation"] "markdown", "html" or "summarize"
metadata["token"] the request's token: fetch the same result again for free with urlpipe.Client().result(token)
metadata["cache"] "hit" when a stored result was reused at no cost, "miss" when the page was fetched

Only url goes to the embedding model and the LLM; the other keys stay out of the way.

For a long list of pages, lazy_load_data hands you each Document as soon as it is ready:

for doc in reader.lazy_load_data(urls):
    print(doc.metadata["url"], len(doc.text))

Async

aload_data fetches several pages at once, 4 at a time by default. Set max_concurrency to your plan's parallel request limit:

import asyncio
from llama_index.readers.urlpipe import UrlpipeReader

async def main() -> None:
    reader = UrlpipeReader(max_concurrency=8)
    documents = await reader.aload_data(urls)
    print(len(documents))

asyncio.run(main())

Operations

operation Document.text Credits
"markdown" (default) the main content as Markdown 1
"html" the full HTML after JavaScript ran 1
"summarize" an AI summary of the page, in Markdown 17
UrlpipeReader(operation="summarize")

Options

reader = UrlpipeReader(
    api_key="...",                # default: URLPIPE_API_KEY
    operation="markdown",
    max_age="1 hour",             # reuse a stored result younger than this; 0 always fetches
    page_options={"block_cookie_banners": True, "remove_selectors": [".promo"]},
    continue_on_failure=True,     # log a page that cannot be read and carry on
    max_concurrency=4,            # pages aload_data fetches at a time
    timeout=90,                   # seconds per HTTP request
    max_retries=2,                # retries on connection errors, rate limits and 5xx
)

page_options is sent to the API as given; the page options docs list what it takes.

When a page cannot be read

By default the first page that fails raises the client's error, a subclass of urlpipe.UrlpipeError:

import urlpipe

try:
    documents = reader.load_data(urls)
except urlpipe.AnalysisFailedError as error:
    print("Could not read the page:", error.message)

With continue_on_failure=True the reader logs a warning for that page and returns the rest. A wrong API key, an unconfirmed email address or a spent monthly allowance still raises, since every other page would fail the same way. A failed page costs nothing.

License

MIT © Aliat Partner S.L.

Metadata

Release files for llama-index-readers-urlpipe 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for llama-index-readers-urlpipe 0.1.1
File Size Uploaded
llama_index_readers_urlpipe-0.1.1.tar.gz 13.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for llama-index-readers-urlpipe 0.1.1
File Interpreter ABI Platform
llama_index_readers_urlpipe-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 21.8 kB

Release files / llama_index_readers_urlpipe-0.1.1.tar.gz

Download URL llama_index_readers_urlpipe-0.1.1.tar.gz
Size 13.2 kB
Tags Source
SHA-256 checksum
How to use checksums
7508ea19bf3dbdb553054fa9eaa4f31aa514bcad779bc1f8859e8f7f9cba6c19
BLAKE2b-256 checksum
How to use checksums
1402b14e84522f7cfcca804c3453fc335d711fa0fd47e3e1b04a8b7aebe5f25e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / llama_index_readers_urlpipe-0.1.1-py3-none-any.whl

Download URL llama_index_readers_urlpipe-0.1.1-py3-none-any.whl
Size 8.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a53c3125818fea2ea42ceb175087408323d2bc5406f069a0e4120f9ac8995ff
BLAKE2b-256 checksum
How to use checksums
e5a2482f847e1c7cb0a72d85e2e7b2eea85be9c6311bec88b6a436f3adcc3b3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page