https://txtfetch.com/docs/quickstarts/
Pick your framework.
Official SDKs and RAG-framework loaders. Install, then extract, in under ten lines.
sdk-js
@txtfetch/sdk (JavaScript / TypeScript)
Zero runtime dependencies. Node ≥ 20. Dual ESM/CJS with .d.ts.
npm install @txtfetch/sdkimport { Txtfetch } from "@txtfetch/sdk";
// apiKey defaults to process.env.TXTFETCH_KEY
const txtfetch = new Txtfetch();
const { extracted_text, metadata } = await txtfetch.extract({ file: "./whitepaper.pdf" });
console.log(extracted_text, metadata.chars);
const byUrl = await txtfetch.extract({ url: "https://example.com/report.docx" });
console.log(byUrl.extracted_text);sdk-python
txtfetch (Python)
Python 3.9+. The only runtime dependency is httpx.
pip install txtfetchfrom txtfetch import Txtfetch
# api_key defaults to the TXTFETCH_KEY environment variable
client = Txtfetch(api_key="tf_live_...")
# Extract from a local file (path, bytes, or a file-like object all work)
result = client.extract(file="whitepaper.pdf")
print(result.extracted_text)
print(result.metadata.content_type, result.metadata.bytes, result.metadata.ocr)
# Extract from a URL — txtfetch fetches it server-side
result = client.extract(url="https://example.com/whitepaper.docx")langchain-python
langchain-txtfetch
A LangChain document loader: a thin adapter over the Python SDK. Each file/URL becomes one Document, ready for a text splitter.
pip install langchain-txtfetchfrom langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_txtfetch import TxtfetchLoader
# api_key defaults to the TXTFETCH_KEY environment variable
loader = TxtfetchLoader(
files=["whitepaper.pdf"], # single path/URL or a list of them
urls=["https://example.com/spec.docx"],
)
documents = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
chunks = splitter.split_documents(documents)langchain-js
@txtfetch/langchain
A LangChain.js document loader: a thin adapter over @txtfetch/sdk. Requires @langchain/core as a peer dependency.
npm install @txtfetch/langchain @langchain/coreimport { RecursiveCharacterTextSplitter } from "@langchain/textsplitters";
import { TxtfetchLoader } from "@txtfetch/langchain";
// apiKey defaults to the TXTFETCH_KEY environment variable
const loader = new TxtfetchLoader({
files: ["whitepaper.pdf"], // a single path/URL or an array of them
urls: ["https://example.com/spec.docx"],
});
const documents = await loader.load();
const splitter = new RecursiveCharacterTextSplitter({ chunkSize: 1000, chunkOverlap: 100 });
const chunks = await splitter.splitDocuments(documents);llamaindex-python
llama-index-readers-txtfetch
A LlamaIndex reader: a thin adapter over the Python SDK. Each file/URL becomes one Document.
pip install llama-index-readers-txtfetchfrom llama_index.core import VectorStoreIndex
from llama_index.readers.txtfetch import TxtfetchReader
# api_key defaults to the TXTFETCH_KEY environment variable
reader = TxtfetchReader()
documents = reader.load_data(
files=["whitepaper.pdf"], # single path/URL or a list of them
urls=["https://example.com/spec.docx"],
)
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
print(query_engine.query("What is this document about?"))next
Turn any of these loaders into a full ingestion pipeline in the chunk → embed → index recipe. Or read the error reference to see how each SDK's typed exceptions map to the wire format. Writing Go, Java, or C#, languages with no official SDK yet? See extract by language for the whole HTTP client in each.
Watch it run, then take a key.
The playground replays a real recorded response for every sample document.
Open the playground →