Technology lookup

Find out the technology stack of any website, such as the CMS or ecommerce platform. Perform near-instant queries against our comprehensive database of millions of websites or analyse websites live for real-time results.

In addition to technologies, responses optionally include company details, verified email addresses, phone numbers, social media profiles, locale information, keywords, metadata and more.




Property Description
Execution Synchronous
Asynchronous when using recursive=true
Request timeout 30 seconds
Rate limit 5 requests per second (up to 10 URLs per request)
Pricing 1 credit per URL
2 credits per URL when using live=true with recursive=true

Query string parameters

Name Description
urls (required)

Between one and ten website URLs, comma separated.


Multiple URLs are not supported with recursive=false.


Scan websites in real-time. Defaults to false to return cached results from our database (faster and more complete).

If no record is found, live=true is automatically used instead. Use recursive=false to get live results in the same request.


Index multiple pages (follows internal website links for increased coverage). Defaults to true for best results.

If no record is found or live=true is used, using recursive=true causes the request to be completed asynchronously, meaning technologies will not be included in the initial response and the website is being crawled. To get the results when they become available, use callback_url or repeat the request at a later time (free for up to one hour).

A crawl can take up to 15 minutes. We recommend using callback_url or repeating the request up to three times every five minutes.

When using both live=true and recursive=true, callback_url is required and requests cost two credits instead of one.


When an asynchronous request completes, a POST request is made to the callback URL with the results. A callback URL is an public endpoint hosted on your own server.


Required when using both live=true and recursive=true.


Send debug information to the specified email address when using callback_url. If you're not receiving any results on your callback URL, use this to get more detailed information.

Example: [email protected].

For testing purposes only, please do not use in production.


Comma-separated list of additional field sets to include in the results (e.g. meta,social). Some fields require an eligible plan.

See Fields.

Use all to include all fields.


Exclude low confidence results. Defaults to true. Setting this to false yields more results but is more likely to include false positives.


Return results that have been verified at least once before min_age months ago. Defaults to 0 for most recent results.

Use a higher value in combination with squash=false and max_age for historic results grouped by month (up to 12 months per request).


Return results that have been verified at least once in the last max_age months. Defaults to 2 for best results.

To get the most up-to-date but fewer results, use max_age=1. For real-time results, use live=true instead.

Use a higher value to get more but less recently verified results. These results are more likely to include websites that no longer use the technology.

Use a higher value in combination with squash=false and optionally min_age for historic results grouped by month (up to 12 months per request).


Merge monthly results into a single set. Defaults to true. Set to false to group results by month.

Response callback

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 or use recursive=false to peform a shallow scan.


Subscribe to receive occasional product updates.