Ferret — Business Endpoints

17 cross-cutting analyses built on top of the 333 parsers, with 16 /llm routes returning markdown prompts (~800 tokens) for direct LLM injection.


How they work

Each business endpoint follows the same pattern as /seo/corpus:

GET /<domain>/<endpoint>?q=<query>          → multi-source analysis, structured JSON
GET /<domain>/<endpoint>/llm?q=<query>      → LLM-ready markdown prompt (~800 tokens)
?format=json|csv|xml                        → output format
?sources=parser1,parser2                    → restrict the source parsers

A business endpoint combines several parsers to produce a single analysis useful to a professional (SEO, e-commerce, real estate, finance, etc.). For example, /seo/audit merges 15 parsers (CMS, PageSpeed, WHOIS, DNS, robots.txt, hreflang, OpenGraph, Safe Browsing, …) into one technical audit.

Why the /llm routes?

The JSON response is for programmatic use. The /llm variant re-formats the same data as a focused markdown prompt — about 800 tokens — designed to be appended directly to a chat completion’s system or user message. This is what gives the most user value: an LLM can read the prompt and produce a finished report without you writing the aggregation logic.

# Structured JSON — for your own pipeline
curl "http://localhost:9093/seo/audit?q=example.com"

# LLM-ready markdown — feed straight to GPT-4 / Claude
curl "http://localhost:9093/seo/audit/llm?q=example.com"

SEO & Content (10 endpoints)

These aggregate the SEO parser family (position, serp_features, hreflang, opengraph, pagespeed, robots_txt, sitemap, backlink, whois, dns, cms, safebrowsing, trust, cache, archive, …).

/seo/corpus — Content corpus analysis

TF-IDF, ngrams, search intents, content plan, benchmark, opportunities, semantic groups.

curl "http://localhost:9093/seo/corpus?q=rust+web+framework"
curl "http://localhost:9093/seo/corpus/llm?q=rust+web+framework"

/seo/audit — Full technical SEO audit

Merges 15 parsers: CMS + version, Core Web Vitals (LCP/FID/CLS), WHOIS (domain age, expiry, registrar), DNS (A/MX/NS/TXT), robots.txt + sitemap validity, hreflang, OpenGraph/Twitter Cards, trust score (Safe Browsing, SSL, spam), cache/archive (last Google crawl), hosting (IP, country, ASN), HTTP security headers (HSTS, CSP, X-Frame-Options).

curl "http://localhost:9093/seo/audit?q=example.com"
curl "http://localhost:9093/seo/audit/llm?q=example.com"   # "Technical audit for example.com"

/seo/competitors — SERP competitor analysis

Top 10 competitors for a keyword; for each: domain authority, backlinks, social presence, SERP features present (featured snippet, PAA, images, videos, shopping), gap analysis.

curl "http://localhost:9093/seo/competitors?q=rust+hosting"

/seo/content — On-page content SEO analysis

URL content extraction (title, meta, body, H1–H6), readability score, keyword density, internal/external links, social shares, optimization recommendations.

curl "http://localhost:9093/seo/content/llm?q=https://example.com/blog/post"

/seo/pagespeed — Core Web Vitals

LCP, FID, CLS and full performance metrics for a URL.

curl "http://localhost:9093/seo/pagespeed?q=https://example.com"

/seo/serp-features — SERP feature inventory

Featured snippets, People Also Ask, image packs, video packs, shopping for a keyword.

curl "http://localhost:9093/seo/serp-features?q=best+rust+ide"

/seo/hreflang — hreflang audit

All hreflang tags and declared languages for a URL.

curl "http://localhost:9093/seo/hreflang?q=https://example.com"

/seo/opengraph — Open Graph / Twitter Cards / schema.org

Validates OG, Twitter Card and JSON-LD schema markup.

curl "http://localhost:9093/seo/opengraph?q=https://example.com"

/seo/robots-txt — Robots.txt and sitemaps

robots.txt rules, referenced sitemaps, crawl constraints.

curl "http://localhost:9093/seo/robots-txt?q=https://example.com"

/seo/bukvarix — Search volume (Bukvarix)

Keyword search volume from Bukvarix (RU/CIS focus).

curl "http://localhost:9093/seo/bukvarix?q=купить+ноутбук"

France (3 endpoints)

/france/living — Quality of life for a commune

Merges ~10 French parsers: real estate prices (m², trend), median rent, shops and services, transport (train stations, bus, carpool), schools, healthcare professionals, green spaces, culture (museums, monuments), risks (flood, seismic), EV charging stations.

curl "http://localhost:9093/france/living?q=75001"
curl "http://localhost:9093/france/living?q=Lyon"

Response (excerpt):

{
  "commune": "Paris 1er Arrondissement",
  "code_postal": "75001",
  "immobilier": {"prix_m2": 12800, "evolution_1an": 2.4},
  "loyer_median": 34,
  "transports": {"gares": [...], "bornes_electriques": 12},
  "sante": {"medecins": 87},
  "risques": ["inondation"],
  ...
}

/france/company — Full company profile

SIRENE + dirigeants + RNA associations + DVF real estate transactions. For due diligence.

curl "http://localhost:9093/france/company?q=552033579"   # SIREN
curl "http://localhost:9093/france/company?q=Decathlon"

/realestate/estimate — Real estate valuation

Price/m² in the zone, recent transactions (DVF), 1-year / 5-year price trends, estimated vs median rent, comparison with neighbouring towns, market trends.

curl "http://localhost:9093/realestate/estimate?q=Lyon"

Transverse (7+ endpoints)

/product/intelligence — Multi-market product pricing

Min/max/mean price across Amazon, eBay, AliExpress, Walmart, Etsy, Reverb. Availability, ratings, reviews, best value-for-money, price trend.

curl "http://localhost:9093/product/intelligence?q=sony+wh-1000xm5"

/social/sentiment — Cross-platform sentiment

Volume of mentions, general sentiment (positive/negative/neutral), top sources, temporal evolution, associated keywords. Sources: Twitter, Reddit, Quora, Medium.

curl "http://localhost:9093/social/sentiment?q=rust+programming"

/finance/portfolio — Portfolio analysis

Current vs historical prices, 24h/7d/30d performance, volatility, asset correlation, diversification recommendation. Sources: CoinGecko, Alpha Vantage, Twelve Data, Binance, Kraken.

curl "http://localhost:9093/finance/portfolio?q=BTC,ETH,SOL"

Trending tech, recent discussions, popular projects, frequent questions. Sources: GitHub, Hacker News, dev.to, StackExchange.

curl "http://localhost:9093/tech/trends?q=rust"

/travel/trip — Trip planner

Weather at destination, available accommodation, tourist activities, transport options, estimated budget. Sources: Booking, TripAdvisor, weather, OpenTripMap, SBB.

curl "http://localhost:9093/travel/trip?q=Lisbon"

/culture/events — Cultural agenda

Current exhibitions, monuments to visit, cultural events, how to get there. Sources: musées, monuments, culture, OpenTripMap, transport.

curl "http://localhost:9093/culture/events?q=Paris"

/health/drugs — Drug information

Drug description, active principles (PubChem), FDA warnings, available alternatives. Sources: médicaments (ANSM), FDA, PubChem.

curl "http://localhost:9093/health/drugs?q=paracetamol"

/research/literature — Scientific literature review

Articles on a topic, impact factors, authors and affiliations, open access availability, citation network. Sources: OpenAlex, Crossref, ISSN, university rankings, OpenLibrary.

curl "http://localhost:9093/research/literature?q=transformer+attention"

/monitor/track — RSS monitoring

Watch sites via RSS, detect new articles, extract content, auto-summarize. Sources: rss, article_extractor.

curl "http://localhost:9093/monitor/track?q=https://example.com/feed.xml"

The 16 /llm routes

Every endpoint above (except /seo/competitors which returns raw data) ships a /llm variant. These 16 routes return markdown prompts optimized for direct injection into a chat completion:

RoutePrompt topic
/seo/corpus/llmWrite an SEO article from the corpus
/seo/audit/llmPrioritized corrective audit report
/seo/content/llmConcrete on-page SEO recommendations
/france/living/llmQuality-of-life report for moving/relocating
/france/company/llmFull company report for due diligence
/realestate/estimate/llmMarket analysis for buyer/seller
/product/intelligence/llmMarket positioning and pricing opportunities
/social/sentiment/llmOpinion trend report
/finance/portfolio/llmPersonalized investment report
/tech/trends/llmHot-topic summary
/travel/trip/llmFull itinerary with budget
/culture/events/llmWeekend event picks
/health/drugs/llmComplete drug brief for a patient
/research/literature/llmSynthesis of recent publications
/monitor/track/llmNew content since last check
/seo/pagespeed/llmPerformance fix plan

Each prompt is roughly 800 tokens — small enough to fit alongside a user question in any modern context window.


Combining endpoints

Business endpoints compose cleanly. A common pattern:

# 1. Pull the LLM prompt for an SEO audit
PROMPT=$(curl -s "http://localhost:9093/seo/audit/llm?q=example.com")

# 2. Send it to your LLM
curl https://api.openai.com/v1/chat/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"gpt-4.1\",
    \"messages\": [
      {\"role\": \"system\", \"content\": \"You are an SEO consultant.\"},
      {\"role\": \"user\", \"content\": $(jq -Rs . <<< "$PROMPT")}
    ]
  }"

See Parsers for the underlying sources and Export Formats for output options.