WebTech Intel Integration¶
Discover technology stacks to qualify leads and personalize outreach.
Overview¶
The WebTech Intel API reveals what technologies companies use on their websites, helping you:
- Qualify leads by technology fit (e.g., companies using React, HubSpot, AWS)
- Identify competitors in your target accounts
- Personalize outreach with technology-specific messaging
- Build targeted lists based on tech stack criteria
How It Works¶
graph LR
A[Company ID] --> B{WebTech Intel API}
B --> C[Technology Details]
B --> D[Summary Metrics]
C --> E[Name, Version, Confidence]
D --> F[Top Technologies, Categories]
- Get a Company ID from the delivered companies endpoint
- Query WebTech Intel API with optional filters (category, confidence)
- Receive technology insights including detected technologies and analysis status
Endpoints¶
| Endpoint | Description | Use Case |
|---|---|---|
GET /companies/{id}/webtech-intel |
Full technology list with pagination | Detailed analysis, filtering |
GET /companies/{id}/webtech-intel/summary |
Top 3-5 technologies + metrics | Quick overview, badges |
Technology Categories¶
OpenProspect categorizes detected technologies:
| Category | Examples | Use Case |
|---|---|---|
javascript_framework |
React, Vue, Angular, Next.js | Frontend technology fit |
programming_language |
Python, TypeScript, Ruby | Backend technology fit |
analytics |
Google Analytics, Mixpanel, Segment | Marketing maturity |
cms |
WordPress, Contentful, Strapi | Content management needs |
ecommerce |
Shopify, WooCommerce, Magento | E-commerce focus |
hosting |
AWS, Cloudflare, Vercel | Infrastructure scale |
marketing |
HubSpot, Mailchimp, Marketo | Marketing stack |
cdn |
Cloudflare, Fastly, Akamai | Performance focus |
security |
Cloudflare, reCAPTCHA | Security awareness |
Analysis Status¶
| Status | Description |
|---|---|
completed |
Analysis successful with results |
pending |
Analysis currently in progress |
failed |
Analysis failed or scan unsuccessful |
not_analyzed |
No analysis has been performed |
Get Technology Details¶
Retrieve full technology stack with filtering and pagination.
Request¶
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
category |
string | null | Filter by category (e.g., javascript_framework) |
min_confidence |
integer | 0 | Minimum confidence score (0-100) |
limit |
integer | 100 | Results per page (1-200) |
offset |
integer | 0 | Results to skip |
Code Examples¶
import httpx
API_KEY = "lnc_live_your_api_key_here"
BASE_URL = "https://api.openprospect.io/api/v1"
company_id = "a45e6452-496e-4bb3-86a0-3c99475c0fc3"
response = httpx.get(
f"{BASE_URL}/companies/{company_id}/webtech-intel",
params={"min_confidence": 80, "limit": 50},
headers={"Authorization": f"Bearer {API_KEY}"}
)
data = response.json()
print(f"Total technologies: {data['total']}")
print(f"Analysis status: {'Success' if data['scan_successful'] else 'Failed'}")
print(f"Confidence score: {data['confidence_score']:.0%}")
for tech in data["technologies"]:
version = f" v{tech['version']}" if tech["version"] else ""
print(f" - {tech['name']}{version} ({tech['category']}, {tech['confidence']}% confidence)")
const API_KEY = "lnc_live_your_api_key_here";
const BASE_URL = "https://api.openprospect.io/api/v1";
const companyId = "a45e6452-496e-4bb3-86a0-3c99475c0fc3";
const response = await fetch(
`${BASE_URL}/companies/${companyId}/webtech-intel?min_confidence=80&limit=50`,
{ headers: { "Authorization": `Bearer ${API_KEY}` } }
);
const data = await response.json();
console.log(`Total technologies: ${data.total}`);
console.log(`Analysis status: ${data.scan_successful ? "Success" : "Failed"}`);
for (const tech of data.technologies) {
const version = tech.version ? ` v${tech.version}` : "";
console.log(` - ${tech.name}${version} (${tech.category}, ${tech.confidence}% confidence)`);
}
const API_KEY = "lnc_live_your_api_key_here";
const BASE_URL = "https://api.openprospect.io/api/v1";
interface TechnologyDetail {
id: string;
name: string;
version: string;
category: string;
confidence: number;
all_categories: string[];
}
interface WebTechDetailsResponse {
technologies: TechnologyDetail[];
total: number;
analyzed_at?: string;
scan_successful: boolean;
confidence_score: number;
has_more: boolean;
limit: number;
offset: number;
}
const companyId = "a45e6452-496e-4bb3-86a0-3c99475c0fc3";
const response = await fetch(
`${BASE_URL}/companies/${companyId}/webtech-intel?min_confidence=80&limit=50`,
{ headers: { "Authorization": `Bearer ${API_KEY}` } }
);
const data: WebTechDetailsResponse = await response.json();
console.log(`Total technologies: ${data.total}`);
console.log(`Confidence: ${(data.confidence_score * 100).toFixed(0)}%`);
for (const tech of data.technologies) {
console.log(` - ${tech.name} (${tech.category})`);
}
using System.Net.Http.Headers;
using System.Text.Json;
var apiKey = "lnc_live_your_api_key_here";
var baseUrl = "https://api.openprospect.io/api/v1";
var companyId = "a45e6452-496e-4bb3-86a0-3c99475c0fc3";
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", apiKey);
var response = await client.GetAsync(
$"{baseUrl}/companies/{companyId}/webtech-intel?min_confidence=80&limit=50");
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
var options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower,
PropertyNameCaseInsensitive = true
};
var data = JsonSerializer.Deserialize<WebTechDetailsResponse>(json, options);
Console.WriteLine($"Total technologies: {data.Total}");
Console.WriteLine($"Confidence: {data.ConfidenceScore:P0}");
foreach (var tech in data.Technologies)
{
var version = !string.IsNullOrEmpty(tech.Version) ? $" v{tech.Version}" : "";
Console.WriteLine($" - {tech.Name}{version} ({tech.Category}, {tech.Confidence}%)");
}
}
// Response classes
public record WebTechDetailsResponse(
List<TechnologyDetail> Technologies,
int Total,
DateTime? AnalyzedAt,
bool ScanSuccessful,
double ConfidenceScore,
bool HasMore,
int Limit,
int Offset
);
public record TechnologyDetail(
string Id,
string Name,
string Version,
string Category,
int Confidence,
List<string> AllCategories
);
Example Response¶
{
"technologies": [
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"name": "React",
"version": "18.2.0",
"category": "javascript_framework",
"confidence": 100,
"all_categories": ["javascript_framework", "frontend"]
},
{
"id": "550e8400-e29b-41d4-a716-446655440002",
"name": "Next.js",
"version": "14.0",
"category": "javascript_framework",
"confidence": 95,
"all_categories": ["javascript_framework", "frontend", "server_side_rendering"]
},
{
"id": "550e8400-e29b-41d4-a716-446655440003",
"name": "Google Analytics",
"version": "GA4",
"category": "analytics",
"confidence": 100,
"all_categories": ["analytics", "marketing"]
},
{
"id": "550e8400-e29b-41d4-a716-446655440004",
"name": "HubSpot",
"version": "",
"category": "marketing",
"confidence": 90,
"all_categories": ["marketing", "crm", "analytics"]
},
{
"id": "550e8400-e29b-41d4-a716-446655440005",
"name": "Cloudflare",
"version": "",
"category": "cdn",
"confidence": 100,
"all_categories": ["cdn", "security", "hosting"]
}
],
"total": 23,
"analyzed_at": "2025-11-28T14:30:00Z",
"scan_successful": true,
"confidence_score": 0.92,
"has_more": false,
"limit": 50,
"offset": 0
}
Get Technology Summary¶
Get top technologies and category counts for quick overview.
Request¶
Code Examples¶
response = httpx.get(
f"{BASE_URL}/companies/{company_id}/webtech-intel/summary",
headers={"Authorization": f"Bearer {API_KEY}"}
)
data = response.json()
print(f"Status: {data['status']}")
print(f"Total technologies: {data['total_technologies']}")
print(f"Categories: {data['categories']}")
print("Top technologies:")
for tech in data["top_technologies"]:
print(f" - {tech['name']} ({tech['category']})")
const response = await fetch(
`${BASE_URL}/companies/${companyId}/webtech-intel/summary`,
{ headers: { "Authorization": `Bearer ${API_KEY}` } }
);
const data = await response.json();
console.log(`Status: ${data.status}`);
console.log(`Total technologies: ${data.total_technologies}`);
console.log("Top technologies:");
for (const tech of data.top_technologies) {
console.log(` - ${tech.name} (${tech.category})`);
}
interface TechnologyItem {
id: string;
name: string;
version: string;
category: string;
confidence: number;
}
interface WebTechSummaryResponse {
total_technologies: number;
analyzed_at?: string;
scan_successful: boolean;
confidence_score: number;
categories: Record<string, number>;
top_technologies: TechnologyItem[];
status: "completed" | "pending" | "failed" | "not_analyzed";
}
const response = await fetch(
`${BASE_URL}/companies/${companyId}/webtech-intel/summary`,
{ headers: { "Authorization": `Bearer ${API_KEY}` } }
);
const data: WebTechSummaryResponse = await response.json();
console.log(`Status: ${data.status}`);
console.log(`Categories:`, data.categories);
for (const tech of data.top_technologies) {
console.log(` - ${tech.name}`);
}
var response = await client.GetAsync(
$"{baseUrl}/companies/{companyId}/webtech-intel/summary");
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
var options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower,
PropertyNameCaseInsensitive = true
};
var data = JsonSerializer.Deserialize<WebTechSummaryResponse>(json, options);
Console.WriteLine($"Status: {data.Status}");
Console.WriteLine($"Total: {data.TotalTechnologies}");
Console.WriteLine("Categories:");
foreach (var (category, count) in data.Categories)
{
Console.WriteLine($" {category}: {count}");
}
Console.WriteLine("Top technologies:");
foreach (var tech in data.TopTechnologies)
{
Console.WriteLine($" - {tech.Name} ({tech.Category})");
}
}
public record WebTechSummaryResponse(
int TotalTechnologies,
DateTime? AnalyzedAt,
bool ScanSuccessful,
double ConfidenceScore,
Dictionary<string, int> Categories,
List<TechnologyItem> TopTechnologies,
string Status
);
public record TechnologyItem(
string Id,
string Name,
string Version,
string Category,
int Confidence
);
Example Response¶
{
"total_technologies": 23,
"analyzed_at": "2025-11-28T14:30:00Z",
"scan_successful": true,
"confidence_score": 0.92,
"categories": {
"javascript_framework": 4,
"analytics": 3,
"marketing": 2,
"cdn": 2,
"hosting": 1
},
"top_technologies": [
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"name": "React",
"version": "18.2.0",
"category": "javascript_framework",
"confidence": 100
},
{
"id": "550e8400-e29b-41d4-a716-446655440002",
"name": "Next.js",
"version": "14.0",
"category": "javascript_framework",
"confidence": 95
},
{
"id": "550e8400-e29b-41d4-a716-446655440003",
"name": "Google Analytics",
"version": "GA4",
"category": "analytics",
"confidence": 100
},
{
"id": "550e8400-e29b-41d4-a716-446655440004",
"name": "HubSpot",
"version": "",
"category": "marketing",
"confidence": 90
}
],
"status": "completed"
}
Use Cases¶
Filter Companies by Technology¶
def find_companies_using_tech(companies: list, target_tech: str) -> list:
"""Find companies using a specific technology."""
matches = []
for company in companies:
webtech = httpx.get(
f"{BASE_URL}/companies/{company['id']}/webtech-intel/summary",
headers={"Authorization": f"Bearer {API_KEY}"}
).json()
# Check if target technology is in top technologies
tech_names = [t["name"].lower() for t in webtech.get("top_technologies", [])]
if target_tech.lower() in tech_names:
matches.append({
"company": company["name"],
"technologies": tech_names
})
return matches
# Find companies using React
react_companies = find_companies_using_tech(delivered_companies, "React")
Technology-Based Lead Scoring¶
def score_by_technology_fit(company_id: str, target_stack: list) -> dict:
"""Score a company based on technology stack alignment."""
webtech = httpx.get(
f"{BASE_URL}/companies/{company_id}/webtech-intel",
params={"min_confidence": 70},
headers={"Authorization": f"Bearer {API_KEY}"}
).json()
company_tech = {t["name"].lower() for t in webtech["technologies"]}
target_tech = {t.lower() for t in target_stack}
overlap = company_tech & target_tech
fit_score = len(overlap) / len(target_tech) * 100 if target_tech else 0
return {
"fit_score": round(fit_score, 1),
"matching_tech": list(overlap),
"total_tech": len(company_tech)
}
# Score companies against your ideal tech stack
target_stack = ["React", "TypeScript", "AWS", "PostgreSQL"]
score = score_by_technology_fit(company_id, target_stack)
print(f"Technology fit: {score['fit_score']}%")
print(f"Matching: {', '.join(score['matching_tech'])}")
Competitor Detection¶
def detect_competitors(company_id: str, competitor_tech: dict) -> list:
"""Detect competitor technologies in a company's stack."""
webtech = httpx.get(
f"{BASE_URL}/companies/{company_id}/webtech-intel",
headers={"Authorization": f"Bearer {API_KEY}"}
).json()
detected = []
company_tech = {t["name"].lower(): t for t in webtech["technologies"]}
for competitor, alternatives in competitor_tech.items():
if competitor.lower() in company_tech:
detected.append({
"competitor": competitor,
"alternatives": alternatives,
"confidence": company_tech[competitor.lower()]["confidence"]
})
return detected
# Define competitors and your alternatives
competitors = {
"Salesforce": ["HubSpot", "Pipedrive"],
"Mailchimp": ["SendGrid", "Postmark"],
"Google Analytics": ["Mixpanel", "Amplitude"]
}
competitor_findings = detect_competitors(company_id, competitors)
for finding in competitor_findings:
print(f"Uses {finding['competitor']} - suggest {finding['alternatives']}")
Next Steps¶
- Jobs Integration - Analyze company hiring activity
- Client Integration Guide - Full CRM sync workflow
- API Reference - Interactive API explorer