Most agencies walk into pitch meetings with generic proposals. Here's how to walk in knowing exactly what a prospect is running — and exactly what they need.
The Problem
You're pitching a new client. You know their industry, you've looked at their website, maybe you've read their blog. But do you know:
- What CMS they're using? (WordPress with 30 plugins? Webflow? Custom?)
- Do they have analytics set up? (Google Analytics? Nothing?)
- Are they using a CDN? (Cloudflare? None — meaning their site is probably slow)
- What marketing tools are already installed? (HubSpot? Mailchimp? Nothing?)
Knowing this before the call completely changes the conversation.
Technology Detection as a Sales Weapon
I built a workflow using the Technology Detection API that scans prospect websites before every pitch. It detects 141+ technologies across 15 categories.
Here's a Python script that generates a pre-call brief:
import requests
import json
RAPIDAPI_KEY = "YOUR_RAPIDAPI_KEY"
def scan_prospect(url):
resp = requests.get(
"https://technology-detection-api.p.rapidapi.com/detect",
params={"url": url},
headers={
"x-rapidapi-host": "technology-detection-api.p.rapidapi.com",
"x-rapidapi-key": RAPIDAPI_KEY,
},
)
resp.raise_for_status()
data = resp.json()
technologies = data.get("technologies", [])
# Organize by category
categories = {}
for tech in technologies:
cat = tech.get("category", "Other")
name = tech.get("name") or tech.get("technology", "Unknown")
if cat not in categories:
categories[cat] = []
categories[cat].append(name)
print(f"\n{'='*50}")
print(f" PRE-CALL BRIEF: {url}")
print(f"{'='*50}\n")
for cat, techs in sorted(categories.items()):
print(f" {cat}: {', '.join(techs)}")
# Flag opportunities
tech_names = [t.get("name", "").lower() for t in technologies]
print(f"\n --- TALKING POINTS ---")
if not any("analytics" in t.get("category", "").lower() for t in technologies):
print(" > No analytics detected — pitch analytics setup")
if not any("cdn" in t.get("category", "").lower() for t in technologies):
print(" > No CDN detected — pitch performance optimization")
if "wordpress" in tech_names:
print(" > WordPress detected — pitch maintenance/security/migration")
if not any(t in tech_names for t in ["hubspot", "mailchimp", "klaviyo", "sendgrid"]):
print(" > No email marketing tool detected — pitch email automation")
return data
# Scan before your next pitch
scan_prospect("https://prospect-website.com")
Competitive Benchmarking
Even more powerful: scan the top 10 competitors in your client's space.
def competitive_benchmark(urls):
all_techs = {}
for url in urls:
try:
resp = requests.get(
"https://technology-detection-api.p.rapidapi.com/detect",
params={"url": url},
headers={
"x-rapidapi-host": "technology-detection-api.p.rapidapi.com",
"x-rapidapi-key": RAPIDAPI_KEY,
},
)
resp.raise_for_status()
techs = resp.json().get("technologies", [])
for t in techs:
name = t.get("name") or t.get("technology", "Unknown")
if name not in all_techs:
all_techs[name] = 0
all_techs[name] += 1
except Exception as e:
print(f"Error scanning {url}: {e}")
print(f"\n TECHNOLOGY ADOPTION ACROSS {len(urls)} COMPETITORS")
print(f" {'='*45}")
for tech, count in sorted(all_techs.items(), key=lambda x: x[1], reverse=True):
pct = count / len(urls) * 100
bar = "#" * int(pct / 5)
print(f" {tech:.<30} {count}/{len(urls)} ({pct:.0f}%) {bar}")
competitors = [
"https://competitor1.com",
"https://competitor2.com",
"https://competitor3.com",
]
competitive_benchmark(competitors)
This tells you things like: "7 out of 10 competitors use Cloudflare, but your client doesn't" or "Everyone has Google Analytics except your client." These become concrete, data-backed recommendations in your proposal.
What This Does for Your Close Rate
When you walk into a call and say:
"I noticed you're running WordPress 5.x with no CDN. Your page load time is probably 4-5 seconds. Your top 3 competitors are all on Cloudflare with sub-2-second loads. We can fix that in a week."
...that's a completely different conversation than "We do web optimization."
Specificity wins deals.
Getting Started
The Technology Detection API has a free tier (50 requests/month) and paid plans starting at $9/month for 2,000 scans.
For an agency scanning 20-30 prospects per month plus competitor analysis, the free tier might be enough to start. The $9 plan covers most small agencies easily.
Python wrapper on GitHub: techdetect-python
How do you research prospects before pitching? I'd love to hear what other tools or workflows agencies are using for competitive intelligence.
Top comments (0)