Technology Lookup API
Detect a Site’s Technologies With CPE Names Attached.
Pass a URL. The API loads the site in real time and detects what it runs on, from CMS and JavaScript libraries to CDN and analytics. Each technology comes back with its categories, its version when the site reveals it, and a CPE name.
Request
GET /
Response · 200 OK
-
urlshttps://www.deepinfo.com/ · 200
-
technologiesCloudflare · CDN · confidence 100 Google Font API · Font scripts · confidence 100
-
cpecpe:/a:deepvendor:cloudflareCVE matching
check_date 2026-09-23T14:45:13Z
Fingerprint a URL Down to Its Technologies.
Each URL the page loaded comes back under urls with its HTTP status, so you can see exactly what was fingerprinted.
| Parameter | Type | Description | |
|---|---|---|---|
url | string | Required | The website to analyze, as a full URL with its scheme. |
Request
curl "https://api.deepinfo.com/v1/lookup/technology?url=https://www.deepinfo.com" \
-H "apikey: YOUR_API_KEY"import requests
r = requests.get(
"https://api.deepinfo.com/v1/lookup/technology",
params={"url": "https://www.deepinfo.com"},
headers={"apikey": "YOUR_API_KEY"},
)
for t in r.json()["technologies"]:
print(t["name"], t["categories"], t["version"], t["cpe"])const url = encodeURIComponent('https://www.deepinfo.com')
const r = await fetch(
`https://api.deepinfo.com/v1/lookup/technology?url=${url}`,
{ headers: { apikey: 'YOUR_API_KEY' } }
)
const { technologies } = await r.json()
for (const t of technologies) console.log(t.name, t.cpe)
Response
{
"urls": { "https://www.deepinfo.com/": { "status": 200 } },
"technologies": [
{
"slug": "cloudflare",
"name": "Cloudflare",
"categories": ["CDN"],
"confidence": 100,
"version": "",
"clean_version": null,
"cpe": "cpe:/a:deepvendor:cloudflare",
"…": "description, alternative_cpe_names, website, icon"
},
{
"slug": "google-font-api",
"name": "Google Font API",
"categories": ["Font scripts"],
"confidence": 100,
"…": "…"
}
],
"connection_status": "success",
"version": 1,
"check_date": "2026-09-23T14:45:13.348Z"
}
From a Fingerprint to a CVE.
A technology name is useful to a person. A CPE name is useful to a vulnerability database, because CVE records list the products they affect as CPE ranges.
Each detected technology carries one, which is how Deepinfo matches what a site runs to the CVEs that affect it. Vulnerability Finder runs that whole chain from a URL in one call.
# 1. What does the site run?
GET /v1/lookup/technology?url=…
→ technologies[].cpe
# 2. Which CVEs affect it?
GET /v1/discovery/vulnerability-finder?url=…
# 3. How urgent is each one?
GET /v1/discovery/vulnerability-detail?cve=…
→ CVSS, EPSS, CISA KEV, CWE- What the site runs, as CPE names (lookup/technology?url=…)
- Which CVEs affect it (vulnerability-finder?url=…)
- How urgent each one is (vulnerability-detail?cve=…)
What Each Field Tells You.
| Field | Meaning |
|---|---|
technologies[].categories | What the technology is, for example CDN or Font scripts. |
technologies[].confidence | How sure the detection is, from 0 to 100. |
version, clean_ | The version string the site reveals, empty when it reveals none, and its numeric form or null. |
cpe, alternative_ | The CPE name used for vulnerability matching, and any alternates. |
urls | Every URL that was loaded, with the HTTP status it returned. null when nothing could be loaded. |
connection_ | success when the site was reached. |
One detected technology
Cloudflare CDN · confidence 100
Its CPE name
cpe:/a:deepvendorvendorcloudflareproduct noneversionthe site reveals none
CVE records list the products they affect as CPE ranges, so this name is how what the site runs is matched to the CVEs that affect it.
Where a Stack Fingerprint Gets Used.
Vulnerability Management
Turn a site’s stack into CPE names your CVE matching can use, instead of keeping a hand-written inventory of versions.
Attack Surface Management
Record what each public web property runs, and notice when a framework or library changes.
Third-Party Risk
See what a vendor’s public site is built on before you ask about it in a review.
Live Loads, Retries and Limits.
| Loaded live | The site is loaded live at request time, so a call takes longer than a record lookup. 503 means the analyzer is busy and 504 that it timed out: retry after a short wait. |
|---|---|
| End of life | In External Attack Surface Management, detected technologies are also checked for end-of-life status. |
| Rate limits | Plan-dependent. The default is one request per second per key and endpoint. See rate limits. |
Questions About Technology Lookup API
What is a CPE name?
CPE, the Common Platform Enumeration, is a structured name for a product: its vendor, product and version. alternative_ lists other names the same technology is known by.
Do we need Technology if we already call Web Data?
No. Web Data returns the same technologies, with the same fields, next to the page’s metadata, links, headers and cookies. Technology is the lighter call when the stack is all you need.
Can we fingerprint a suspicious site without visiting it?
Yes. The API loads the site, so the visit never comes from an analyst’s browser.
How is the Technology API priced?
As part of an API services plan, by volume and frequency, separately from the platform. Each lookup counts against your plan’s quota at one unit per request. See Data & API pricing.
Can analysts see a site’s technologies without writing code?
Yes. Instant Lookups runs the Technology lookup in the Deepinfo Platform.
Fingerprint Your Sites First.
Run the API against a few of your own properties and compare the result with what you think they run. We set up access and answer schema questions on a short call.