---
title: "Tech stack — detect what a website is built with"
method: POST
path: "/web/techstack"
tags: ["Web"]
---

# Tech stack — detect what a website is built with

`POST /web/techstack`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/web/techstack`
- Auth: API key in header `x-api-key`

Fetches a public URL and fingerprints the web technologies it is built with — a BuiltWith / Wappalyzer-style detector. Returns a list of detected `technologies`, each with its `categories`, a `confidence` (`high`, `medium`, `low`), an optional `version`, and the `evidence` that matched. Covers JavaScript frameworks and libraries (React, Vue.js, Angular, Svelte, jQuery), web frameworks / static site generators (Next.js, Nuxt.js, Gatsby, Remix, SvelteKit, Astro, Hugo), CMS and website builders (WordPress, Drupal, Joomla, Ghost, Wix, Squarespace, Webflow), e-commerce (Shopify, WooCommerce, Magento, BigCommerce), analytics, ad pixels, and tag managers (Google Analytics, Google Tag Manager, Meta Pixel, LinkedIn, Bing, TikTok/Pinterest/Reddit pixels, Segment, Hotjar, Microsoft Clarity), CDNs, UI frameworks and fonts, payments (Stripe, PayPal, Klarna), live chat, marketing automation, A/B testing, consent management, CAPTCHAs (reCAPTCHA, hCaptcha, Turnstile), video, and search. It also inspects response headers to identify the web server (nginx, Apache, IIS), the CDN / hosting provider (Cloudflare, CloudFront, Fastly, Vercel, Netlify), and the server-side language / framework (PHP, ASP.NET, Ruby on Rails, Django, Laravel, Express). Results are directional, not exhaustive. The `render` fetch strategy is one of `browser` (headless browser that executes JavaScript — the default, so client-injected scripts like analytics, tag managers and pixels are detected), `auto` (HTTP, escalating to a real browser only when blocked or JS-rendered), or `http` (HTTP only, no JavaScript — fastest, but sees only the server HTML); defaults to `browser`. Only public pages are supported; respect each site's terms of use and robots directives. Also returns `unmatched_evidence` (when present) — third-party script/stylesheet host domains and a `<meta generator>` value the detector saw on the page but doesn't yet have a named signature for; useful for spotting a vendor worth requesting coverage for. `is_infrastructure` flags a URL whose host looks like backend CDN/DNS/cloud-vendor infrastructure rather than a real, human-navigable website. `reachable` is false only when the target could not be fetched at all (even after an automatic www./plain-HTTP retry) — `technologies` may still be partially populated from DNS-based signals alone in that case, and `failure_reason` explains what happened.

## Headers

- `x-api-key` string, required

## Request body

- WebTechStackOption
  - `render` 'browser' | 'auto' | 'http'
  - `url` string, required

## Response `200`

OK

- WebTechStackResponseDoc
  - `code` integer
  - `data` WebTechStackResult
    - `categories` string[]
    - `count` integer
    - `detector_version` string
    - `failure_reason` string
    - `final_url` string
    - `is_infrastructure` boolean: IsInfrastructure is true when the URL's host looks like backend infrastructure (a CDN, DNS, or cloud-vendor hostname) rather than a real, human-navigable website.
    - `reachable` boolean
    - `technologies` TechstackTechnology[]
      - `categories` string[]
      - `confidence` string: high | medium | low
      - `evidence` string: Evidence is a short, human-readable hint of what matched (e.g. a script host or a <meta generator> value) — not the full markup.
      - `name` string
      - `version` string
    - `unmatched_evidence` TechstackUnmatchedEvidence
      - `domains` string[]
      - `generator` string
    - `url` string
  - `msg` string

## Other responses

- `400`: Invalid or missing URL / render value
- `500`: Internal server error
- `502`: Upstream fetch failed
- `503`: Target blocked the fetch or could not be retrieved

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/afac9b012a27?raw)
