Skip to main content

Technology lookup API

What any website is built with, as JSON

A Wappalyzer-style lookup over HTTP: one URL in, every technology with its version and the evidence for it out — read off the page as a real browser renders it.

By · Last updated: October 2026

TL;DR

POST a URL to /technologies and get every technology the page shows a visitor: CMS or shop platform, JavaScript frameworks, analytics and tag managers, CDN, web server, payment and chat providers — each with its version when the page gives it away, a confidence score, its categories and its CPE name. The page is rendered in a real browser first. No model, 1 credit per lookup.

Free plan, no credit card. 1,000 credits a month.

Try it now — no signup

Free · no signup · 2 runs every 10 minutes

…or try one of these

Paste up to 10 URLs

Each URL counts as one of your free runs; the ones past the limit are listed with a free API key to run them.

Your result will appear here.

Enter a URL above, or pick one of the example pages.

The request

One POST, one bearer token

POST /technologies
curl -X POST https://urlpipe.dev/technologies \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "sync": true}'
Response
{
  "final_url": "https://example.com/",
  "technologies": [
    {
      "name": "WordPress",
      "slug": "wordpress",
      "version": "6.4.2",
      "confidence": 100,
      "categories": [{ "slug": "cms", "name": "CMS" }],
      "website": "https://wordpress.org",
      "cpe": "cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:*",
      "detected_by": ["html", "meta", "script_src"],
      "implied_by": []
    },
    …
  ]
}

Signals

What is read

Detection matches what the page shows against an open, community-maintained database of over 7,000 technology fingerprints. Everything comes from one visit to the page, plus the site's DNS records and its robots.txt — nothing else on the site is requested.

SignalWhat it gives away
Rendered HTMLMeta generator tags, script URLs, inline scripts and styles, markup and visible text
Response headers, TLS issuerWeb server, language, CDN, hosting
Cookies, third-party ones includedAnalytics, A/B testing, consent and session frameworks
Scripts and requests, including ones a tag manager adds after loadTrackers, chat widgets, payment providers
JavaScript globals and the live DOMFrameworks and their versions — jQuery.fn.jquery, React, Vue
DNS — MX, NS, SOA, CNAMEMail provider, DNS host, the CDN in front of the site

Because the page is rendered, a technology a site only loads with JavaScript — a tag-managed tracker, a client-side framework — is found, where a lookup that reads only the HTML misses it.

Response

What each technology comes with

  • version — when the page gives it away, null otherwise.
  • confidence — 0 to 100. Most fingerprints are conclusive and score 100; weaker signals add up.
  • categories — what kind of technology it is, as a slug and a name: cms, analytics, cdn…
  • cpe — its CPE 2.3 name, to look it up in vulnerability databases such as the NVD.
  • detected_by and implied_by — the signals that gave it away, or the technologies that imply it (WordPress implies PHP and MySQL).

Every field is described in the /technologies reference.

Use cases

What people build with it

  • Lead qualification. Score a list of prospects by the platform, shop system or analytics stack their site runs on — Shopify stores, HubSpot users, sites without analytics.
  • Security and dependency audits. Spot outdated library versions on sites you look after and match them to known vulnerabilities through the CPE name.
  • Third-party script inventories. List every tracker, tag and widget a page loads, including the ones a tag manager adds after load.
  • Market research. Measure how a framework or a CMS spreads across a list of sites, with labels to group the results.
Is it on Shopify?
import requests

res = requests.post(
    "https://urlpipe.dev/technologies",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"url": "https://example-store.com", "sync": True},
)
stack = {t["slug"] for t in res.json()["technologies"]}
print("shopify" in stack)

Bulk

Many sites at once

For a list of domains, drop sync and let each result arrive at your webhook; your plan's parallel-request limit sets how many run at once. A lookup you already made is reused for free while it is fresher than max_age, and a failed one costs nothing. /scrape returns the technologies together with the metadata or a screenshot from one visit.

Limits

What it does not do

  • One page, not a site scan. It visits the URL you send; a technology that only shows itself on another page, behind a login or after a click is not seen.
  • No history. It reports what the page runs today, not what it ran last year.
  • No reverse lookup. It cannot list the sites that use a technology — send it the sites.
  • Blocking ads hides ad networks. page_options.block_ads keeps them out of the page, and so out of the result.
  • Public pages only. Private and intranet addresses are refused.

Pricing

What it costs

CallCreditsFree (calls/mo)Starter (calls/mo)Pro (calls/mo)Scale (calls/mo)
/technologies1 credit1,00020,00055,000175,000

Cache hits and failed requests cost nothing. Paid plans are never cut off: past the allowance, extra credits are $1.50 per 1,000 credits. See every plan.

FAQ

Frequently asked questions

It answers the same question — what a site runs on — from an open database of over 7,000 fingerprints, read off the page as a real browser renders it, and returns JSON. It looks up one URL at a time; it does not keep a history or list the sites that use a technology.

Make your first request in five minutes.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.