Competitive intelligence on demand
Monitor competitors, markets, and signals — programmatically.
For
B2B sales tools, market research platforms, VC ops, growth teams — anyone whose product needs to know what is happening in a specific industry vertical right now.
Recommended config
Start with this shape.
Working code
Paste, run, ship.
import os, requests, anthropic
from datetime import datetime
claude = anthropic.Anthropic()
HEADERS = {"Authorization": f"Bearer {os.environ['SIFTQ_API_KEY']}"}
COMPETITORS = ["Acme Robotics", "Beta Industries", "Gamma Labs"]
def fresh_news(company: str) -> list[dict]:
r = requests.post(
"https://api.siftq.com/v1/search",
headers=HEADERS,
json={
"q": f'"{company}" announcement OR launch OR funding OR hire',
"scope": "news",
"size": "15",
"conciseSnippet": True,
},
timeout=15,
)
return [h for h in r.json().get("webpages", []) if h.get("date")]
def brief(company: str) -> str:
items = fresh_news(company)
if not items:
return f"## {company}\n_No notable news in the last cycle._"
feed = "\n".join(f"- {h['date']}: {h['title']} — {h['link']}" for h in items)
summary = claude.messages.create(
model="claude-sonnet-4-6", max_tokens=400,
messages=[{
"role": "user",
"content": f"3 bullets summarizing what {company} did this week:\n\n{feed}",
}],
).content[0].text
return f"## {company}\n{summary}\n\n<details>{feed}</details>"
print(f"# Competitor Brief — {datetime.now():%Y-%m-%d}\n")
for c in COMPETITORS:
print(brief(c), "\n")Why SiftQ for this
- ✓news scope is freshness-tuned — recency-first ordering
- ✓Per-query pricing makes scheduled jobs cost-predictable
- ✓Structured results plug straight into Slack/email/notion pipelines
- ✓Zero data retention option for sensitive competitive workflows
FAQ
Likely questions.
How often should I poll?
Daily is the sweet spot for most B2B competitor monitoring. Hourly only if your domain genuinely moves fast (crypto, breaking-news products).
Will my queries appear in the competitor's analytics?
No. SiftQ is server-side; we crawl public web pages independently. The target site sees a SiftQ-attributed request, not yours.
How do I avoid duplicate alerts?
Hash the result URL and date and store in a small key-value store (Redis, Postgres). Only emit alerts for unseen hashes.
Keep reading
Use case
Grounding chatbots with live data
Stop your assistant from confidently making things up.
Use case
Search for autonomous research agents
Give your agent a primitive it can call dozens of times per task.
Glossary
Web retrieval API
An API that takes a query and returns ranked web documents in a format an LLM can consume.
Glossary
Citation
A link or reference back to the source from which an LLM-generated claim was derived.
Try it on your
real workload.
The free tier covers most prototypes. No credit card.