API Reference
Enrich any domain with a full technology stack breakdown — CMS, e-commerce platform, analytics, frameworks, CDN, and more.
Overview
The TechPeeker API lets you programmatically detect the technology stack of any website. Pass a domain and get back a structured breakdown of every technology we can identify — from the CMS and e-commerce platform to analytics tools, JavaScript frameworks, CDNs, and hosting providers.
The API is REST-based, returns JSON, and uses standard HTTP status codes. All requests must be authenticated with a bearer token.
Fast
Typical response under 3 seconds with our cached enrichment layer.
Broad coverage
Detects 200+ technologies across 30+ categories.
Usage-based
Pay only for enrichments you use. No seat fees.
Authentication
All API requests require a bearer token in the Authorization header. You can get your API key from the API access page.
Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxKeep your API key secret. Never expose it in client-side code or public repositories. Keys are prefixed tp_live_ for production and tp_test_ for sandbox.
Base URL
https://api.techpeeker.com/v1All endpoints are versioned under /v1. We will maintain backwards compatibility within a version.
Rate Limits
Rate limits are enforced per API key. Exceeding the limit returns a 429 Too Many Requests response.
| Plan | Requests / minute | Requests / month |
|---|---|---|
| Business | 60 | 50,000 |
| Enterprise | Custom | Custom |
Rate limit headers are included on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
/enrich/domainFull technology stack enrichment for a given domain.
Request Body
| Field | Type | Description |
|---|---|---|
| domainrequired | string | The domain to enrich. Can include or omit the protocol — we normalise it.e.g. shopify.com |
| include_metadata | boolean | Return page metadata (title, description, language, favicon). Defaults to true.e.g. true |
| include_technologies | boolean | Return the full list of detected technologies. Defaults to true.e.g. true |
| fresh | boolean | Bypass the cache and force a live crawl. Counts as a fresh enrichment credit. Defaults to false.e.g. false |
| timeout_ms | integer | Max milliseconds to wait for the target site to respond. Min 1000, max 15000. Defaults to 10000.e.g. 8000 |
Response Schema
| Field | Type | Description |
|---|---|---|
| domain | string | The normalised domain that was enriched. |
| enriched_at | string (ISO 8601) | Timestamp of when the enrichment was performed. |
| metadatanullable | object | Page metadata — title, description, language, favicon_url. Null if include_metadata was false. |
| technologies | array | List of detected technology objects, each with name and category. |
| summary | object | High-level summary: cms, ecommerce, analytics, frameworks, hosting, cdn, total_technologies. |
Code Examples
curl -X POST https://api.techpeeker.com/v1/enrich/domain \
-H "Authorization: Bearer tp_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"domain": "shopify.com",
"include_metadata": true,
"include_technologies": true
}'Example Response
HTTP 200 OK
{
"domain": "shopify.com",
"enriched_at": "2026-04-23T10:15:00Z",
"metadata": {
"title": "Shopify - Start Your Business",
"description": "Try Shopify free and start an ecommerce business.",
"favicon_url": "https://shopify.com/favicon.ico",
"language": "en"
},
"technologies": [
{
"name": "Shopify",
"category": "Ecommerce"
},
{
"name": "React",
"category": "JavaScript Framework"
},
{
"name": "Google Analytics",
"category": "Analytics"
}
],
"summary": {
"cms": null,
"ecommerce": "Shopify",
"analytics": ["Google Analytics"],
"frameworks": ["React"],
"hosting": "Shopify Cloud",
"cdn": "Fastly",
"total_technologies": 14
}
}Error Codes
Errors follow a consistent shape:
{
"error": {
"code": "invalid_domain",
"message": "The domain provided is not a valid hostname.",
"status": 422
}
}| HTTP Status | Error Code | Description |
|---|---|---|
| 400 | bad_request | The request body is malformed or missing required fields. |
| 401 | unauthorized | No API key was provided, or the key is invalid. |
| 403 | forbidden | Your plan does not include access to this endpoint. |
| 422 | invalid_domain | The domain could not be parsed or resolved. |
| 429 | rate_limited | You have exceeded your rate limit. Retry after X-RateLimit-Reset. |
| 504 | target_timeout | The target domain did not respond within the allowed timeout. |
| 500 | internal_error | An unexpected error occurred on our side. These are rare and monitored. |
Ready to start enriching?
Get your API key and start detecting technologies on any domain in minutes.