Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Certificate changed, valid to 2027-01-09
Added "get_js_runtime_behaviour", "get_js_runtime_coverage", "get_js_runtime_health" and 4 more; removed "get_js_fingerprinter2", "get_js_fingerprinter2_coverage", "get_js_fingerprinter2_health" and 4 more; changed the definition of "wait_for_scan"
⟨44 unchanged words⟩ to true if the scan is still running. The security verdict is computed after the scan completes, usually within about a minute: until then verdict_pending is true and the verdict fields are empty, so a risk score of 0 is not yet a verdict. scan_id is the UUID of a ScanMalware scan.
Get Runtime JS Behaviour — Get the runtime JavaScript behaviour recorded for one scan: overall risk, risk scores, number of scripts, eval and Function-constructor calls and high-risk events, with a behavioural signature and composite hash. include_detailed_events adds the individual events. scan_id is the UUID of a ScanMalware scan.
Get Runtime JS Analysis Coverage — Get how many scans have runtime JavaScript fingerprints: coverage percentage and the number of unique composite hashes and signatures. Describes the service, not a scan.
Check Runtime JS Analysis Health — Check whether the runtime JavaScript analysis service is up, with its version.
Get Runtime JS Behaviour Stats — Get platform-wide statistics for runtime JavaScript analysis: risk distribution, averages and totals of eval calls and high-risk events. Describes the service, not a scan.
Search Runtime JS Behaviour by Composite Hash — Find scans whose runtime JavaScript behaviour has this composite hash, each with the target URL, overall risk and time. The same composite hash across hosts usually means the same kit.
Search Runtime JS Behaviour by Signature — Find scans with this behavioural signature (for example 'setTimeout:30|fetch:4|complex'), each with the target URL, overall risk and time. An uncached query can take up to 90 seconds by default.
Find Similar Runtime JS Behaviour — Find scans whose runtime JavaScript behaviour is similar to this scan's, above min_similarity; include_self keeps the scan itself. scan_id is the UUID of a ScanMalware scan.
Get Runtime JS Behaviour — Get the runtime JavaScript behaviour recorded for one scan: overall risk, risk scores, number of scripts, eval and Function-constructor calls and high-risk events, with a behavioural signature and composite hash. include_detailed_events adds the individual events. scan_id is the UUID of a ScanMalware scan.
Get Runtime JS Analysis Coverage — Get how many scans have runtime JavaScript fingerprints: coverage percentage and the number of unique composite hashes and signatures. Describes the service, not a scan.
Check Runtime JS Analysis Health — Check whether the runtime JavaScript analysis service is up, with its version.
Get Runtime JS Behaviour Stats — Get platform-wide statistics for runtime JavaScript analysis: risk distribution, averages and totals of eval calls and high-risk events. Describes the service, not a scan.
Search Runtime JS Behaviour by Composite Hash — Find scans whose runtime JavaScript behaviour has this composite hash, each with the target URL, overall risk and time. The same composite hash across hosts usually means the same kit.
Search Runtime JS Behaviour by Signature — Find scans with this behavioural signature (for example 'setTimeout:30|fetch:4|complex'), each with the target URL, overall risk and time. An uncached query can take up to 90 seconds by default.
Find Similar Runtime JS Behaviour — Find scans whose runtime JavaScript behaviour is similar to this scan's, above min_similarity; include_self keeps the scan itself. scan_id is the UUID of a ScanMalware scan.
Changed the definition of "find_js_fingerprint_similar_by_hash", "get_ai_analysis", "get_analyzer_results" and 120 more
Find JavaScript files similarJStofingerprintsthebyfilehash.with this content SHA-256, above threshold (default 0.7), up to limit results; exclude_exact_matches drops identical copies. Useful for finding modified versions of a known script.
Changed the definition of "get_favicon", "get_jsfingerprint_similarity_counts", "search_by_favicon" and 5 more
Get the favicon recorded for a scan_id: its size, MD5 and SHA-256 hashes, and the imageitselfbase64-encoded.Usefoundtheismd5falsewithwhensearch_by_faviconnotofaviconpivot.is stored for the scan.
Changed the definition of "get_favicon_stats", "search_js_fingerprint_by_library", "search_js_fingerprint_patterns" and 4 more
Get favicon statistics. This aggregate query can take up to 90 seconds by default.Search JS fingerprints by detected library name. Use identifiers from get_js_library_inventory, such as 'react' or 'nextjs'. The display name 'Next.js' is accepted as an alias for 'nextjs'.
Certificate recorded, valid to 2026-11-10
Authorization not required
First tool surface recorded: 128 tools (server version 1.25.0)
Showing the latest 8 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
GetListanalyzerwhichresultsanalysis modules ran for one scan (for example JavaScript fingerprinting and AI analysis), with each module's status, success flag and timing. Useful for checking why ascan_id.result is missing. scan_id is the UUID of a ScanMalware scan.
Getanalyzerplatform-wide statisticsoverview.for the scan analysis modules: the modules and their run counts. Describes the service, not a particular scan.
GetAPItherootScanMalwaremetadata.API's name, version, status, main endpoints and feature list.
Get the bot-protectiondetectionand CAPTCHA services detected on a scanned page (for example Cloudflare Turnstile), with ascan_id.detected flag. Phishing kits often use these to hide from scanners. scan_id is the UUID of a ScanMalware scan.
Getcapabilitythestatssizebyofdate.ScanMalware's detection content (indicators, detection rules, ClamAV signatures) on a given date (scan_date, YYYY-MM-DD).
Get the clipboardeventswritesforthe page attempted while it was scanned, with the event count and whether collection ran. Empty with an explanatory note when the page wrote nothing. scan_id is the UUID of ascan_id.ScanMalware scan.
Get clipboardstatistics.and pastejacking statistics across the archive: event totals, detections and daily activity.
GetListCPEsthe CPE identifiers (product and version names in the NVD format) derived from the technologies detected on a scanned page, with their source. Useful for matching against vulnerability data. scan_id is the UUID of ascan_id.ScanMalware scan.
Get CPEstatistics.statistics across the archive: scans with CPEs, unique CPEs, total detections, top vendors and products.
Getcertificatethetransparencycertificatesdataissued for adomain.domain according to Certificate Transparency logs, with a found flag.
GetListCTsubdomains of a domain found through Certificate Transparency, with their DNS records (type, IP addresses, TTL) and when they were seen. Useful for finding the other hosts of a domain.
Find CTList domainsonthat Certificate Transparency and DNS data associate with an IPaddress.address, with record counts and the total.
Find domains with names similarCTtodomainsa domain in Certificate Transparency data (for example lookalikes and typosquats), each with adomain.certificate count and the kind of similarity.
GetCTthe certificatetimelinehistoryforof adomain.domain from Certificate Transparency: when certificates were issued and when the certificate changed.
Gethistoricalthescansscanforhistory of a domain(with the total count and the scans, paginated).with page and limit.
GetList the recent scans of a domain and its subdomains, newest first, up to limit; status filters by scan status. Each row has matched_on: 'url' when the scan was submitted for a host under this domain, and only 'final_url' when another site redirected there. A verdict on a final_url-only row belongs to the submitted host, not to this domain.
Getsummaryscanstatisticscounts for adomain.domain: total, unique, completed and failed scans, first and latest scan, and scans in the last 24 hours, 7 days and 30 days.
Get faviconstatistics.statistics across the archive: total favicons, those seen in the last 24 hours and the most common hashes with sample URLs. This aggregate query can take up to 90 seconds by default.
GetCheck whether the ScanMalware APIhealthis up. Returns the service status.
Get intrusion detection (IDS) alertsforraised on the network traffic recorded during one scan, with ascan_id.severity breakdown and total count. Empty when no rule fired. scan_id is the UUID of a ScanMalware scan.
Get statistics for an IPstatisticsaddress(paginated).across the archive: total scans, unique URLs, first and last seen, geolocation, ASN and organisation, BGP and DNS data; paginated.
Get the JARMsignaturesTLS server fingerprints measured for the hosts in one scan, with whether each matches ascan_id.known signature. A shared JARM often points to the same server software or hosting platform, so it is a weak pivot on its own. scan_id is the UUID of a ScanMalware scan.
Get JARMstatistics.statistics across the archive, including the most common signatures. Common signatures usually belong to large hosting platforms.
Get Runtime JSFingerprinter2Behaviour
GetJStheFingerprinter2runtimeresultsJavaScript behaviour recorded for one scan: overall risk, risk scores, number of scripts, eval and Function-constructor calls and high-risk events, with ascan_id.behavioural signature and composite hash. include_detailed_events adds the individual events. scan_id is the UUID of a ScanMalware scan.
⟨5 unchanged words⟩ :true,"readOnlyHint":true,"title":"Get Runtime JSFingerprinter2Behaviour"}
Get Runtime JSFingerprinter2Analysis Coverage
GetJShowFingerprinter2manyfingerprintscanscoverage.have runtime JavaScript fingerprints: coverage percentage and the number of unique composite hashes and signatures. Describes the service, not a scan.
⟨5 unchanged words⟩ :true,"readOnlyHint":true,"title":"Get Runtime JSFingerprinter2Analysis Coverage"}
GetCheck Runtime JSFingerprinter2Analysis Health
GetCheckJSwhetherFingerprinter2thehealthruntimecheck.JavaScript analysis service is up, with its version.
⟨4 unchanged words⟩ openWorldHint":true,"readOnlyHint":true,"title":"GetCheck Runtime JSFingerprinter2Analysis Health"}
Get Runtime JSFingerprinter2Behaviour Stats
GetJSplatform-wideFingerprinter2statisticsstats.for runtime JavaScript analysis: risk distribution, averages and totals of eval calls and high-risk events. Describes the service, not a scan.
⟨5 unchanged words⟩ :true,"readOnlyHint":true,"title":"Get Runtime JSFingerprinter2Behaviour Stats"}
GetList the JavaScriptfingerprintsfiles a scanned page loaded, each with its fingerprint: hashes (SHA-256, SHA-1, MD5, normalized and fuzzy), size metrics, detected library and bundler. The include_* options add function lists, HTTP headers or ML vector details. Useful for collecting script hashes to search for elsewhere. scan_id is the UUID of ascan_id.ScanMalware scan.
GetListJSthefingerprintJavaScript libraries and versions detected across the archive, with how many scans used each; libraryinventory.filters to one library and min_count drops rare versions. Identifiers are lowercase names such as 'react', 'jquery' or 'nextjs'.
GetListJSthe code segmentsfor(functions and blocks) extracted from one scan's JavaScript, each with location, length, snippet and hashes; script_url narrows to one file, paginated with limit and offset. scan_id is the UUID of ascan_id.ScanMalware scan.
GetListsuspicioustheJSJavaScript code segmentsforfrom one scan scored as suspicious, above min_risk_score, with location, snippet and risk details; paginated with limit and offset. scan_id is the UUID of ascan_id.ScanMalware scan.
GetListunknowntheJSJavaScript code segmentsforfrom one scan that match no known library, at least min_code_length long; these are usually the page's own or ascan_id.kit's code. Paginated with limit and offset. scan_id is the UUID of a ScanMalware scan.
GetJSone JavaScript fingerprint record byID.its numeric fingerprint_id: the script URL, scan, hashes, metrics and ML vector information; include_functions and include_http_headers add more detail.
GetJSstatisticsfingerprintonbundlebundledstatistics.JavaScript across the archive for a date range: share of bundled files and the breakdown by bundler (webpack, vite, rollup and so on) and module format.
GetForJSeachfingerprintscript in one scan, report how common its hashprevalenceisforacross the archive, which separates widely used library files from rare, page-specific code. scan_id is the UUID of ascan_id.ScanMalware scan.
GetJSstatisticsfingerprinton JavaScript librarystatistics.detection across the archive for a date range: total fingerprints, detection rate and the most common libraries.
Find JavaScript files whose fingerprint is similarJStofingerprints.the one with this fingerprint_id, above threshold (0 to 1), paginated with limit and offset. exclude_same_scan drops matches from the same scan. Useful for finding variants of one script.
GetCountJShowfingerprintmany archived JavaScript files are similar to the one with this fingerprint_id, per similaritycounts.model (composite, CodeBERT, GraphCodeBERT, AST and handcrafted features), capped at max_count. This query can take up to 90 seconds by default.
GetJSthefingerprintstoredsource.source code of one JavaScript file by its numeric fingerprint_id, with its SHA-256, URL and length. Source can be long.
Getlatestthecapabilitycurrentstats.size of ScanMalware's detection content: indicator count, malware detection rules and ClamAV signatures.
Get the malwaredetailsdetections for files the scanned page delivered, with threat names, detection counts and the detection source. Empty when nothing was detected. scan_id is the UUID of ascan_id.ScanMalware scan.
Get malwarestats.detection statistics across the archive: overall and last-24-hour counts, top threats and hourly trend.
GetNetlogNetwork Log Info
⟨5 unchanged words⟩ :true,"readOnlyHint":true,"title":"GetNetlogNetwork Log Info"}
Get the text read by OCRdatafromforthe scan's screenshot, with language, confidence, word and character counts and any regions flagged as suspicious. Useful when page text is drawn as images. scan_id is the UUID of ascan_id.ScanMalware scan.
Get OCRstats.statistics across the archive: scans with OCR text, average confidence and length, language distribution and daily counts.
Get the Open GraphdataandforTwitter card metadata the scanned page declared (title, description, image, site name). Phishing pages often copy ascan_id.brand's metadata. scan_id is the UUID of a ScanMalware scan.
Get pastejacking findings for one scan: attempts by the page to replace what ascan_id.visitor copies, a common trick for making victims paste malicious commands. Includes a detected flag and a note. scan_id is the UUID of a ScanMalware scan.
GetDescribe the packet capture (PCAP)metadatarecordedforduring one scan: whether it exists, its size, compression and content type. The capture itself is not returned. scan_id is the UUID of ascan_id.ScanMalware scan.
Getplatformthestatistics.current scan queue length, running scans and scans completed in the last 24 hours by visibility.
GetListpopularthe most frequently detected web technologies over the last days (paginated).
GetRDAPregistrationdetailsdata (RDAP) for the scanned domain and its IP addresses: registrar, registration and expiry dates, domain age, nameservers and status. A very young domain is ascan_id.common phishing signal. scan_id is the UUID of a ScanMalware scan.
GetList the most recent public scans, newest first (paginated with page and limit). Each row has the scan ID, URL, status, visibility and submission time. Unlisted and private scans are never included.
Get recentList malwarethreats.threats detected in scans during the last hours (default window set by the API), with totals and grouping by threat.
Get recentList YARAthreats.rule matches from scans in the last hours, each with the scan, URL, rule, category, severity and confidence.
GetsafeGooglebrowsingSafe Browsing threats found for the URLs in one scan, with ascan_id.has_threats flag. scan_id is the UUID of a ScanMalware scan.
GetsafeGooglebrowsingSafestats.Browsing statistics across the archive: total threats, threats in the last 7 days, scans with threats and threat types.
GetCheckIOConematchesscanforagainst threat-intelligence indicator feeds: matching IP addresses and domains the page contacted, the threat types, and ascan_id.summary of total and unique matches. scan_id is the UUID of a ScanMalware scan.
Getscanthe progressbyofscan_id.a running scan: current step, total steps, step name, percentage and status. Useful for checking whether a scan has finished before reading its results. scan_id is the UUID of a ScanMalware scan.
GetListavailablethe user reports and votes filed about one scan (for example marked safe or malicious), with the total count; report_type filters by kind. Empty when nobody has reported the scan. scan_id is the UUID of ascan_id.ScanMalware scan.
Get the full result document of one scan:resultURLsbyandscan_id.redirects, page title, load times, links, network requests, IP addresses, JavaScript files, TLS, fuzzy hashes, screenshot hashes, favicon and the security verdict. The response is large; the compact summary is enough for a verdict. scan_id is the UUID of a ScanMalware scan.
Get a compact summary of one scan:summarysubmittedbyURL,scan_id.final URL after redirects, status, completion time and the security verdict (verdict text, risk level, confidence and risk factors). Useful as the first look at a scan; the verdict is empty for a few seconds after a scan completes. scan_id is the UUID of a ScanMalware scan.
Get screenshotstatistics.statistics across the archive: total screenshots, hash coverage and the distribution of perceptual hash types.
GetListdetectedthe web technologiesfordetected on ascan_id.scanned page (frameworks, CMS, CDN, analytics and so on), with versions where known. scan_id is the UUID of a ScanMalware scan.
GetList the technologies most often detected together with a given technology,combinationswith(paginated).counts; min_occurrences drops rare pairs; paginated.
Get technologystats.detection statistics across the archive: unique technologies, total detections and counts per category. This aggregate query can take up to 90 seconds by default.
Get the raw ASN.1 structure of the TLS certificateASN.1fromdataone scan, for detailed certificate inspection. scan_id is the UUID of ascan_id.ScanMalware scan.
Get the TLSdetailscertificateforthe scanned site presented: subject, issuer, validity dates, whether it was valid or expired, and related details. scan_id is the UUID of ascan_id.ScanMalware scan.
GetListtopthe trackingkeys.and site keys seen on the most sites (analytics IDs, CAPTCHA keys and so on), with the tracker name, category and site count; tracker_type filters by kind.
Get YARAresultsrule matches for one scan, with ascan_id.summary by severity (critical, high, medium, low) and category. Empty when no rule matched. scan_id is the UUID of a ScanMalware scan.
Get the YARA rule matches recorded for one scan, with the matching rules and ascan_id.summary by severity and category. scan_id is the UUID of a ScanMalware scan.
Get YARAstats.statistics across the archive: overall and last-24-hour matches, severity and category distribution and top threats.
RunCompareJSthedifferentialJavaScriptanalysisofforone scan against known libraries and report which code segments match ascan_id.library, which are unknown and which look suspicious, with a per-library breakdown. Matches below min_confidence (default 0.8) are not counted; known library code is excluded unless include_known_libraries is true. scan_id is the UUID of a ScanMalware scan.
SearchList scans whose AIscansanalysisbygaveclassification.a specific classification: LEGITIMATE, LOW_RISK, MODERATE_RISK, HIGH_RISK or CONFIRMED_SCAM. Each result has the URL, title, submission time and the analysis.
SearchList scans that the AIhigh-riskanalysisscans.rated high risk, optionally above min_risk_score and min_confidence, each with URL, title and the analysis. min_risk_score is on the AI's 0-10 risk scale (default 7) and min_confidence is a 0-100 percentage (default 70).
SearchList scans whose AIscansanalysisbynamed a given scamtype.type, such as 'Phishing', each with URL, title, submission time and the analysis (verdict, classification, risk score). The match is on the scam type text the analysis produced.
SearchList scans that the security analyzerhigh-riskscoredscansas high risk, highest first (paginated)., each with URL, risk score, verdict, confidence and analysis time. min_risk_score raises the threshold.
SearchGetscanswhatbytheASNarchive knows about an autonomous system (paginatedASN number, without 'AS').: organisation, total scans, unique URLs, first and last seen and BGP prefixes; paginated.
SearchList scansbywhose page content has a similar fuzzy hash (paginatedhash_type tlsh, ssdeep or sdhash; the value comes from a scan result)., each with URL, title and time; paginated. Useful for finding near-identical copies of a page.
SearchList scansbyof pages served from an IP address (paginated)., each with scan ID, URL and time. On shared hosting and CDNs an IP serves many unrelated sites, so a match is not evidence of a connection.
SearchList scansbywhose server presented this JARMsignatureTLS fingerprint (paginated). Large hosting platforms share JARMs across many unrelated sites, so check what the matches have in common.
SearchListscansthebyscannednameserver.domains that use a given nameserver, with totals and counts per top-level domain. Useful for finding domains registered together.
SearchList scansbyof domains registered through a given registrar (paginated)., with the total. Common registrars match very many domains.
SearchList scansbywhose screenshot has this perceptual hash (paginatedhash_type ahash, phash, dhash, whash, color_hash or crop_resistant)., optionally within similarity_threshold, each with URL, title and time; paginated. Useful for finding pages that look the same.
SearchFindCPEsscansbywith a CPE identifier matching a pattern such as 'cpe:2.3:a:facebook:react' (paginated). Useful for finding sites running a given product.
SearchList scans whose faviconbyhas this mmh3 hash (paginatedthe same convention as Shodan's http.favicon.hash)., each with the page URL, title and favicon details; paginated. Phishing kits often reuse one favicon across many hosts.
SearchFindJSJavaScriptfingerprintsbundlesbybuilt with a given bundlertype.(webpack, vite, rollup, esbuild and so on), optionally by bundle format and detection confidence, with totals, format breakdown and average size; paginated with page and per_page.
SearchFindJSJavaScriptfingerprintsservedbyfromCDN.a given CDN (for example 'cloudflare' or 'jsdelivr'), with totals, the top serving domains and cache status; unpinned_only keeps scripts loaded without a fixed version.
SearchFindJSJavaScriptfingerprintsfilesbywhose fuzzyhash.hash is close to this one, above min_similarity, up to limit results. Fuzzy hashes match files that differ in small parts, such as a kit with a changed configuration.
Search JSFindfingerprintsscannedbyJavaScript detectedlibraryasidentifier,asuchgivenaslibrary (for example 'react', 'jquery' or'nextjs'. The display name'nextjs'; 'Next.js' is acceptedasforan'nextjs'),aliasoptionallyforone'nextjs'.version or a version pattern, with a version breakdown and CDN distribution; paginated with page and per_page.
SearchFindJSscannedfingerprintsJavaScriptbydetected as one exact library version, with the total and the matching scripts; include_deprecated and group_by_url adjust the results. Useful for finding sites running a vulnerable version.
SearchLookJSupfingerprintsa JavaScript file by MD5hash.across the archive and report its prevalence: total matches, unique scans, first and last seen, a prevalence label and the matching scripts; include_scans adds the scans, from_date and to_date limit the period.
SearchLookJSupfingerprintsJavaScript by normalizedhash.hash (computed after whitespace and formatting are removed, so reformatted copies still match) and report prevalence: total matches, unique scans, first and last seen and the matching scripts.
Search JSFindfingerprintsJavaScript by the type of web servertype.that served it (for example 'nginx' or 'microsoft'), with the matching scripts; include_headers adds the HTTP headers. The total can be a lower bound.
SearchLookJSupfingerprintsa JavaScript file bySHA1SHA-1hash.across the archive and report its prevalence: total matches, unique scans, first and last seen, a prevalence label and the matching scripts; include_scans adds the scans, from_date and to_date limit the period.
SearchLookJSupfingerprintsa JavaScript file bySHA256SHA-256hash.across the archive and report its prevalence: total matches, unique scans, first and last seen, a prevalence label and the matching scripts; include_scans adds the scans, from_date and to_date limit the period. A rare hash shared by several phishing pages usually means one kit.
SearchList scanned JavaScript scored as obfuscated,JSfilteredfingerprints.by score range, classification and minimum code length; exclude_libraries drops known library code. min_score and max_score are obfuscation scores from 0 to 1 (defaults 0.7 and 1.0). Paginated with page and per_page.
Search JS fingerprints byListpatterns.scannedSupplyJavaScriptatfilesleastthatonematchbooleancode-patternfilterfilters: has_eval, has_crypto,has_websocket,high_entropy, no_library and cdn_mismatch,orwherecdn_mismatch.falseForselectsexample,filesusewithouthas_eval=true.theExplicitpatternfalseandisfiltersalsocanabefilter;combined.limitWithaloneno filter given, has_eval=true isnotapplied.aEachfilter.result has the fingerprint ID, scan, script URL, code length, obfuscation score and the patterns detected.
⟨30 unchanged words⟩ ":null,"title":"Has Eval"},"has_websocket":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Has Websocket"},"high_entropy":{"anyOf":[{"type":"boolean ⟨29 unchanged words⟩
Search Runtime JSFingerprinter2Behaviour by Composite Hash
SearchFindJSscansFingerprinter2whosebyruntime JavaScript behaviour has this compositehash.hash, each with the target URL, overall risk and time. The same composite hash across hosts usually means the same kit.
⟨5 unchanged words⟩ :true,"readOnlyHint":true,"title":"Search Runtime JSFingerprinter2Behaviour by Composite Hash"}
Search Runtime JSFingerprinter2Behaviour by Signature
SearchFindJSscansFingerprinter2withbythissignature.behavioural signature (for example 'setTimeout:30|fetch:4|complex'), each with the target URL, overall risk and time. An uncached query can take up to 90 seconds by default.
⟨5 unchanged words⟩ :true,"readOnlyHint":true,"title":"Search Runtime JSFingerprinter2Behaviour by Signature"}
SearchFindJSSimilarFingerprinter2RuntimeSimilarJS Behaviour
SearchFindJSscansFingerprinter2whose runtime JavaScript behaviour is similarscans.to this scan's, above min_similarity; include_self keeps the scan itself. scan_id is the UUID of a ScanMalware scan.
⟨4 unchanged words⟩ openWorldHint":true,"readOnlyHint":true,"title":"SearchFindJSSimilarFingerprinter2RuntimeSimilarJS Behaviour"}
SearchListJSgroupsmalwareoffamilies.scansSupplywhosemin_cluster_sizeruntime JavaScript behaves alike (possible malware families), with clusters of at least1min_cluster_size scans (default 2)orat similarity_threshold or above (0 to 1),or both;defaultlimit0.95).aloneWhenisthenotserviceahasfilter.clusteringForswitchedexampleoff,usestatusmin_cluster_size=2.is 'disabled' and no families are returned.
SearchListJSscans by the obfuscationsignals.signalsSupplytheiratruntimeleastJavaScriptoneshowed,ofnewestrisk_levelanalysis first: overall risk,min_risk_scoremaximum and average risk score,orevalhas_eval;andlimitFunctionaloneconstructoriscallsnotandahigh-riskfilter.events.ForOptionalexample,filtersusearehas_eval=true.risk_levelExplicit(suchfalseasand'high'aor 'critical'), min_risk_scoreof(0-100)0andarehas_eval;validwithfilters.none, the most recently analysed scans are listed.
SearchFindJScode segmentsbywith this exact codehash.hash across the archive, with the scans and scripts they appear in; paginated with limit and offset.
SearchFindJScode segmentsbywith this normalizedhash.hash (formatting-independent) across the archive, with the scans and scripts they appear in; paginated with limit and offset.
SearchPaginatedJSlist (limit and offset) of archived script fingerprintsbybuilt with a given bundler,(paginated).each with scan, page URL and script URL.
SearchPaginatedJSlist (limit and offset) of archived script fingerprintsbywhose fuzzy hash(paginated).matches this value, each with scan, page URL and script URL. An empty list means no close match.
SearchPaginatedJSlist (limit and offset) of archived script fingerprintsbydetected as a given library,(paginated).each with scan, page URL, script URL and version.
SearchPaginatedJSlist (limit and offset) of archived script fingerprintsbydetected as one library version,(paginated).each with scan, page URL and script URL.
SearchPaginatedJSlist (limit and offset) of archived script fingerprintsbywith this MD5,(paginated).each with scan, page URL, scan time, script URL and hashes.
SearchPaginatedJSlist (limit and offset) of archived script fingerprintsbywith this normalized hash (paginatedformatting-independent)., each with scan, page URL and script URL.
SearchPaginatedJSlist (limit and offset) of archived script fingerprintsbywithSHA1this(paginated).SHA-1, each with scan, page URL, scan time, script URL and hashes.
SearchPaginatedJSlist (limit and offset) of archived script fingerprintsbywithSHA256this(paginated).SHA-256, each with scan, page URL, scan time, script URL and hashes.
SearchOCRthe text read by OCR from scan screenshots for a pattern (paginated).; case_sensitive controls matching. Useful for finding pages that show the same lure text as an image.
Search the archive of public scans by text in the URL, domain or page title (qpaginated);mustqbeneeds at least 3 characters and search_type narrows the match (default 'all'). Each result has the scan ID, URL, status, title, submission time and hosting ASN.
SemanticSearchsearchscansoverbyscansmeaning rather than exact words, comparing the query with scanned page content (paginatedfor example 'bank login page asking for card details'). threshold (default 0.7) is the minimum similarity; an empty result means nothing was similar enough.
SearchFind scans that look like this one by screenshot similarity, favicon or fuzzy page hash (methods, default screenshot), each with URL, final URL, title and what it matched by; paginated. Useful forscansfindingsimilarcopiestoof a phishing page on other hosts. scan_id(paginated).is the UUID of a ScanMalware scan.
SearchFindforscreenshotssimilarwithinscreenshotsmax_distanceby(Hamminghash.distance, default 3) of an integer perceptual hash (hash_type, default phash), each with scan, URL, title, distance and similarity score.
SearchList scans where the page wrote suspiciousclipboardcontentindicatorsto the clipboard (paginatedfor example PowerShell commands)., each with URL, event count, reason and time; pattern filters the content; paginated.
Search the web technologies detected across the archive by name (paginatedq).or category, each with how many scans used it and when it was last seen; paginated.
SearchFindbyscans that embed a given tracking or site key, such as an analytics ID or a CAPTCHA site key (paginatedtracker_type and key)., sorted latest or oldest; paginated. A shared key often ties sites to one operator.
PollWaituntilfor a submitted scanreachestoafinishterminalby polling its status every poll_interval_s seconds,returningup to timeout_s seconds (default 180). Returns the finalsummary.compact summary (URL, final URL, status, completion time and the security verdict), or the last known status with timeout set to true if the scan is still running. scan_id is the UUID of a ScanMalware scan.
Get JS fingerprint similarity counts. This query can take up to 90 seconds by default.Search scans by favicon hash (paginated).: a mmh3 hash by default, or the favicon's MD5 with hash_type='md5'.
Search JS fingerprints by detected libraryname. Use identifiers from get_js_library_inventoryidentifier, such as 'react', 'jquery' or 'nextjs'. The display name 'Next.js' is accepted ⟨5 unchanged words⟩
Search JS Fingerprinter2 by signature. An uncached query can take up to 90 seconds by default.⟨15 unchanged words⟩ query can take up to 90 seconds bydefault; allow it to finish before retrying.default.
Submit a URL to ScanMalwarefortoscanning.beWARNING:renderedscan_typeanddefaultsanalysedtoin'public',awhichsandboxedpublishesbrowser; returns thetargetnewURLscan_id. scan_type is required andscansetsresultswhoincan see thepublicresult:feed'public'andlistsmakesthethemURLvisibleandtoitsotherresultsusersinandthesearchpublicengines.feed,Choosevisiblevisibilitytoexplicitly:anyone'public'andpublishestothesearchscan;engines; 'unlisted' keepsitthe scan out of public listings, but anyone withthe directits link canaccessopen it; 'private'restrictslimitsresultsthe result to theauthenticatedScanMalware accountand requiresof this server's SCANMALWARE_BEARER_TOKENtoandbeisconfigured.rejectedForwhenclientnotargets,tokenconfidentialisURLs,configured.orWrapssecurityPOSTengagements,/api/v1/scanaskof theuser to choose 'unlisted' or 'private' unless they have already specified visibility; use 'public' only with explicit approval to publish. Never fall back to a less restrictiveScanMalwarevisibilityAPI,ifdocumentedsubmissionatfails.https://scanmalware.com/api-docs.
⟨11 unchanged words⟩ ,"title":"Options"},"scan_type":{"default":"public","enum":["public","unlisted","private"] ⟨19 unchanged words⟩ :"User Agent"}},"required":["url","scan_type"],"title":"submit_scanArguments","type":"object"}
SubmitVote on a scan,report.as the Mark as Safe and Mark as Malicious buttons on its result page do: report_type 'positive_feedback' marks the scanned page as safe and 'malware' marks it as malicious. report_details is an optional note of up to 1000 characters. Votes are recorded as crowd feedback on the scan and are rate-limited per client IP. The website's other report types (phishing, spam, copyright and so on) need a captcha and are not available here.
{"properties":{"captcha_answer":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Captcha Answer"},"captcha_tokenreport_details":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"CaptchaReportTokenDetails"},"report_detailsreport_type":{"anyOfenum":[{"type":"stringpositive_feedback"},{"type":"nullmalware"}],"default":null,"title":"ReportDetails"},"report_type":{"title":"ReportType","type":"string"},"scan_id":{"title":"Scan Id","type":"string"},"skip_captcha":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Skip Captcha"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User Agent"},"x_forwarded_for":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"X Forwarded For"},"x_real_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"X Real Ip"}},"required":["scan_id","report_type" ⟨4 unchanged words⟩
Search JS fingerprints by patterns. Supply at least one boolean filter: has_eval, has_crypto, has_websocket, high_entropy, no_library, or cdn_mismatch. For example, use has_eval=true. Explicit false is also a filter; limit alone is not a filter.Search JS malware families. Supply min_cluster_size (at least 1) or similarity_threshold (0 to 1), or both; limit alone is not a filter. For example, use min_cluster_size=2.Search JS obfuscation signals. Supply at least one of risk_level, min_risk_score, or has_eval; limit alone is not a filter. For example, use has_eval=true. Explicit false and a min_risk_score of 0 are valid filters.Search OCR text (paginated). q must contain at least 3 characters after trimming. This query can take up to 90 seconds by default; allow it to finish before retrying.Submit a URL to ScanMalware for scanning. WARNING: scan_type defaults to 'public', which publishes the target URL and scan results in the public feed and makes them visible to other users and search engines. Choose visibility explicitly: 'public' publishes the scan; 'unlisted' keeps it out of public listings but anyone with the direct link can access it; 'private' restricts results to the authenticated ScanMalware account and requires this server's SCANMALWARE_BEARER_TOKEN to be configured. For client targets, confidential URLs, or security engagements, ask the user to choose 'unlisted' or 'private' unless they have already specified visibility; use 'public' only with explicit approval to publish. Never fall back to a less restrictive visibility if submission fails.
⟨13 unchanged words⟩ },"scan_type":{"default":"public","enum":["public","unlisted","private"],"title":"Scan Type","type":"string" ⟨22 unchanged words⟩