StackPeek API Documentation

Free technology stack detection API. Detect CMS, frameworks, analytics, CDN, libraries, and more from any website. No API keys, no authentication required.

Base URL: https://stackpeek.dev/api/v1

Authentication

No authentication is required. The API is free and open for everyone. Simply make HTTP requests to the endpoints below.

POST /detect

POST /api/v1/detect

Detect technologies used by a website. Optionally filter by specific categories.

Request Body

FieldTypeRequiredDescription
url string required The website URL to analyze (must include protocol)
categories array optional Filter by specific categories (e.g. ["cms", "javascript-frameworks"]). Omit to scan all categories.

Example Request

cURL
curl -X POST "https://stackpeek.dev/api/v1/detect" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "categories": ["cms", "javascript-frameworks"]
  }'

Example Response

JSON Response
{
  "status": "success",
  "data": {
    "url": "https://example.com",
    "scannedAt": "2026-02-14T10:30:00.000Z",
    "technologies": [
      {
        "name": "React",
        "category": "javascript-frameworks",
        "categoryLabel": "JavaScript Frameworks",
        "website": "https://react.dev",
        "version": "18.2.0",
        "confidence": 95,
        "evidence": ["html:data-reactroot", "script:react-dom"]
      },
      {
        "name": "WordPress",
        "category": "cms",
        "categoryLabel": "CMS",
        "website": "https://wordpress.org",
        "confidence": 100,
        "evidence": ["html:wp-content", "meta:generator"]
      }
    ],
    "meta": {
      "totalDetected": 12,
      "categoriesFound": 5,
      "scanDurationMs": 1420
    }
  }
}

GET /detect

GET /api/v1/detect

Detect technologies via GET request. URL passed as query parameter. No category filtering in GET variant.

Query Parameters

ParamTypeRequiredDescription
url string required The website URL to analyze (URL-encoded)

Example Request

cURL
curl "https://stackpeek.dev/api/v1/detect?url=https%3A%2F%2Fexample.com"

GET /categories

GET /api/v1/categories

Returns all technology categories with fingerprint counts.

Example Response

JSON Response
{
  "status": "success",
  "data": [
    { "id": "cms", "label": "CMS", "count": 8 },
    { "id": "javascript-frameworks", "label": "JavaScript Frameworks", "count": 12 },
    { "id": "analytics", "label": "Analytics", "count": 15 },
    { "id": "cdn", "label": "CDN", "count": 6 }
  ]
}

GET /technologies

GET /api/v1/technologies

Returns all detectable technologies across all categories.

Example Response

JSON Response
{
  "status": "success",
  "data": [
    {
      "name": "React",
      "category": "javascript-frameworks",
      "categoryLabel": "JavaScript Frameworks",
      "website": "https://react.dev",
      "hasVersionDetection": true
    },
    {
      "name": "WordPress",
      "category": "cms",
      "categoryLabel": "CMS",
      "website": "https://wordpress.org",
      "hasVersionDetection": true
    }
  ]
}

Response Format

All responses are JSON. Successful responses include "status": "success". Error responses include "error" and "message" fields.

Technology Object Structure

FieldTypeDescription
namestringTechnology name (e.g. "React")
categorystringCategory ID (e.g. "javascript-frameworks")
categoryLabelstringHuman-readable category (e.g. "JavaScript Frameworks")
websitestringOfficial website URL
versionstringDetected version (if available)
confidencenumberDetection confidence (0-100)
evidencearrayFingerprint matches (e.g. ["html:data-reactroot"])

Available Categories

Category IDs
cms, javascript-frameworks, backend-frameworks, css-frameworks,
analytics, cdn, web-servers, ecommerce, javascript-libraries,
marketing, payment, security, tag-managers, programming-languages,
seo, hosting, font-services, build-tools

Error Codes

StatusMeaning
400Bad Request — Missing URL, Invalid URL, or Blocked URL (SSRF protection)
404Not Found — Endpoint does not exist
429Too Many Requests — Rate limit exceeded (30 req/min)
500Internal Server Error — Something went wrong
502Bad Gateway — Target site unreachable
504Gateway Timeout — Target site timeout

Error Response Example

400 Bad Request
{
  "error": "Missing URL",
  "message": "Provide a \"url\" field in the request body"
}

Rate Limits

The API applies rate limiting to protect service quality:

LimitValue
Requests per minute30 per IP address
Window60 seconds sliding window

When rate limited, the API returns a 429 status with a Retry-After header.

Rate limit headers are included in every response: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset.

cURL Example

terminal
# Detect all technologies
curl "https://stackpeek.dev/api/v1/detect?url=https%3A%2F%2Fexample.com"

# Detect specific categories
curl -X POST "https://stackpeek.dev/api/v1/detect" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "categories": ["cms", "javascript-frameworks"]
  }'

# List all categories
curl "https://stackpeek.dev/api/v1/categories"

JavaScript Example

app.js
// Detect all technologies
const response = await fetch(
  'https://stackpeek.dev/api/v1/detect?url=' +
  encodeURIComponent('https://example.com')
);
const data = await response.json();
console.log(data);

// Detect specific categories
const postResponse = await fetch('https://stackpeek.dev/api/v1/detect', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    url: 'https://example.com',
    categories: ['cms', 'javascript-frameworks']
  }),
});
const result = await postResponse.json();
console.log(result);

Python Example

main.py
import requests

# Detect all technologies
response = requests.get(
    'https://stackpeek.dev/api/v1/detect',
    params={'url': 'https://example.com'}
)
data = response.json()
print(data)

# Detect specific categories
response = requests.post(
    'https://stackpeek.dev/api/v1/detect',
    json={
        'url': 'https://example.com',
        'categories': ['cms', 'javascript-frameworks']
    }
)
result = response.json()
print(result)
Part of the SoftVoyagers Ecosystem