Tech Stack Detector Template
- Next.js
- TypeScript
Enter any website and see the frameworks, hosting, analytics and services it runs on.
A Next.js app that shows what a website is built with. Enter a domain and get its CMS, frameworks, web server, analytics, tag managers, email and payment providers, grouped by category with a filter for each. Use it for competitor research and sales prospecting, or lift the route to enrich leads with their tech stack.

What it does
- Grouped by category
- Sorts every technology into its category, biggest groups first, with a filter chip for each one.
- Beyond the page
- Finds email and other services from DNS as well as frameworks from the page, such as Google Workspace or SendGrid.
- Any address works
- Accepts stripe.com or a full URL, and normalizes it so repeat scans of the same site hit the cache.
- Shareable scans
- Open the app with ?url= in the address to scan a site straight away, handy for links in a CRM or chat.
- Keeps your key private
- The browser only talks to your own API route, which holds the key, caches scans for 6 hours and rate-limits visitors.
How it works
The route: normalize the address, answer from the cache, then call Tech Stack Detector.
export async function GET(request: Request) {
const raw = str(new URL(request.url).searchParams.get('url'), 300);
if (!raw) return fail('Enter a website, like stripe.com');
const url = normalize(raw);
if (!url) return fail('That doesn’t look like a website address');
const key = `stack:${url}`;
const hit = fromCache(key, TTL_MS);
if (hit) return Response.json(hit);
const blocked = guard(request);
if (blocked) return blocked;
return respond(async () => {
const data = await callApi('techstackdetector', { query: { url } });
toCache(key, data);
return data;
});
}Deploy it
- Get a free API key
The free plan includes 200 credits a month, no card needed. Create your key.
- Deploy it
Click Deploy to Vercel. Vercel copies the repo to your GitHub account and asks for
APIVERVE_API_KEY: paste your key there. - Open your app
Vercel builds it and gives you a live URL, usually in about a minute. Every push to the repo redeploys it.
Try the Website Tech Stack Detector API — the call this template makes
No key required to try it. Get a key to use it in your app.
{
"status": "ok",
"error": null,
"data": {
"url": "https://wordpress.org/",
"finalUrl": "https://wordpress.org/",
"statusCode": 200,
"mode": "static",
"technologyCount": 13,
"technologies": [
{
"name": "WordPress",
"slug": "wordpress",
"categories": [
"CMS",
"Blogs"
],
"version": "7.2",
"confidence": 100,
"implied": false,
"detectedBy": [
"html",
"scriptSrc",
"scripts",
"headers",
"meta",
"dom"
],
"website": "https://wordpress.org",
"icon": "WordPress.svg",
"description": "WordPress is a free and open-source content management system written in PHP and paired with a MySQL or MariaDB database. Features include a plugin architecture and a template system.",
"cpe": "cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:*"
},
{
"name": "WordPress Block Editor",
"slug": "wordpress-block-editor",
"categories": [
"Page builders"
],
"version": null,
"confidence": 100,
"implied": false,
"detectedBy": [
"html"
],
"website": "https://wordpress.org/gutenberg/",
"icon": "WordPress.svg",
"description": "Sites using the WordPress Block Editor, also known as Gutenberg.",
"cpe": null
},
{
"name": "WordPress Site Editor",
"slug": "wordpress-site-editor",
"categories": [
"Page builders"
],
"version": null,
"confidence": 100,
"implied": false,
"detectedBy": [
"html"
],
"website": "https://wordpress.org/documentation/article/site-editor/",
"icon": "WordPress.svg",
"description": "Full Site Editing enables users to design and customize their entire WordPress website with a block-based editor.",
"cpe": null
},
{
"name": "Gutenberg",
"slug": "gutenberg",
"categories": [
"WordPress plugins",
"Editors"
],
"version": "24.2.0",
"confidence": 100,
"implied": false,
"detectedBy": [
"scriptSrc",
"dom"
],
"website": "https://github.com/WordPress/gutenberg",
"icon": "Gutenberg.png",
"description": "Gutenberg is the code name for the new block based editor introduced in WordPress 5.",
"cpe": null
},
{
"name": "MySQL",
"slug": "mysql",
"categories": [
"Databases"
],
"version": null,
"confidence": 100,
"implied": true,
"detectedBy": [],
"website": "https://mysql.com",
"icon": "MySQL.svg",
"description": "MySQL is an open-source relational database management system.",
"cpe": "cpe:2.3:a:mysql:mysql:*:*:*:*:*:*:*:*"
},
{
"name": "PHP",
"slug": "php",
"categories": [
"Programming languages"
],
"version": null,
"confidence": 100,
"implied": false,
"detectedBy": [
"scripts"
],
"website": "https://php.net",
"icon": "PHP.svg",
"description": "PHP is a general-purpose scripting language used for web development.",
"cpe": "cpe:2.3:a:php:php:*:*:*:*:*:*:*:*"
},
{
"name": "Nginx",
"slug": "nginx",
"categories": [
"Web servers",
"Reverse proxies"
],
"version": null,
"confidence": 100,
"implied": false,
"detectedBy": [
"headers"
],
"website": "https://nginx.org/en",
"icon": "Nginx.svg",
"description": "Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.",
"cpe": "cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*"
},
{
"name": "Google Font API",
"slug": "google-font-api",
"categories": [
"Font scripts"
],
"version": null,
"confidence": 100,
"implied": false,
"detectedBy": [
"dom"
],
"website": "https://fonts.google.com/",
"icon": "Google Font API.svg",
"description": "Google Font API is a web service that supports open-source font files that can be used on your web designs.",
"cpe": null
},
{
"name": "Google Tag Manager",
"slug": "google-tag-manager",
"categories": [
"Tag managers"
],
"version": null,
"confidence": 100,
"implied": false,
"detectedBy": [
"html"
],
"website": "https://www.google.com/tagmanager",
"icon": "Google Tag Manager.svg",
"description": "Google Tag Manager is a tag management system (TMS) that allows you to quickly and easily update measurement codes and related code fragments collectively known as tags on your website or mobile app.",
"cpe": null
},
{
"name": "HSTS",
"slug": "hsts",
"categories": [
"Security"
],
"version": null,
"confidence": 100,
"implied": false,
"detectedBy": [
"headers"
],
"website": "https://www.rfc-editor.org/rfc/rfc6797#section-6.1",
"icon": null,
"description": "HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.",
"cpe": null
},
{
"name": "Priority Hints",
"slug": "priority-hints",
"categories": [
"Performance"
],
"version": null,
"confidence": 100,
"implied": false,
"detectedBy": [
"dom"
],
"website": "https://wicg.github.io/priority-hints/",
"icon": "Priority Hints.svg",
"description": "Priority Hints exposes a mechanism for developers to signal a relative priority for browsers to consider when fetching resources.",
"cpe": null
},
{
"name": "Open Graph",
"slug": "open-graph",
"categories": [
"Miscellaneous"
],
"version": null,
"confidence": 100,
"implied": false,
"detectedBy": [
"dom"
],
"website": "https://ogp.me",
"icon": "Open Graph.svg",
"description": "Open Graph is a protocol that is used to integrate any web page into the social graph.",
"cpe": null
},
{
"name": "RSS",
"slug": "rss",
"categories": [
"Miscellaneous"
],
"version": null,
"confidence": 100,
"implied": false,
"detectedBy": [
"dom"
],
"website": "https://www.rssboard.org/rss-specification",
"icon": "RSS.svg",
"description": "RSS is a family of web feed formats used to publish frequently updated works—such as blog entries, news headlines, audio, and video—in a standardized format.",
"cpe": null
}
],
"fingerprintsUpdatedAt": "2026-10-19T01:59:39.005Z"
}
}