Skip to content

Python client for the Technology Detection API - detect 141+ technologies on any website

License

Notifications You must be signed in to change notification settings

dapdevsoftware/techdetect-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

techdetect

Python License: MIT RapidAPI httpx

Detect 141+ technologies on any website with a single API call.

techdetect is a clean Python client for the Technology Detection API on RapidAPI. Pass in a URL, get back a structured list of every framework, CMS, analytics tool, CDN, and more running on that site — complete with version numbers and confidence scores.

Get your free API keyrapidapi.com/dapdev-dapdev-default/api/technology-detection-api


Install

pip install techdetect

Quick Start

from techdetect import TechDetect

with TechDetect(api_key="YOUR_RAPIDAPI_KEY") as td:
    result = td.detect("https://wordpress.org")

    print(f"Scanned: {result.url}")
    print(f"Found {len(result.technologies)} technologies ({result.scan_time_ms}ms)\n")

    for tech in result.technologies:
        version = f" v{tech.version}" if tech.version else ""
        cats = ", ".join(tech.categories)
        print(f"  {tech.name}{version}  [{cats}]  confidence={tech.confidence:.0%}")

Output

Scanned: https://wordpress.org
Found 18 technologies (847ms)

  WordPress v6.7.1  [CMS, Blog]  confidence=100%
  PHP  [Programming Language]  confidence=100%
  MySQL  [Database]  confidence=100%
  jQuery v3.7.1  [JavaScript Library]  confidence=100%
  Nginx  [Web Server]  confidence=100%
  Yoast SEO v23.5  [SEO]  confidence=100%
  WooCommerce v9.3.3  [Ecommerce]  confidence=100%
  Google Analytics  [Analytics]  confidence=100%
  Gravatar  [Widgets]  confidence=100%
  reCAPTCHA  [Security]  confidence=100%
  Google Tag Manager  [Tag Manager]  confidence=100%
  Cloudflare  [CDN, Security]  confidence=100%
  React v18.3.1  [JavaScript Framework]  confidence=97%
  Webpack  [Build Tool]  confidence=95%
  Lodash v4.17.21  [JavaScript Library]  confidence=95%
  Moment.js v2.30.1  [JavaScript Library]  confidence=90%
  Chart.js v4.4.4  [JavaScript Graphics]  confidence=88%
  Underscore.js v1.13.7  [JavaScript Library]  confidence=85%

API Reference

TechDetect(api_key: str)

Synchronous client. Use as a context manager or call .close() manually.

td = TechDetect(api_key="YOUR_KEY")
result = td.detect("https://example.com")
td.close()

# Or with context manager (recommended):
with TechDetect(api_key="YOUR_KEY") as td:
    result = td.detect("https://example.com")

td.detect(url: str) -> DetectionResult

Scan a URL and return all detected technologies.

Parameter Type Description
url str Full URL to scan, including scheme (e.g. https://example.com)

Returns: DetectionResult


AsyncTechDetect(api_key: str)

Async client for use in asyncio / FastAPI / aiohttp contexts. Drop-in replacement for TechDetect.

import asyncio
from techdetect import AsyncTechDetect

async def main():
    async with AsyncTechDetect(api_key="YOUR_KEY") as td:
        result = await td.detect("https://example.com")
        print(result.technologies)

asyncio.run(main())

await td.detect(url: str) -> DetectionResult

Same signature and return type as the sync version.


DetectionResult

Field Type Description
url str The URL that was scanned
technologies list[Technology] All detected technologies
scan_time_ms int How long the scan took in milliseconds
cached bool Whether the result came from cache

Helper methods

# Check if a specific technology is present
result.has("WordPress")       # True / False
result.has("react")           # case-insensitive

# Filter by category
cms     = result.by_category("CMS")
cdn     = result.by_category("CDN")
js_libs = result.by_category("JavaScript Library")

Technology

Field Type Description
name str Technology name (e.g. "WordPress")
categories list[str] Categories (e.g. ["CMS", "Blog"])
confidence float Detection confidence from 0.0 to 1.0
version str | None Detected version, if available
detected_by list[str] Which signals triggered detection

More Examples

Bulk scan multiple URLs

import asyncio
from techdetect import AsyncTechDetect

URLS = [
    "https://wordpress.org",
    "https://shopify.com",
    "https://squarespace.com",
]

async def main():
    async with AsyncTechDetect(api_key="YOUR_KEY") as td:
        results = await asyncio.gather(*[td.detect(u) for u in URLS])

    for r in results:
        cms = r.by_category("CMS")
        cms_names = ", ".join(t.name for t in cms) or "none detected"
        print(f"{r.url:35s}  CMS: {cms_names}")

asyncio.run(main())

Compare competitor tech stacks

from techdetect import TechDetect

with TechDetect(api_key="YOUR_KEY") as td:
    shopify = td.detect("https://shopify.com")
    bigcommerce = td.detect("https://bigcommerce.com")

# Find shared technologies
shopify_names = {t.name for t in shopify.technologies}
bigcommerce_names = {t.name for t in bigcommerce.technologies}

shared = shopify_names & bigcommerce_names
only_shopify = shopify_names - bigcommerce_names
only_bigcommerce = bigcommerce_names - shopify_names

print(f"Shared ({len(shared)}): {', '.join(sorted(shared))}")
print(f"Only Shopify ({len(only_shopify)}): {', '.join(sorted(only_shopify))}")
print(f"Only BigCommerce ({len(only_bigcommerce)}): {', '.join(sorted(only_bigcommerce))}")

Get Your API Key

This library calls the Technology Detection API hosted on RapidAPI.

  1. Go to rapidapi.com/dapdev-dapdev-default/api/technology-detection-api
  2. Click Subscribe — there is a free tier available
  3. Copy your X-RapidAPI-Key from the dashboard
  4. Pass it to TechDetect(api_key="...")

The free tier is enough to explore the API and build prototypes. Upgrade for higher rate limits and bulk scanning.


Error Handling

import httpx
from techdetect import TechDetect

with TechDetect(api_key="YOUR_KEY") as td:
    try:
        result = td.detect("https://example.com")
    except httpx.HTTPStatusError as e:
        if e.response.status_code == 401:
            print("Invalid API key — check your RapidAPI key")
        elif e.response.status_code == 429:
            print("Rate limit hit — upgrade your RapidAPI plan")
        else:
            print(f"API error: {e.response.status_code}")
    except httpx.TimeoutException:
        print("Request timed out — the site may be slow or unreachable")

License

MIT — see LICENSE.

Built on httpx. Powered by the Technology Detection API on RapidAPI.

About

Python client for the Technology Detection API - detect 141+ technologies on any website

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages