Lookup API
Perform near-instant technology lookups with the Lookup API. Results are fetched from our comprehensive database of millions of websites. If we haven't seen a domain before, we'll index it immediately and report back within minutes.
Results are site-wide and may even include pages behind logins that typical crawlers can't reach. Where available, country, language and traffic data are included.
GET
https://api.wappalyzer.com/lookup/v2/
Property | Description |
---|---|
Execution | Synchronous / Asynchronous (when response yields no results) |
Request timeout | 30s |
Rate limit | 1 request / second (up to ten domains per request) |
Name | Description |
---|---|
urls (required) |
Between one and ten website URLs, comma-separated (e.g.
https://example.com,https://example.org ).
|
callback_url |
If instant results are unavailable, A POST request will be made
to the callback URL upon completion of the request (e.g.
https://yourdomain.com ).
|
denoise |
Exclude low confidence results (true (default) or
false ).
|
max_age |
Return results of up to max_age months old
(1 -12 ). Set to 1 to only
return fresh results. Defaults to 2 .
|
squash |
Combine monthly results into a single set when
true (default). Set to false to group
results by month.
|
sets |
Comma-separated list of additional attribute sets to include in
the results (e.g. meta,social ). See
Attribute sets.
|
A callback URL is a public endpoint hosted on your own server. If you request a domain that we haven't seen before, you'll initially get an empty response while the website is being indexed. Minutes later, your callback URL will receive a POST request with the final results. Without a callback URL, you will not get these results unless you make another request.
In this example we request two URLs with a callback URL and the default options.
curl -H "x-api-key: <your api key>" "https://api.wappalyzer.com/lookup/v2/?urls=https://example.com,https://example.org&callback_url=https://yourdomain.com"
We get a result for each URL, in this case one successful and one
empty. An empty response means the website has either not been
indexed, or no technologies were found. The crawl
field
indicates that a crawl has been initiated. When ready, results will
be sent to the callback URL provided.
The trafficRank
value is a relative traffic indicator.
A higher number means a more trafficked website. A value of zero
means traffic information is unavailable.
[ { "url": "https://example.com", "technologies": [ { "slug": "craft-cms", "name": "Craft CMS", "categories": [ { "id": 1, "slug": "cms", "name": "CMS" } ], "versions": [ "3.0.0" ], "trafficRank": 1000, "confirmedAt": 1612824037, } ] }, { "url": "https://example.org", "technologies": [], // No results available "crawl": true // Crawl initiated } ]
[ { "url": "https://example.com", "errors": [ "Something went wrong" ] } ]
The callback URL will receive a POST request when results become available. The callback URL will be invoked seperately for each requested URL.
{ "url": "https://example.com", "technologies": [ { "slug": "craft-cms", "name": "Craft CMS", "versions": [ "3.0.0" ], "categories": [ { "id": 1, "slug": "cms", "name": "CMS" } ] } ] }
In this example we set squash
to false
to
get results grouped by month. This is useful to see changes to the
technology stack over time. We set max_age
to
12
to get up to a year's worth of data (subject to
availability).
curl -H "x-api-key: <your api key>" "https://api.wappalyzer.com/lookup/v2/?urls=https://example.com&callback_url=https://yourdomain.com&squash=false&max_age=12"
[ { "url": "https://example.com", "results": [ { "monthYear": "01-2020", // The month in which the technologies were indentified "technologies": [ { "slug": "craft-cms", "name": "Craft CMS", "categories": [ { "id": 1, "slug": "cms", "name": "CMS" ], "versions": [ "3.0.0" ], "trafficRank": 1000 "confirmedAt": 1612824037, } ] }, { "monthYear": "02-2020", "technologies": [ ... ] } ] } ]
Subscribe to receive occasional product updates.