Skip to content

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]
  1. Get a Company ID from the delivered companies endpoint
  2. Query WebTech Intel API with optional filters (category, confidence)
  3. 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

GET /api/v1/companies/{company_id}/webtech-intel

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

curl -X GET "https://api.openprospect.io/api/v1/companies/{company_id}/webtech-intel?min_confidence=80&limit=50" \
  -H "Authorization: Bearer ${OPENPROSPECT_API_KEY}"
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

GET /api/v1/companies/{company_id}/webtech-intel/summary

Code Examples

curl -X GET "https://api.openprospect.io/api/v1/companies/{company_id}/webtech-intel/summary" \
  -H "Authorization: Bearer ${OPENPROSPECT_API_KEY}"
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