Free tools Windows power users keep installed
One-click scans. No signup required.
To identify technologies across many websites, choose between a hosted lookup API, a bulk-upload service, or local Python fingerprinting. Hosted services reduce the work of maintaining detection data; local code gives you control over fetching and processing. Neither can reveal every part of a site’s stack: they infer technologies from signals that are publicly observable, while hidden server-side components may leave no detectable trace.
Choose a bulk workflow for your volume and scan needs
The right approach depends on how many domains you have, how fresh the results need to be, and how much infrastructure you want to operate. The documented product limits and capabilities differ; the available sources do not provide a controlled head-to-head accuracy comparison.
As an Amazon Associate I earn from qualifying purchases.
| Approach | Batch and processing | Freshness and depth | Cost information | Operational control |
|---|---|---|---|---|
| Wappalyzer bulk upload | Upload a CSV or TXT file with up to 100,000 URLs; export results as CSV or JSON. | Cached results are described as verified within the last 30 days. Live-only lookups are available. | Live-only lookups count as five lookups each. Current API plan pricing is listed separately. | Simple file-based workflow; less control over request handling than your own client. |
| Wappalyzer API | Up to 10 URLs per request and a documented limit of 10 requests per second. | Ordinary lookups use cached or existing data; live recursive scans can take up to 15 minutes and may be asynchronous. | One credit per URL for an ordinary lookup; five credits per URL for a live recursive lookup. API access requires a plan. | You control batching, persistence, retries, and downstream processing in your client. |
| BuiltWith Domain API | High-throughput lookup accepts up to 64 root domains or subdomains. Larger bulk jobs can return a job ID for background processing. | Documentation describes database lookups and excludes live lookup of results absent from its database in the high-throughput mode. | The cited API documentation does not establish current pricing or one-off purchase availability. | API integration; documentation lists XML, JSON, CSV, and XLSX output. |
| Local Python fingerprinting | Batch size, concurrency, and scheduling are yours to implement. | Analyzes the pages and assets you fetch; coverage depends on the fingerprint data and signals available. | No hosted lookup credits are required, but you own the computing and maintenance costs. | Maximum control over fetching, retries, timeouts, persistence, and result handling. |
Use Wappalyzer’s bulk lookup page for a large file-based job when its cached/live options and export formats fit. Use an API when results need to flow directly into a Python pipeline. Consider local fingerprinting when you want to inspect chosen pages yourself, then send only selected sites to a hosted live scan.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
What “pay-per-use” means for these services
Wappalyzer meters API lookups in credits, but API access is plan-based
Wappalyzer’s API documentation charges one credit per URL for an ordinary lookup and five credits per URL for a live recursive lookup. Its current public pricing page, accessed in 2026, says API access requires a plan. It lists Pro at $250 per month for 5,000 credits, Business at $450 per month for 20,000 credits, and Enterprise at $850 or more per month for 200,000 or more credits. The same page lists 50 monthly technology lookups for a free account; that figure should not be treated as API access. Prices are in US dollars and can change, so verify the current pricing page before budgeting.
#1 Best Overall
Credit-metered use is not the same as an established, no-subscription pay-as-you-go option. The documented bulk upload is a separate workflow from API requests: its limit of 100,000 URLs applies to the uploaded CSV or TXT list, not to a single API call. The upload page recommends cached results when speed and completeness are preferred; live-only lookups count as five lookups each.
BuiltWith documents bulk APIs, not a verified pay-per-use price
BuiltWith’s Domain API documentation describes multi-domain lookups, a bulk jobs endpoint, and output formats, but it does not establish current pricing or whether the service can be bought as one-off usage without a plan. Check current vendor terms directly before comparing cost per domain.
Use Wappalyzer’s API from Python
The documented endpoint is GET https://api.wappalyzer.com/v2/lookup/. Send the API key in the x-api-key header. The endpoint accepts up to 10 URLs per request and allows 10 requests per second. A shallow request with recursive=false analyzes one page and can return immediately, but Wappalyzer describes it as less complete. A live recursive scan costs five credits per URL and can run asynchronously; the documentation says a crawl can take up to 15 minutes. Results can be delivered through a callback or retrieved in a later request.
A resilient client should preserve each response as it arrives instead of holding the whole job in memory. The following example shows the basic request shape for one batch; it deliberately leaves API-key management, input parsing, retries, and asynchronous callback handling to your application.
Rank #3
import os
import requests
API_KEY = os.environ["WAPPALYZER_API_KEY"]
ENDPOINT = "https://api.wappalyzer.com/v2/lookup/"
urls = [
"https://example.com",
"https://example.org",
]
response = requests.get(
ENDPOINT,
headers={"x-api-key": API_KEY},
params={"urls": ",".join(urls), "recursive": "false"},
timeout=30,
)
response.raise_for_status()
results = response.json()
print(results)
For a production batch job, add these safeguards:
- Normalize and validate input URLs, and split them into batches of no more than 10 URLs.
- Throttle requests to remain within the documented 10-request-per-second limit; avoid launching parallel workers that exceed it collectively.
- Set a request timeout, retry transient failures with backoff, and record permanent failures separately so one bad domain does not discard a run.
- Persist the requested URL, returned final URL when present, timestamp, scan mode, and raw response. This lets you revisit results without losing their context.
- For recursive scans, store callback or job state and make result processing idempotent, so a repeated delivery does not create duplicate records.
- Keep the API key in an environment variable or server-side secret store. Do not publish it in a script or place it in client-side code.
Wappalyzer says its dataset is continuously updated and aims to re-verify identified technologies on each website at least monthly. That is a vendor statement about its dataset process, not an independent guarantee that a particular result is current or complete. Its FAQ also says it combines limited information collected through its browser extension, in accordance with its privacy policy, with in-depth analysis from in-house crawlers. Read Wappalyzer’s API FAQ for its own description of that process.
Run a BuiltWith bulk lookup
BuiltWith’s high-throughput Domain API accepts up to 64 root domains or subdomains in one lookup. The documented mode excludes text, metadata, attributes, contacts, and live lookup of results that are absent from its database. Its bulk Domain Jobs API handles larger work asynchronously: small batches may return immediately, while larger ones return a job ID to poll or otherwise process according to the API documentation. Output formats listed for the Domain API are XML, JSON, CSV, and XLSX.
Build your client around the documented response mode rather than assuming every submission is synchronous. Store the job ID alongside your input and retrieve the eventual result before marking the batch complete. Protect the API key with server-side secret storage and consult the official Domain API documentation for current request parameters and response behavior.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Fingerprint sites locally with Python
A local detector fetches pages and matches observable signals against fingerprint rules. The Wappalyzer project describes technology categories such as content management systems, web frameworks, ecommerce platforms, JavaScript libraries, and analytics. A separate third-party project, wappalyzerpy, describes a pure-Python package that can analyze fetched responses or fetch URLs itself, using signals in headers, cookies, HTML, metadata, and script references. It also documents an optional browser mode for JavaScript-heavy sites. It is not an official Wappalyzer SDK.
Best Value
- Used Book in Good Condition
Before adopting a third-party detector, check its current Python requirement, fingerprint-data source, release activity, and license. A local implementation also makes you responsible for request timeouts, concurrency, retries, storage, and respecting applicable site access rules. Browser-based rendering can expose client-side signals that a plain HTTP fetch misses, but it adds operational complexity and still cannot prove the presence of hidden infrastructure.
Build a hybrid workflow for better triage
A practical design is to run a bounded local first pass, then route uncertain, important, or JavaScript-heavy sites to a hosted live scan. This is a workflow recommendation, not a measured accuracy advantage. Keep the evidence attached to each finding so analysts can distinguish what the scan observed from what it inferred.
- Prepare the input. Normalize the domain list, remove duplicates, and retain the original value for auditability.
- Run a controlled local pass. Set request timeouts and concurrency limits; record HTTP status, the page or asset inspected, and matched signals where the tool exposes them.
- Flag uncertain cases. Route sites with sparse signals, conflicting detections, or client-rendered pages to a deeper hosted scan when the additional cost and delay are justified.
- Keep provenance. Store the tool and mode, observation timestamp, requested and final URL, and raw result alongside each detection.
- Report confidence honestly. Describe a detection as an indicator supported by the observed response, not as proof of every component in the site’s stack.
Evaluate results without overstating them
Choose a workflow by comparing operational fit, not by assuming one detector is universally more accurate. The cited product documentation describes features and limits; it does not establish comparative precision or recall.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11- Volume and throughput: account for the batch limit, request rate, and whether large jobs run asynchronously.
- Cost: distinguish per-URL credits from the subscription required to access an API; verify any vendor pricing that is not documented.
- Freshness and depth: identify whether a result comes from cached data, a one-page request, a recursive crawl, or pages you fetched locally.
- Output and integration: choose formats your downstream pipeline can ingest and preserve enough raw data to audit decisions.
- Evidence: retain matched signals and timestamps where available, and distinguish observed technology indicators from inferences.
- Operational ownership: decide who handles throttling, retries, failures, fingerprint updates, and secure key storage.
No detector can reliably list a site’s entire technology stack from public pages alone. A visible CMS fingerprint, script reference, or response header is evidence of an exposed signal; absence of a match does not prove a technology is absent, and a front-end detection does not establish what runs behind the server.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




