β οΈ Current Limitation: Currently only search engines without anti-bot protection are workable, such as DuckDuckGo and Brave. We require advanced features to bypass anti-bot measures for other engines like Google and Bing.
π Tarzi is a unified search interface designed for Retrieval-Augmented Generation (RAG) and agentic systems built on large language models. Search is a core functionality in these systems, yet most search engine providers (SEPs) impose API paywalls or strict rate limits. Tarzi, empowered by browser automation and web crawling technologies, removes these barriers by supporting token-free queries across multiple search engines. With a single dependency, you can integrate and switch between different SEPs as neededβseamlessly and efficiently.
βοΈ Core Capabilities
- π¦ Dual Implementation: Native Rust library and Python wrapper with CLI tools
- π Content Conversion: Convert raw HTML into Markdown, JSON, or YAML, which is ready for LLMs
- π Search Integration: API β plain HTTP β headless browser cascade with a unified result format
- π§ Multi-Engine Support: Bing, Google, Google Serper, DuckDuckGo, Brave, Baidu, Sogou Weixin
- π‘οΈ Proxy Support: Bypass network bans using proxy support to access global SEPs
- π End-to-End Workflow: Full pipeline from search to content extraction for AI and automation use cases
π§ͺ Advanced Features (Under dev.)
- π΅οΈββοΈ Anti-Bot Evasion: Use fingerprint spoofing, proxy rotation, and human-like actions to avoid detection
- π§ Smarter Queries: Improve search results with prompt rewriting and intent-aware queries
- π Workflow Automation: Chain steps like search, click, form fill, and scraping into automated flows
Install
pip install tarzi
CLI Commands
Tarzi provides two command-line interfaces:
tarzi: Native Rust CLI (faster, more efficient)pytarzi: Python CLI (easier to extend, same functionality)
Both CLIs support the same commands and configuration precedence.
Usage Examples
- Examples in Python and Rust: examples
- Search modes demo:
cargo run --example search_modes/python examples/search_modes.py - Serper (Google API): set
SERPER_API_KEY, thencargo run --example search_engine_serper
Search access modes
Breaking change: tarzi.toml / ~/.tarzi.toml are removed. Configure with env vars (see .env.example):
# bing | google | google_serper | brave | duckduckgo | ...
# auto | apiquery | webquery
# Engine API keys (tarzi has no product API key):
# or SERPER_API_KEY for google_serper
| Mode | Behavior |
|---|---|
auto (default) |
API (if key) β plain HTTP β headless browser |
apiquery |
API only (Brave / google_serper) |
webquery |
Plain HTTP β browser (never API) |
google is web-only; Google API results use google_serper (alias serper).
Alternatives
- LangChain PlayWrightBrowserToolkit
Contributors
Thank you β€ all human and non-human contributors.