Ferret Python SDK

Python client for Ferret — open source alternative to Tavily.

Installation

pip install ferret-client

Or directly from the repo:

pip install git+https://github.com/duan78/ferret.git

Usage

from ferret import FerretClient

client = FerretClient("http://localhost:9093")

# Multi-engine web search
results = client.search("AI developments 2026")
for r in results["items"]:
    print(f"[{r.get('source', '?')}] {r['title']}")

# Deep research (5 engines in parallel + summary)
report = client.research("AI 2026")
print(report["answer"])

# Content extraction
content = client.extract("https://example.com")

# Crawl a whole site
client.crawl("https://docs.ferret.guru")

# Single-engine search
client.search("rust programming", engine="bing")

# Multi-search across all engines
client.search_all("rust programming")

French data (49 parsers)

dvf = client.dvf("75001")              # Real estate prices, Paris 1er
sirene = client.sirene("Decathlon")     # Company search
rna = client.rna("Restos du Cœur")      # Associations

International APIs

uk_data = client.uk_data("population")
eurostat = client.eurostat_gdp("FR")
bbc = client.bbc_news("technology")
who = client.who_health()

Business endpoints

# SEO audit (returns structured JSON)
audit = client.get("/seo/audit", params={"q": "example.com"})

# LLM-ready markdown prompt (~800 tokens)
prompt = client.get("/seo/audit/llm", params={"q": "example.com"})

# France quality-of-life report
living = client.get("/france/living", params={"q": "75001"})

Export formats

# CSV
csv_bytes = client.search("rust", format="csv")

# XML
xml_bytes = client.search("rust", format="xml")

Utilities

ip = client.ip()
geo = client.geolocate("8.8.8.8")

Configuration

# Default: http://localhost:9093
client = FerretClient("http://192.168.0.37:9093")  # Remote server
client = FerretClient("https://api.ferret.guru")    # Production

See also