# Documentation - PublicWWW Every page with its id (for read_docs) and the headings inside it. ## Query Syntax Every operator and modifier for building a query: exact phrases, RegEx, site:, ccTLDs and more. - `query-syntax` - Query Syntax: Everything, briefly; In detail; Where to go next - `query-syntax/basics` - Basics: Words; Exact phrases `"..."`; Combining; Excluding `-`; Either one `|` and grouping `( )`; Near each other `distance:n`; A loose phrase `"..."~n`; Escaping - `query-syntax/operators` - Operators: `depth:` - internal pages; `site:` - top-level domain; `ip:` - address or subnet - `query-syntax/regex` - Regular expressions: Phone numbers of pizzerias in Italy; AddThis publisher ids; WordPress plugin names; Affiliate site ids - `query-syntax/cctld` - Country domains ## Signatures Find the code a product leaves on its customers' websites, and turn it into a query. - `signatures` - Signatures: Why code, not the name; Step by step; A good signature; Other places to find the code; In detail - `signatures/traces` - Where products leave traces: The address its script loads from; A setting inside the installed snippet; An account id; An element id or class of its widget; A plugin or module folder; A link to the product's own pages; Files served from the product's storage; The generator tag; HTTP headers and cookies - `signatures/checking` - Checking a signature: Read the code, not just the list; Look at the end of the list; Take out what does not belong; One trace or several; What the count means; Narrow it down ## Technologies Ready-made queries for over a thousand technologies, by topic - from ad pixels and analytics to frameworks, shops and payments. - `examples` - Technologies - `examples/ads` - Advertising: Yandex Advertising Network, Google Ad Manager, Taboola, Ezoic, Adsterra, MGID, PropellerAds, Prebid.js, Monetag, ExoClick and 26 more - `examples/pixels` - Ad pixels & affiliate: Meta Pixel, Google Ads, TikTok Pixel, Microsoft Advertising, LinkedIn Insight Tag, Pinterest Tag, VK Pixel, X Pixel, Snap Pixel, Quantcast and 22 more - `examples/marketing` - Marketing: Google Tag Manager, Yoast SEO, Rank Math, All in One SEO, Popup Maker, Adobe Experience Platform Tags, Matomo Tag Manager, The SEO Framework, OneSignal, WonderPush and 32 more - `examples/email` - Email & automation: Mailchimp, HubSpot, Klaviyo, MC4WP: Mailchimp for WordPress, Brevo, MailerLite, Kit, HubSpot Forms, Omnisend, ActiveCampaign and 18 more - `examples/reviews` - Reviews & store apps: Trustindex, Judge.me, Trustpilot, PageFly, Loox, Klevu, Tripadvisor, Algolia, Google Customer Reviews, Yotpo and 14 more - `examples/analytics` - Analytics: Google Analytics 4, Site Kit by Google, Yandex Metrica, Baidu Tongji, 51.la, MonsterInsights, Jetpack Stats, Matomo, Cloudflare Web Analytics, Plausible and 39 more - `examples/product-analytics` - Product analytics, replay & monitoring: Snowplow, Microsoft Clarity, New Relic, Hotjar, Crazy Egg, Datadog RUM, Sentry, PostHog, Segment, RudderStack and 24 more - `examples/ab-testing` - A/B testing: Optimizely, VWO, Zoho PageSense, Adobe Target, Statsig, Intellimize, LaunchDarkly, Convert, GrowthBook, Intelligems and 11 more - `examples/consent` - Consent & cookie banners: Complianz, CookieYes, consentmanager, Cookie Notice, Cookiebot, GDPR Cookie Compliance, Cookie Consent by Osano, Borlabs Cookie, iubenda, OneTrust and 26 more - `examples/chat` - Chat & support: WhatsApp chat links, Joinchat, Tawk.to, Click to Chat, WP Social Chat, LiveChat, JivoChat, Smartsupp, Tidio, Zendesk Web Widget and 41 more - `examples/captcha` - CAPTCHA & bot protection: reCAPTCHA, Cloudflare bot detection, reCAPTCHA v3, reCAPTCHA v2 checkbox, Cloudflare Turnstile, reCAPTCHA Enterprise, ALTCHA, hCaptcha, CleanTalk, Akismet and 18 more - `examples/accessibility` - Accessibility: UserWay, One Click Accessibility, Ally by Elementor, AudioEye, OneTap, WP Accessibility, accessiBe, Enable, Siteimprove, EqualWeb and 13 more - `examples/hosting` - Hosting & CDN: Cloudflare, Fastly, Google Cloud, Hostinger, Plesk, Vercel, Amazon CloudFront, OVHcloud, Netlify, SiteGround and 27 more - `examples/webtech` - Servers & languages: LiteSpeed, OpenResty, ASP.NET, Microsoft IIS, LiteSpeed Cache, Varnish, WP Rocket, Express, PHP 8.3, PHP 8.2 and 49 more - `examples/cdn-libs` - Library, font & image CDNs: Google Fonts, cdnjs, jsDelivr, Google Hosted Libraries, BootstrapCDN, Adobe Fonts, jQuery CDN, Gravatar, unpkg, Jetpack Site Accelerator and 20 more - `examples/frontend` - JavaScript libraries: jQuery Migrate, js-cookie, core-js, jQuery UI, Waypoints, jQuery Easing, Underscore.js, lazysizes, Superfish, MediaElement.js and 29 more - `examples/css` - CSS frameworks, fonts & icons: Bootstrap, Font Awesome, Lucide, Bootstrap Icons, Material Icons, Normalize.css, Tailwind CSS, Web Font Loader, Glyphicons, Ionicons and 24 more - `examples/ui` - Sliders & UI components: Swiper, imagesLoaded, OWL Carousel, Slick, Magnific Popup, Fancybox, Popper, Isotope, Select2, jQuery Validation and 30 more - `examples/charts` - Animation, charts & maps: Animate.css, WOW.js, AOS, GSAP, particles.js, Jarallax, Leaflet, Typed.js, Anime.js, Chart.js and 20 more - `examples/frameworks` - JS frameworks: Next.js, React, Nuxt, Vue.js, Svelte, Hotwire Turbo, Angular, Backbone.js, Inertia, Knockout and 17 more - `examples/widgets` - Widgets: YouTube, Facebook, Google Maps, X (Twitter), Smash Balloon Instagram Feed, Vimeo, GTranslate, Google Translate, AddToAny, Elfsight and 50 more - `examples/cms` - CMS: WordPress, Joomla, Drupal, TYPO3, 1C-Bitrix, Adobe Experience Manager, Z-BlogPHP, Contao, Gnuboard, DedeCMS and 63 more - `examples/wordpress` - WordPress themes & plugins: Elementor, Divi, WPBakery, Astra, Flatsome, Avada, GeneratePress, Kadence, OceanWP, Blocksy and 11 more - `examples/headless` - Headless CMS & static sites: Astro, Hugo, Sanity, Jekyll, Gatsby, Ghost, Sphinx, Contentful, Hexo, Prismic and 10 more - `examples/site-builders` - Site builders: Wix, Squarespace, WordPress.com, GoDaddy Website Builder, Duda, Tilda, Weebly, Webflow, Hostinger Website Builder, HighLevel and 46 more - `examples/ecommerce` - Shop platforms: WooCommerce, Shopify, OpenCart, Wix Stores, PrestaShop, Magento (Adobe Commerce), Odoo, Cafe24, Tiendanube (Nuvemshop), BASE and 64 more - `examples/payments` - Payments: Stripe, PayPal, Razorpay, Braintree, iyzico, Google Pay, Klarna, Apple Pay, Authorize.net, Square and 30 more - `examples/discontinued` - Discontinued, still running: Universal Analytics, PHP 7, PHP 5, PHP 8.1, PHP 8.0, AngularJS, AddThis, SWFObject, Google PageSpeed, Google+ buttons and 20 more ## Clusters Keep a set of sites, compare it against next month's, and read fields off every site in it. - `clusters` - Clusters: What they are for; In detail; Worked examples - `clusters/creating` - Creating a cluster: From search results; From a file; From other clusters; Reading a cluster back - `clusters/extraction` - Extraction: What it reads; Presets and your own patterns; Getting the result out; Filtering searches with a cluster - `clusters/limits` - Limits: How extraction is counted - `clusters/example-widgets` - Example: tracking a widget change - `clusters/example-contacts` - Example: extracting phones and emails ## API Search from your own code. JSON, XML, CSV, NDJSON and TSV, with a key and a plan. - `api` - API: In one command; Endpoints; What it promises; Getting a key - `api/authentication` - Authentication: Why not `?key=`; Checking a key works; What can go wrong; OAuth 2.1 for applications; Identifying the application; The flow; How long a token lives; OAuth errors - `api/requests` - Making requests: Parameters; GET; POST; The response; A row; Paging and bulk - `api/formats` - Response formats: Which to use; ndjson; Choosing the columns; Details of the flat formats; Formats and errors - `api/limits` - Quotas and rate limits: Rate limit: ten requests per minute; Daily quota; Result depth; Reading the current state; Usage statistics - `api/errors` - Errors: Every code; What to do about each; Errors and formats; Reading the codes without reading this page - `api/clusters` - Clusters: The endpoints; Creating a cluster; Combining clusters; Extracting data; A whole cluster, in code; Python; JavaScript (Node 18+); PHP; Go; Ruby; Errors - `api/examples` - Code examples: curl; Python; Streaming a large result set; PHP; JavaScript (Node); Go; Ruby; Loading into a spreadsheet or a shell pipeline; Things worth getting right - `api/sheets` - Google Sheets: Setting it up; Writing the query; The functions; Exporting a whole query; When a cell says #ERROR! - `api/clay` - Clay: Does this company's site use it?; A table of companies from one search; Searches and speed - `api/legacy` - The old export urls: Why they are separate; Moving a script over ## MCP Server Let an AI assistant search page source for you: Claude, ChatGPT, Cursor, VS Code and more. - `mcp` - MCP Server: What the assistant can do; Connecting your client; Who can use it - `mcp/connecting` - Signing in: Sign in with OAuth; Or use a token; How long access lasts; What the assistant gets - `mcp/claude` - Claude: Claude on the web and in the desktop app; Claude Code - `mcp/chatgpt` - ChatGPT: Adding the server; Using it - `mcp/editors` - Code editors and CLI agents: VS Code; Cursor; Devin Desktop (formerly Windsurf); Gemini CLI; Codex CLI; DeepSeek Harness; Anything else - `mcp/automation` - n8n, Make and Zapier: n8n; Make; Zapier; Into a CRM: HubSpot, Pipedrive, Salesforce; What to watch - `mcp/tools` - Tools: A search result; Getting more than one page; Clusters and extraction - `mcp/limits` - Limits and errors: Limits; Errors; When the assistant cannot connect - `mcp/developers` - For developers: The protocol as we serve it; Calling it with curl ## Use Cases Where PublicWWW has been put to work: research papers, security investigations, marketing, OSINT and videos. - `use-cases` - Use Cases - `use-cases/papers` - Academic papers - `use-cases/marketing` - Marketing, sales & SEO - `use-cases/osint` - OSINT & investigations - `use-cases/security` - Security research - `use-cases/cryptojacking` - Cryptojacking - `use-cases/videos` - Videos & courses ## Languages The site in thirteen languages, and which characters a search matches. - `languages` - Languages: The site in your language; What a search matches; Finding sites in a language or a country; Language of the page; Character set; Country domain and a local service ## Plans and Pricing - `prices` - Pricing: Free; Pro; Business; Enterprise; Compare Plans; Frequently Asked Questions ## Support What these pages do not answer - an account, a payment, a problem with the site - goes to support by email: support@publicwww.com --- # Query Syntax PublicWWW searches the source code of web pages, not the text visitors see. A query is the fragment of markup, script or stylesheet you expect to find - a tracker id, a library filename, a meta tag, an affiliate code. ## Everything, briefly `"..."` Exact phrase - those characters, in that order. What you want almost every time. A tilde and a number let the words inside move apart. `"math.min.js"` (https://publicwww.com/websites/%22math.min.js%22/) `"gtag config"~5` (https://publicwww.com/websites/%22gtag%20config%22~5/) [read more](https://publicwww.com/docs/query-syntax/basics/) `a b` Several words or phrases means all of them, in any order. `distance:n` asks for them close together. `bootstrap jquery` (https://publicwww.com/websites/bootstrap+jquery/) `fbq distance:5 init` (https://publicwww.com/websites/fbq%20distance%3A5%20init/) [read more](https://publicwww.com/docs/query-syntax/basics/) `( | )` A bar matches either side; brackets say what the bar applies to. `jquery (slick | swiper)` (https://publicwww.com/websites/jquery%20%28slick%20%7C%20swiper%29/) [read more](https://publicwww.com/docs/query-syntax/basics/) `-` A dash removes the pages that contain what follows it. `"amcharts.js" -bootstrap` (https://publicwww.com/websites/%22amcharts.js%22+-bootstrap/) [read more](https://publicwww.com/docs/query-syntax/basics/) `\"` A backslash escapes a quote inside a phrase, or another backslash. `""` (https://publicwww.com/websites/%22%3Chtml+lang%3D%5C%22fr%5C%22%3E%22/) [read more](https://publicwww.com/docs/query-syntax/basics/) `depth:` Reach indexed internal pages, not only home pages. `depth:all "math.min.js"` (https://publicwww.com/websites/depth:all+%22math.min.js%22/) [read more](https://publicwww.com/docs/query-syntax/operators/) `site:` Restrict to one top-level domain. `site:de bootstrap` (https://publicwww.com/websites/site:de+bootstrap/) [read more](https://publicwww.com/docs/query-syntax/operators/) `ip:` One address, or a class C subnet with a `*`. `ip:160.153.136.* bootstrap` (https://publicwww.com/websites/ip:160.153.136.*+bootstrap/) [read more](https://publicwww.com/docs/query-syntax/operators/) Only the Latin letters `a-z`, the digits `0-9` and the underscore `_` are searched. Every other character works like a space - punctuation, accented letters, and the letters of other alphabets: Cyrillic, Greek, Arabic, Chinese and the rest. A word written in them finds nothing; look for the Latin traces a page carries instead - a transliterated word, the language in the `` tag, the country domain. More in [Languages](https://publicwww.com/docs/languages/). ## In detail - [Basics](https://publicwww.com/docs/query-syntax/basics/) - words, exact phrases, combining, excluding, escaping. - [Operators](https://publicwww.com/docs/query-syntax/operators/) - `depth:`, `site:`, `ip:`. - [Regular expressions](https://publicwww.com/docs/query-syntax/regex/) - `snipexp:`, with worked examples. - [Country domains](https://publicwww.com/docs/query-syntax/cctld/) - every top-level domain PublicWWW indexes. ## Where to go next - [Signatures](https://publicwww.com/docs/signatures/) - how to find the code a product leaves on its customers' websites. - [Technologies](https://publicwww.com/docs/examples/) - ready-made queries by topic. - [API](https://publicwww.com/docs/api/) - the same searches from your own code. - [Clusters](https://publicwww.com/docs/clusters/) - keep and compare sets of results. Source: https://publicwww.com/docs/query-syntax/ --- # Basics What a query is made of. Everything else on these pages narrows or reshapes what the pieces below find. ### Words Several words means all of them, in any order, anywhere in the page source. `bootstrap jquery` (https://publicwww.com/websites/bootstrap+jquery/) ### Exact phrases `"..."` Quotes mean those characters, in that order. This is what you want almost every time: source code is punctuation-heavy and order carries meaning. `"math.min.js"` (https://publicwww.com/websites/%22math.min.js%22/) ### Combining Phrases and words can be mixed. Every one of them has to match. `"" bootstrap` (https://publicwww.com/websites/%22%3Chtml+lang%3D%5C%22fr%5C%22%3E%22+bootstrap/) ### Excluding `-` A dash before a word or phrase removes the pages that contain it. `"amcharts.js" -bootstrap` (https://publicwww.com/websites/%22amcharts.js%22+-bootstrap/) ### Either one `|` and grouping `( )` A bar between two words matches pages with either of them, and brackets say what the bar applies to. The bar binds tighter than a space, so the second example below reads as *jquery, and either bootstrap or foundation*. `"jquery.min.js" | "bootstrap.min.js"` (https://publicwww.com/websites/%22jquery.min.js%22%20%7C%20%22bootstrap.min.js%22/) `jquery (bootstrap | foundation)` (https://publicwww.com/websites/jquery%20%28bootstrap%20%7C%20foundation%29/) ### Near each other `distance:n` Two words anywhere on a page are often a coincidence; the same two within a few words of each other usually are not. `distance:n` between two terms asks for at most *n* words between them, in either order. Useful when two things sit together in the source but you cannot quote the whole thing, because what is between them varies from site to site - a tag and its id, a parameter and its neighbour. `"utm_source" distance:5 "utm_campaign"` (https://publicwww.com/websites/%22utm_source%22%20distance%3A5%20%22utm_campaign%22/) `"data-ad-client" distance:3 "ca-pub"` (https://publicwww.com/websites/%22data-ad-client%22%20distance%3A3%20%22ca-pub%22/) ### A loose phrase `"..."~n` A tilde and a number right after a quoted phrase let the words inside it move apart, up to *n* words, and appear in any order. An exact phrase is the same thing with the distance set to zero. `"gtag config"~5` (https://publicwww.com/websites/%22gtag%20config%22~5/) `"font-family Helvetica"~3` (https://publicwww.com/websites/%22font-family%20Helvetica%22~3/) ### Escaping A double quote inside a quoted phrase is escaped with a backslash, and a backslash with another backslash. Two backslashes mean one. `""` (https://publicwww.com/websites/%22%3Chtml+lang%3D%5C%22fr%5C%22%3E%22/) `"\\x5f\\x70\\x6fp"` (https://publicwww.com/websites/%22%5C%5Cx5f%5C%5Cx70%5C%5Cx6fp%22/) That is the whole of the ordinary syntax. The [operators](https://publicwww.com/docs/query-syntax/operators/) narrow a search before it runs, and [snipexp:](https://publicwww.com/docs/query-syntax/regex/) changes what is shown for each result. Source: https://publicwww.com/docs/query-syntax/basics/ --- # Operators Operators narrow a search before it runs. They combine freely with each other and with ordinary phrases, so `site:de depth:all "math.min.js"` is a single query. ### `depth:` - internal pages By default a search covers home pages only. `depth:` reaches the internal pages that have been indexed - one level at a time, or all of them at once. How deep a site is indexed varies; a level with nothing indexed simply finds nothing. `depth:all "math.min.js"` (https://publicwww.com/websites/depth:all+%22math.min.js%22/) - home pages and every indexed internal page `depth:0 "math.min.js"` (https://publicwww.com/websites/depth:0+%22math.min.js%22/) - home pages, the default `depth:1 "math.min.js"` (https://publicwww.com/websites/depth:1+%22math.min.js%22/) - first level of internal pages ### `site:` - top-level domain Restrict results to one top-level domain. `site:de bootstrap` (https://publicwww.com/websites/site:de+bootstrap/) `site:it bootstrap` (https://publicwww.com/websites/site:it+bootstrap/) `site:edu bootstrap` (https://publicwww.com/websites/site:edu+bootstrap/) `site:legal bootstrap` (https://publicwww.com/websites/site:legal+bootstrap/) [Every top-level domain PublicWWW indexes](https://publicwww.com/docs/query-syntax/cctld/) ### `ip:` - address or subnet Find sites served from one address, or from a class C subnet by putting a `*` in the last position. `ip:160.153.136.3 "ga('create',"` (https://publicwww.com/websites/ip:160.153.136.3+%22ga('create',%22/) `ip:160.153.136.* bootstrap` (https://publicwww.com/websites/ip:160.153.136.*+bootstrap/) Source: https://publicwww.com/docs/query-syntax/operators/ --- # Regular expressions `snipexp:` is the one operator that does not change which sites are found - it changes what is shown for each of them. That is how a list of sites becomes a list of publisher ids, phone numbers or plugin names. Instead of the text surrounding the match, the snippet becomes whatever your expression captures. The expression is a PCRE pattern with its delimiters - usually `|`, since a query rarely contains one - and **at least one capturing group**, because what the group captures is what you get. Flags follow the closing delimiter, so `i` makes it case-insensitive. Without a capturing group the snippet comes back empty, which is the usual reason for a blank column. ``` snipexp:|pubid=(ra\-[\w\d]+)|i ``` ### Phone numbers of pizzerias in Italy `"href=\"tel" site:it pizza snipexp:|\"tel\:([^\"]+)\"|` (https://publicwww.com/websites/%22href%3D%5C%22tel%22+site:it+pizza+snipexp:%7C%5C%22tel%5C%3A(%5B%5E%5C%22%5D%2B%29%5C%22%7C/) ### AddThis publisher ids `"addthis_widget.js#pubid=ra" snipexp:|pubid=(ra\-[\w\d]+)|i` (https://publicwww.com/websites/%22addthis_widget.js%23pubid%3Dra%22+snipexp:%7Cpubid%3D(ra%5C-%5B%5Cw%5Cd%5D%2B%29%7Ci/) ### WordPress plugin names `"/wp-content/plugins/" snipexp:|/plugins/([\w\d\-\.\_]+)/|` (https://publicwww.com/websites/%22%2Fwp-content%2Fplugins%2F%22+snipexp:%7C%2Fplugins%2F(%5B%5Cw%5Cd%5C-%5C.%5C_%5D%2B%29%2F%7C/) ### Affiliate site ids `"_pop.push([\"siteId" snipexp:|(siteId[\"\']\,\s*(\d+))|i` (https://publicwww.com/websites/%22_pop.push(%5B%5C%22siteId%22+snipexp:%7C(siteId%5B%5C%22%5C'%5D%5C%2C%5Cs*(%5Cd%2B%29%29%7Ci/) Snippets are what the `csvsnippets` exports carry and what `snippets=1` returns from the [API](https://publicwww.com/docs/api/requests/). Extracting a field across a whole set of sites at once is what [clusters](https://publicwww.com/docs/clusters/) are for. Snippets are charged against a separate daily allowance - see [quotas and rate limits](https://publicwww.com/docs/api/limits/). Source: https://publicwww.com/docs/query-syntax/regex/ --- # Country domains Every top-level domain PublicWWW indexes. Use one with the `site:` operator to restrict a search to it - `site:de bootstrap`. Each entry below links to what has been indexed under it. .aaa .aarp .abarth .abb .abbott .abbvie .abc .able .abogado .abudhabi .ac .academy .accenture .accountant .accountants .aco .active .actor .ad .adac .ads .adult .ae .aeg .aero .aetna .af .afamilycompany .afl .africa .ag .agakhan .agency .ai .aig .airbus .airforce .airtel .akdn .al .alfaromeo .alibaba .alipay .allfinanz .allstate .ally .alsace .alstom .am .amazon .americanexpress .americanfamily .amex .amfam .amica .amsterdam .an .analytics .android .anquan .anz .ao .aol .apartments .app .apple .aq .aquarelle .ar .arab .aramco .archi .army .arpa .art .arte .as .asda .asia .associates .at .athleta .attorney .au .auction .audi .audible .audio .auspost .author .auto .autos .avianca .aw .aws .ax .axa .az .azure .ba .baby .baidu .banamex .bananarepublic .band .bank .bar .barcelona .barclaycard .barclays .barefoot .bargains .baseball .basketball .bauhaus .bayern .bb .bbc .bbt .bbva .bcg .bcn .bd .be .beats .beauty .beer .bentley .berlin .best .bestbuy .bet .bf .bg .bh .bharti .bi .bible .bid .bike .bing .bingo .bio .biz .bj .black .blackfriday .blockbuster .blog .bloomberg .blue .bm .bms .bmw .bn .bnpparibas .bo .boats .boehringer .bofa .bom .bond .boo .book .booking .boots .bosch .bostik .boston .bot .boutique .box .br .bradesco .bridgestone .broadway .broker .brother .brussels .bs .bt .budapest .bugatti .build .builders .business .buy .buzz .bv .bw .by .bz .bzh .ca .cab .cafe .cal .call .calvinklein .cam .camera .camp .cancerresearch .canon .capetown .capital .capitalone .car .caravan .cards .care .career .careers .cars .casa .case .caseih .cash .casino .cat .catering .catholic .cba .cbn .cbre .cbs .cc .cd .center .ceo .cern .cf .cfa .cfd .cg .ch .chanel .channel .charity .chase .chat .cheap .chintai .christmas .chrome .chrysler .church .ci .cipriani .circle .cisco .citadel .citi .citic .city .cityeats .ck .cl .claims .cleaning .click .clinic .clinique .clothing .cloud .club .clubmed .cm .cn .co .coach .codes .coffee .college .cologne .com .comcast .commbank .community .company .compare .computer .comsec .condos .construction .consulting .contact .contractors .cooking .cookingchannel .cool .coop .corsica .country .coupon .coupons .courses .cpa .cr .credit .creditcard .creditunion .cricket .crown .crs .cruise .cruises .csc .cu .cuisinella .cv .cw .cx .cy .cymru .cyou .cz .dabur .dad .dance .data .date .dating .datsun .day .dclk .dds .de .deal .dealer .deals .degree .delivery .dell .deloitte .delta .democrat .dental .dentist .desi .design .dev .dhl .diamonds .diet .digital .direct .directory .discount .discover .dish .diy .dj .dk .dm .dnp .do .docs .doctor .dodge .dog .doha .domains .dot .download .drive .dtv .dubai .duck .dunlop .dupont .durban .dvag .dvr .dz .earth .eat .ec .eco .edeka .edu .education .ee .eg .email .emerck .energy .engineer .engineering .enterprises .epson .equipment .er .ericsson .erni .es .esq .estate .esurance .et .etisalat .eu .eurovision .eus .events .everbank .exchange .expert .exposed .express .extraspace .fage .fail .fairwinds .faith .family .fan .fans .farm .farmers .fashion .fast .fedex .feedback .ferrari .ferrero .fi .fiat .fidelity .fido .film .final .finance .financial .fire .firestone .firmdale .fish .fishing .fit .fitness .fj .fk .flickr .flights .flir .florist .flowers .fly .fm .fo .foo .food .foodnetwork .football .ford .forex .forsale .forum .foundation .fox .fr .free .fresenius .frl .frogans .frontdoor .frontier .ftr .fujitsu .fujixerox .fun .fund .furniture .futbol .fyi .ga .gal .gallery .gallo .gallup .game .games .gap .garden .gay .gb .gbiz .gd .gdn .ge .gea .gent .genting .george .gf .gg .ggee .gh .gi .gift .gifts .gives .giving .gl .glade .glass .gle .global .globo .gm .gmail .gmbh .gmo .gmx .gn .godaddy .gold .goldpoint .golf .goo .goodyear .goog .google .gop .got .gov .gp .gq .gr .grainger .graphics .gratis .green .gripe .grocery .group .gs .gt .gu .guardian .gucci .guge .guide .guitars .guru .gw .gy .hair .hamburg .hangout .haus .hbo .hdfc .hdfcbank .health .healthcare .help .helsinki .here .hermes .hgtv .hiphop .hisamitsu .hitachi .hiv .hk .hkt .hm .hn .hockey .holdings .holiday .homedepot .homegoods .homes .homesense .honda .horse .hospital .host .hosting .hot .hoteles .hotels .hotmail .house .how .hr .hsbc .ht .hu .hughes .hyatt .hyundai .ibm .icbc .ice .icu .id .ie .ieee .ifm .ikano .il .im .imamat .imdb .immo .immobilien .in .inc .industries .infiniti .info .infoinfo .ing .ink .institute .insurance .insure .int .international .intuit .investments .io .ipiranga .iq .ir .irish .is .iselect .ismaili .ist .istanbul .it .itau .itv .iveco .jaguar .java .jcb .jcp .je .jeep .jetzt .jewelry .jio .jll .jm .jmp .jnj .jo .jobs .joburg .jot .joy .jp .jpmorgan .jprs .juegos .juniper .kaufen .kddi .ke .kerryhotels .kerrylogistics .kerryproperties .kfh .kg .kh .ki .kia .kids .kim .kinder .kindle .kitchen .kiwi .km .kn .koeln .komatsu .kosher .kp .kpmg .kpn .kr .krd .kred .kuokgroup .kw .ky .kyoto .kz .la .lacaixa .lamborghini .lamer .lancaster .lancia .land .landrover .lanxess .lasalle .lat .latino .latrobe .law .lawyer .lb .lc .lds .lease .leclerc .lefrak .legal .lego .lexus .lgbt .li .liaison .lidl .life .lifeinsurance .lifestyle .lighting .like .lilly .limited .limo .lincoln .linde .link .lipsy .live .living .lixil .lk .llc .llp .loan .loans .locker .locus .loft .lol .london .lotte .lotto .love .lpl .lplfinancial .lr .ls .lt .ltd .ltda .lu .lundbeck .lupin .luxe .luxury .lv .ly .ma .macys .madrid .maif .maison .makeup .man .management .mango .map .market .marketing .markets .marriott .marshalls .maserati .mattel .mba .mc .mcd .mcdonalds .mckinsey .md .me .med .media .meet .melbourne .meme .memorial .men .menu .meo .merckmsd .mg .mh .miami .microsoft .mil .mini .mint .mit .mitsubishi .mk .ml .mlb .mls .mm .mma .mn .mo .mobi .mobile .mobily .moda .moe .moi .mom .monash .money .monster .mopar .mormon .mortgage .moscow .moto .motorcycles .mov .movie .mp .mq .mr .ms .msd .mt .mtn .mtpc .mtr .mu .museum .music .mutual .mv .mw .mx .my .mz .na .nab .nadex .nagoya .name .nationwide .natura .navy .nba .nc .ne .nec .net .netbank .netflix .network .neustar .new .newholland .news .next .nextdirect .nexus .nf .nfl .ng .ngo .nhk .ni .nico .nike .nikon .ninja .nissan .nissay .nl .no .nokia .northwesternmutual .norton .now .nowruz .nowtv .np .nr .nra .nrw .ntt .nu .nyc .nz .obi .observer .off .office .okinawa .olayan .olayangroup .oldnavy .ollo .om .omega .one .ong .onion .onl .online .onyourside .ooo .open .oracle .orange .org .organic .origins .osaka .otsuka .ott .ovh .pa .page .pamperedchef .panasonic .paris .pars .partners .parts .party .passagens .pay .pccw .pe .pet .pf .pfizer .pg .ph .pharmacy .phd .philips .phone .photo .photography .photos .physio .pics .pictet .pictures .pid .pin .ping .pink .pioneer .pizza .pk .pl .place .play .playstation .plumbing .plus .pm .pn .pnc .pohl .poker .politie .porn .post .pr .pramerica .praxi .pre .press .prime .pro .prod .productions .prof .progressive .promo .properties .property .protection .pru .prudential .ps .pt .pub .pw .pwc .py .qa .qpon .quebec .quest .qvc .racing .radio .raid .re .read .realestate .realtor .realty .recipes .red .redstone .redumbrella .rehab .reise .reisen .reit .reliance .ren .rent .rentals .repair .report .republican .rest .restaurant .review .reviews .rexroth .rich .richardli .ricoh .ril .rio .rip .rmit .ro .rocher .rocks .rodeo .rogers .room .rs .rsvp .ru .rugby .ruhr .run .rw .rwe .ryukyu .sa .saarland .safe .safety .sakura .sale .salon .samsclub .samsung .sandvik .sandvikcoromant .sanofi .sap .sapo .sarl .sas .save .saxo .sb .sbi .sbs .sc .sca .scb .schaeffler .schmidt .scholarships .school .schule .schwarz .science .scjohnson .scor .scot .sd .se .search .seat .secure .security .seek .select .sener .services .ses .seven .sew .sex .sexy .sfr .sg .sh .shangrila .sharp .shaw .shell .shia .shiksha .shoes .shop .shopping .shouji .show .showtime .shriram .si .silk .sina .singles .site .sj .sk .ski .skin .sky .skype .sl .sling .sm .smart .smile .sn .sncf .so .soccer .social .softbank .software .sohu .solar .solutions .song .sony .soy .spa .space .spiegel .sport .spot .spreadbetting .sr .srl .srt .ss .st .stada .staples .star .starhub .statebank .statefarm .statoil .stc .stcgroup .stockholm .storage .store .stream .studio .study .style .su .sucks .supplies .supply .support .surf .surgery .suzuki .sv .swatch .swiftcover .swiss .sx .sy .sydney .symantec .systems .sz .tab .taipei .talk .taobao .target .tatamotors .tatar .tattoo .tax .taxi .tc .tci .td .tdk .team .tech .technology .tel .telefonica .temasek .tennis .teva .tf .tg .th .thd .theater .theatre .tiaa .tickets .tienda .tiffany .tips .tires .tirol .tj .tjmaxx .tjx .tk .tkmaxx .tl .tm .tmall .tmp .tn .to .today .tokyo .tools .top .toray .toshiba .total .tours .town .toyota .toys .tp .tr .trade .trading .training .travel .travelchannel .travelers .travelersinsurance .trust .trv .tt .tube .tui .tunes .tushu .tv .tvs .tw .tz .ua .ubank .ubs .uconnect .ug .uk .unicom .university .uno .uol .ups .us .uy .uz .va .vacations .vana .vanguard .vc .ve .vegas .ventures .verisign .versicherung .vet .vg .vi .viajes .video .vig .viking .villas .vin .vip .virgin .visa .vision .vista .vistaprint .viva .vivo .vlaanderen .vn .vodka .volkswagen .volvo .vote .voting .voto .voyage .vu .vuelos .wales .walmart .walter .wang .wanggou .watch .watches .weather .weatherchannel .webcam .weber .website .wed .wedding .weibo .weir .wf .whoswho .wien .wiki .williamhill .win .windows .wine .winners .wme .wolterskluwer .woodside .work .works .world .wow .ws .wtc .wtf .xbox .xerox .xfinity .xihuan .xin .xn .xn--11b4c3d .xn--1ck2e1b .xn--1qqw23a .xn--2scrj9c .xn--30rr7y .xn--3bst00m .xn--3ds443g .xn--3e0b707e .xn--3hcrj9c .xn--3oq18vl8pn36a .xn--3pxu8k .xn--42c2d9a .xn--45br5cyl .xn--45brj9c .xn--45q11c .xn--4dbrk0ce .xn--4gbrim .xn--54b7fta0cc .xn--55qw42g .xn--55qx5d .xn--5su34j936bgsg .xn--5tzm5g .xn--6frz82g .xn--6qq986b3xl .xn--80adxhks .xn--80ao21a .xn--80aqecdr1a .xn--80asehdb .xn--80aswg .xn--8y0a063a .xn--90a3ac .xn--90ae .xn--90ais .xn--9dbq2a .xn--9et52u .xn--9krt00a .xn--b4w605ferd .xn--bck1b9a5dre4c .xn--c1avg .xn--c2br7g .xn--cck2b3b .xn--cckwcxetd .xn--cg4bki .xn--clchc0ea0b2g2a9gcd .xn--czr694b .xn--czrs0t .xn--czru2d .xn--d1acj3b .xn--d1alf .xn--e1a4c .xn--eckvdtc9d .xn--efvy88h .xn--estv75g .xn--fct429k .xn--fhbei .xn--fiq228c5hs .xn--fiq64b .xn--fiqs8s .xn--fiqz9s .xn--fjq720a .xn--flw351e .xn--fpcrj9c3d .xn--fzc2c9e2c .xn--fzys8d69uvgm .xn--g2xx48c .xn--gckr3f0f .xn--gecrj9c .xn--gk3at1e .xn--h2breg3eve .xn--h2brj9c .xn--h2brj9c8c .xn--hxt814e .xn--i1b6b1a6a2e .xn--imr513n .xn--io0a7i .xn--j1aef .xn--j1amh .xn--j6w193g .xn--jlq480n2rg .xn--jlq61u9w7b .xn--jvr189m .xn--kcrx77d1x4a .xn--kprw13d .xn--kpry57d .xn--kpu716f .xn--kput3i .xn--l1acc .xn--lgbbat1ad8j .xn--mgb2ddes .xn--mgb9awbf .xn--mgba3a3ejt .xn--mgba3a4f16a .xn--mgba3a4fra .xn--mgba7c0bbn0a .xn--mgbaakc7dvf .xn--mgbaam7a8h .xn--mgbab2bd .xn--mgbah1a3hjkrd .xn--mgbai9a5eva00b .xn--mgbai9azgqp6j .xn--mgbayh7gpa .xn--mgbb9fbpob .xn--mgbbh1a .xn--mgbbh1a71e .xn--mgbc0a9azcg .xn--mgbca7dzdo .xn--mgbcpq6gpa1a .xn--mgberp4a5d4a87g .xn--mgberp4a5d4ar .xn--mgbgu82a .xn--mgbi4ecexp .xn--mgbpl2fh .xn--mgbqly7c0a67fbc .xn--mgbqly7cvafr .xn--mgbt3dhd .xn--mgbtf8fl .xn--mgbtx2b .xn--mgbx4cd0ab .xn--mix082f .xn--mix891f .xn--mk1bu44c .xn--mxtq1m .xn--ngbc5azd .xn--ngbe9e0a .xn--ngbrx .xn--nnx388a .xn--node .xn--nqv7f .xn--nqv7fs00ema .xn--nyqy26a .xn--o3cw4h .xn--ogbpf8fl .xn--otu796d .xn--p1acf .xn--p1ai .xn--pbt977c .xn--pgbs0dh .xn--pssy2u .xn--q7ce6a .xn--q9jyb4c .xn--qcka1pmc .xn--qxa6a .xn--qxam .xn--rhqv96g .xn--rovu88b .xn--rvc1e0am3e .xn--s9brj9c .xn--ses554g .xn--t60b56a .xn--tckwe .xn--tiq49xqyj .xn--unup4y .xn--vermgensberater-ctb .xn--vermgensberatung-pwb .xn--vhquv .xn--vuq861b .xn--w4r85el8fhu5dnra .xn--w4rs40l .xn--wgbh1c .xn--wgbl6a .xn--xhq521b .xn--xkc2al3hye2a .xn--xkc2dl3a5ee0h .xn--y9a3aq .xn--yfro4i67o .xn--ygbi2ammx .xn--zfr164b .xxx .xyz .yachts .yahoo .yamaxun .yandex .ye .yodobashi .yoga .yokohama .you .youtube .yt .yun .za .zappos .zara .zero .zip .zm .zone .zuerich .zw Source: https://publicwww.com/docs/query-syntax/cctld/ --- # Signatures A signature is a piece of code that a product leaves on every website that uses it: the address its script loads from, the id of its widget, the folder of its plugin. Search for the signature and you find the product's customers. Search for the product's name and you find everyone who mentions it. ## Why code, not the name A product's name turns up in reviews, comparisons, partner lists, agency portfolios, job ads and blog posts - pages that talk about the product rather than run it. Other companies may share the name, too. The code a customer installs is not on those pages, so a query for it finds the customers and little else. ## Step by step 1. **Search for the product's domain**, in quotes, and look at the code around each match. The results page shows it under each site. When you search through the [API](https://publicwww.com/docs/api/), the [MCP server](https://publicwww.com/docs/mcp/) or the AI assistant, ask for snippets: without them you get only the list of sites, not the code. 2. **Read that code on the sites that are clearly customers.** Skip the product's own site, review sites and agencies. Note what repeats from one customer to the next: a script or CDN address, an element id, a plugin folder, a link to a page on the product's domain. Take the traces from the code you see, not from memory: a path that looks right but is guessed often finds nothing, or something else. 3. **Search for each trace on its own**, as an exact phrase in quotes, and keep the one that finds the most customers. Usually one trace is enough; join traces with `|` only when no single one finds nearly all the customers - [Checking a signature](https://publicwww.com/docs/signatures/checking/) says how to tell. 4. **Run the query and check it**: read the code of the results at the end of the list as well as at the start, remove what does not belong, and know what the count means. [Checking a signature](https://publicwww.com/docs/signatures/checking/) goes through it. ## A good signature - **It is code, not a name.** A script address with its path, an element id, the name of a setting or a function. The product's bare domain is where the search starts, not the signature: it also matches links to the product, its help pages and articles about it. - **It was seen, not guessed** - in the code of sites that use the product. - **It has been run.** Its count is known, and the code under its results, at the start of the list and at the end, is the product's. ## Other places to find the code - **The product's help pages.** Instructions such as "add the widget to your website" show the exact code customers paste in. - **A customer's page source.** Open a site you know uses the product, view its source and look for the product's name or domain. - **The browser's developer tools.** On the Network tab, filter by the product's name: it lists every script, frame and image the page loads from the product. Whatever you find, test it with a search: a trace that looked unique may be common, and a product may load from more than one address. ## In detail - [Where products leave traces](https://publicwww.com/docs/signatures/traces/) - the kinds of code worth searching for, each with an example. - [Checking a signature](https://publicwww.com/docs/signatures/checking/) - noise, namesakes, the end of the list, and what the count means. Ready-made signatures for many products are in the [Technologies](https://publicwww.com/docs/examples/) section. Source: https://publicwww.com/docs/signatures/ --- # Where products leave traces The kinds of code a product leaves on its customers' websites, roughly from the most reliable to the least. Usually one of them is enough: the one that finds the most customers. ### The address its script loads from Most products are installed with a script tag, and the script comes from the product's own host - a CDN or a static subdomain. It is the first thing to look for. `"static.hotjar.com"` (https://publicwww.com/websites/%22static.hotjar.com%22/) ### A setting inside the installed snippet The code customers paste often sets a variable or calls a function named after the product. It is there even when the script itself is loaded from elsewhere - bundled with the site's own scripts or served through a proxy. `"_hjSettings"` (https://publicwww.com/websites/%22_hjSettings%22/) ### An account id Many snippets carry the customer's account id in a fixed format. Search for the part that never changes, and pull the ids out with [snipexp:](https://publicwww.com/docs/query-syntax/regex/). `"googletagmanager.com/gtm.js" snipexp:|(GTM-[A-Z0-9]+)|` (https://publicwww.com/websites/%22googletagmanager.com%2Fgtm.js%22+snipexp%3A%7C%28GTM-%5BA-Z0-9%5D%2B%29%7C/) ### An element id or class of its widget A widget puts an element on the page for itself - a container with the product's id or class name. `"class=\"g-recaptcha\""` (https://publicwww.com/websites/%22class%3D%5C%22g-recaptcha%5C%22%22/) ### A plugin or module folder On a CMS, a product installed as a plugin lives in a folder named after it, and the folder shows up in the addresses of its scripts and stylesheets. `"/wp-content/plugins/contact-form-7/"` (https://publicwww.com/websites/%22%2Fwp-content%2Fplugins%2Fcontact-form-7%2F%22/) ### A link to the product's own pages When a product hosts a portal, a help center or a booking page for each customer on its own domain, the customer's site links to it - often on the customer's own subdomain of the product. `".zendesk.com/hc/"` (https://publicwww.com/websites/%22.zendesk.com%2Fhc%2F%22/) ### Files served from the product's storage Images and documents a product keeps for its customers are loaded from the product's storage address. `"images.ctfassets.net"` (https://publicwww.com/websites/%22images.ctfassets.net%22/) ### The generator tag Site builders and CMSs often name themselves, sometimes with a version, in a meta tag. `"content=\"Joomla!"` (https://publicwww.com/websites/%22content%3D%5C%22Joomla%21%22/) ### HTTP headers and cookies Response headers are indexed together with each page, so a server, a framework or a hosting company that sets a header or a cookie of its own can be searched for as well. `"x-powered-by: express"` (https://publicwww.com/websites/%22x-powered-by%3A+express%22/) `"set-cookie: PHPSESSID"` (https://publicwww.com/websites/%22set-cookie%3A+PHPSESSID%22/) How to tell whether a trace really belongs to the product's customers, and how to combine several, is in [Checking a signature](https://publicwww.com/docs/signatures/checking/). Source: https://publicwww.com/docs/signatures/traces/ --- # Checking a signature A query that finds something is not yet a signature. Before relying on it, see what it finds, take out what does not belong, and know what its number counts. ## Read the code, not just the list Under each result the page shows the code around the match. Check that it is the product's code - a script tag, a widget, a setting - and not a mention of it: a link in an article, a logo in a list of integrations, a name in a menu. ## Look at the end of the list Results are ordered by the popularity of the site. The first pages are often the product's own site, its partners and well-known reviews; noise collects further down. Open one of the last pages too: if the sites there are still customers, the query is clean. ## Take out what does not belong A minus removes the pages that contain a phrase. Pick a phrase that appears only in the noise - a review site's markup, a word from comparison pages - and put a minus before it. **Namesakes.** Another company may share the product's name, and its code then matches a search for the name - a hosting company's cookie, a library with the same word in it. Searching for the product's traces rather than its name avoids most of this; a minus on the namesake's own trace takes care of the rest. ## One trace or several One exact trace is the best signature: it is easy to read and to check. A second one joined with `|` earns its place only if it brings in many customers the first one misses - those of another part of the product, say, its hosted pages rather than its widget. To decide, search for each trace on its own, then for all of them joined with `|`, and compare the counts: - if one trace alone finds at least nine sites in ten of what the joined query finds, use that trace alone; - if one trace alone finds more than a million sites, use it alone too: a search returns at most a million results; - otherwise join the strongest traces, adding one at a time, and stop as soon as they find nine sites in ten of the joined query. ## What the count means - **Home pages, by default - one per site.** Without `depth:` the number is a number of sites. Products that sit on an inner page - a booking form, a login link on a page for owners - are reached with `depth:all`. - **`depth:all` counts pages, not sites.** A site comes with every indexed page that matches. To know how many sites that is, save the results as a [cluster](https://publicwww.com/docs/clusters/): a cluster keeps unique domain names. - **Only sites with the code are counted.** A domain that redirects to a customer's site has no code of its own and is not on the list; the site it redirects to is. ## Narrow it down - `site:` - customers in one country domain. See [Operators](https://publicwww.com/docs/query-syntax/operators/). - `snipexp:` - versions, account ids and settings of each customer. See [Regular expressions](https://publicwww.com/docs/query-syntax/regex/). - [Clusters](https://publicwww.com/docs/clusters/) - keep the customer list, compare it next month, extract contacts from it. Source: https://publicwww.com/docs/signatures/checking/ --- # Technologies Queries that already work, grouped by what they find. Each tile is a live search - click it to see who is running that code right now, then adapt the query to whatever you are actually looking for. - [Advertising](https://publicwww.com/docs/examples/ads/) - ad networks, ad servers, header bidding, exchanges, native and pop ads. Includes Yandex Advertising Network, Google Ad Manager, Taboola, Ezoic, Adsterra, MGID, PropellerAds, Prebid.js, Monetag, ExoClick, Adfox, Mediavine, TrafficStars, Raptive, Outbrain and 21 more. - [Ad pixels & affiliate](https://publicwww.com/docs/examples/pixels/) - conversion pixels of ad platforms and affiliate networks. Includes Meta Pixel, Google Ads, TikTok Pixel, Microsoft Advertising, LinkedIn Insight Tag, Pinterest Tag, VK Pixel, X Pixel, Snap Pixel, Quantcast, Awin, AdRoll, CJ Affiliate, Amazon Associates, Criteo and 17 more. - [Marketing](https://publicwww.com/docs/examples/marketing/) - tag managers, popups and lead capture, landing pages, web push, call tracking, app attribution, SEO plugins. Includes Google Tag Manager, Yoast SEO, Rank Math, All in One SEO, Popup Maker, Adobe Experience Platform Tags, Matomo Tag Manager, The SEO Framework, OneSignal, WonderPush, Bloom, SEOPress, Branch, ClickFunnels, Tealium iQ and 27 more. - [Email & automation](https://publicwww.com/docs/examples/email/) - email marketing, marketing automation, CRM forms and SMS. Includes Mailchimp, HubSpot, Klaviyo, MC4WP: Mailchimp for WordPress, Brevo, MailerLite, Kit, HubSpot Forms, Omnisend, ActiveCampaign, Constant Contact, Pardot, Bitrix24 CRM Forms, Campaign Monitor, AWeber and 13 more. - [Reviews & store apps](https://publicwww.com/docs/examples/reviews/) - review and rating widgets, and apps that stores add: search, upsell, loyalty, shipping. Includes Trustindex, Judge.me, Trustpilot, PageFly, Loox, Klevu, Tripadvisor, Algolia, Google Customer Reviews, Yotpo, GemPages, Trusted Shops, Stamped, Smile.io, Recharge and 9 more. - [Analytics](https://publicwww.com/docs/examples/analytics/) - web analytics and visit counters. Includes Google Analytics 4, Site Kit by Google, Yandex Metrica, Baidu Tongji, 51.la, MonsterInsights, Jetpack Stats, Matomo, Cloudflare Web Analytics, Plausible, CNZZ, LiveInternet, Umami, StatCounter, ExactMetrics and 34 more. - [Product analytics, replay & monitoring](https://publicwww.com/docs/examples/product-analytics/) - product analytics, customer data platforms, heatmaps and session replay, error and performance monitoring. Includes Snowplow, Microsoft Clarity, New Relic, Hotjar, Crazy Egg, Datadog RUM, Sentry, PostHog, Segment, RudderStack, Lucky Orange, Mixpanel, Smartlook, Amplitude, Contentsquare and 19 more. - [A/B testing](https://publicwww.com/docs/examples/ab-testing/) - experimentation and feature flags. Includes Optimizely, VWO, Zoho PageSense, Adobe Target, Statsig, Intellimize, LaunchDarkly, Convert, GrowthBook, Intelligems, AB Tasty, Nelio A/B Testing, Shoplift, Kameleoon, Monetate and 6 more. - [Consent & cookie banners](https://publicwww.com/docs/examples/consent/) - cookie consent and privacy banners. Includes Complianz, CookieYes, consentmanager, Cookie Notice, Cookiebot, GDPR Cookie Compliance, Cookie Consent by Osano, Borlabs Cookie, iubenda, OneTrust, Real Cookie Banner, tarteaucitron.js, CookieConsent, Termly, Usercentrics and 21 more. - [Chat & support](https://publicwww.com/docs/examples/chat/) - live chat, support widgets and chatbots. Includes WhatsApp chat links, Joinchat, Tawk.to, Click to Chat, WP Social Chat, LiveChat, JivoChat, Smartsupp, Tidio, Zendesk Web Widget, Zoho SalesIQ, Crisp, Bitrix24, Zendesk Chat (Zopim), Udesk and 36 more. - [CAPTCHA & bot protection](https://publicwww.com/docs/examples/captcha/) - CAPTCHAs and bot protection. Includes reCAPTCHA, Cloudflare bot detection, reCAPTCHA v3, reCAPTCHA v2 checkbox, Cloudflare Turnstile, reCAPTCHA Enterprise, ALTCHA, hCaptcha, CleanTalk, Akismet, Alibaba Cloud Captcha, Imperva Bot Protection, Radware Bot Manager, NetEase Yidun, Tencent Captcha and 13 more. - [Accessibility](https://publicwww.com/docs/examples/accessibility/) - accessibility widgets and overlays. Includes UserWay, One Click Accessibility, Ally by Elementor, AudioEye, OneTap, WP Accessibility, accessiBe, Enable, Siteimprove, EqualWeb, Eye-Able, WP Accessibility Helper, ReadSpeaker, All in One Accessibility, Monsido and 8 more. - [Hosting & CDN](https://publicwww.com/docs/examples/hosting/) - where a site is hosted and which CDN serves it - mostly from response headers. Includes Cloudflare, Fastly, Google Cloud, Hostinger, Plesk, Vercel, Amazon CloudFront, OVHcloud, Netlify, SiteGround, GitHub Pages, AWS Elastic Load Balancing, bunny.net, Amazon S3, Bluehost / HostGator and 22 more. - [Servers & languages](https://publicwww.com/docs/examples/webtech/) - web servers, proxies and caches, languages and server frameworks, speed and cache plugins. Includes LiteSpeed, OpenResty, ASP.NET, Microsoft IIS, LiteSpeed Cache, Varnish, WP Rocket, Express, PHP 8.3, PHP 8.2, PHP 8.4, Tengine, WP Fastest Cache, WP Super Cache, Autoptimize and 44 more. - [Library, font & image CDNs](https://publicwww.com/docs/examples/cdn-libs/) - public CDNs for libraries and fonts, image CDNs. Includes Google Fonts, cdnjs, jsDelivr, Google Hosted Libraries, BootstrapCDN, Adobe Fonts, jQuery CDN, Gravatar, unpkg, Jetpack Site Accelerator, Bunny Fonts, Cloudinary, ImageKit, Microsoft Ajax CDN, imgix and 15 more. - [JavaScript libraries](https://publicwww.com/docs/examples/frontend/) - general JavaScript libraries, utilities, documents, math and media players. Includes jQuery Migrate, js-cookie, core-js, jQuery UI, Waypoints, jQuery Easing, Underscore.js, lazysizes, Superfish, MediaElement.js, Alpine.js, Moment.js, RequireJS, Hammer.js, Lodash and 24 more. - [CSS frameworks, fonts & icons](https://publicwww.com/docs/examples/css/) - CSS frameworks and UI kits, web fonts and icon sets. Includes Bootstrap, Font Awesome, Lucide, Bootstrap Icons, Material Icons, Normalize.css, Tailwind CSS, Web Font Loader, Glyphicons, Ionicons, UIkit, Radix UI, Headless UI, Foundation, MUI and 19 more. - [Sliders & UI components](https://publicwww.com/docs/examples/ui/) - sliders, carousels, galleries, lightboxes, forms and UI components. Includes Swiper, imagesLoaded, OWL Carousel, Slick, Magnific Popup, Fancybox, Popper, Isotope, Select2, jQuery Validation, SweetAlert2, intl-tel-input, Splide, PhotoSwipe, Flickity and 25 more. - [Animation, charts & maps](https://publicwww.com/docs/examples/charts/) - animation libraries, charts and maps. Includes Animate.css, WOW.js, AOS, GSAP, particles.js, Jarallax, Leaflet, Typed.js, Anime.js, Chart.js, Lenis, Lottie, ScrollReveal, three.js, Mapbox GL JS and 15 more. - [JS frameworks](https://publicwww.com/docs/examples/frameworks/) - application frameworks and meta-frameworks recognisable in markup. Includes Next.js, React, Nuxt, Vue.js, Svelte, Hotwire Turbo, Angular, Backbone.js, Inertia, Knockout, Livewire, Stimulus, React Router, Blazor, Lit and 12 more. - [Widgets](https://publicwww.com/docs/examples/widgets/) - video, audio, maps, social, calendar and form embeds. Includes YouTube, Facebook, Google Maps, X (Twitter), Smash Balloon Instagram Feed, Vimeo, GTranslate, Google Translate, AddToAny, Elfsight, ShareThis, Yandex Maps, Instagram, Pinterest, Spotify and 45 more. - [CMS](https://publicwww.com/docs/examples/cms/) - content management systems, forums and wikis. Includes WordPress, Joomla, Drupal, TYPO3, 1C-Bitrix, Adobe Experience Manager, Z-BlogPHP, Contao, Gnuboard, DedeCMS, MODX, Moodle, DNN (DotNetNuke), Craft CMS, October CMS and 58 more. - [WordPress themes & plugins](https://publicwww.com/docs/examples/wordpress/) - WordPress themes, page builders and popular plugins. Includes Elementor, Divi, WPBakery, Astra, Flatsome, Avada, GeneratePress, Kadence, OceanWP, Blocksy, WoodMart, Beaver Builder, Enfold, BeTheme, Salient and 6 more. - [Headless CMS & static sites](https://publicwww.com/docs/examples/headless/) - headless CMS, static site generators and documentation sites. Includes Astro, Hugo, Sanity, Jekyll, Gatsby, Ghost, Sphinx, Contentful, Hexo, Prismic, Docusaurus, Storyblok, VitePress, MkDocs, Publii and 5 more. - [Site builders](https://publicwww.com/docs/examples/site-builders/) - hosted website builders. Includes Wix, Squarespace, WordPress.com, GoDaddy Website Builder, Duda, Tilda, Weebly, Webflow, Hostinger Website Builder, HighLevel, Google Sites, Webador, Blogger, Jimdo, Framer and 41 more. - [Shop platforms](https://publicwww.com/docs/examples/ecommerce/) - shop platforms and carts. Includes WooCommerce, Shopify, OpenCart, Wix Stores, PrestaShop, Magento (Adobe Commerce), Odoo, Cafe24, Tiendanube (Nuvemshop), BASE, Squarespace Commerce, WHMCS, Salla, BigCommerce, Shoptet and 59 more. - [Payments](https://publicwww.com/docs/examples/payments/) - payment providers and checkout widgets. Includes Stripe, PayPal, Razorpay, Braintree, iyzico, Google Pay, Klarna, Apple Pay, Authorize.net, Square, Afterpay (Clearpay), Mercado Pago, Mollie, Amazon Pay, Paystack and 25 more. - [Discontinued, still running](https://publicwww.com/docs/examples/discontinued/) - products that were shut down or abandoned but whose code is still on many websites. Includes Universal Analytics, PHP 7, PHP 5, PHP 8.1, PHP 8.0, AngularJS, AddThis, SWFObject, Google PageSpeed, Google+ buttons, Facebook Messenger chat plugin, Turbolinks, jQuery Mobile, Cufon, script.aculo.us and 15 more. Most of these are a single exact phrase. That is usually all it takes: a third-party script has a filename or a configuration key that nobody edits, and searching for it finds every site that installed it. The [query syntax](https://publicwww.com/docs/query-syntax/) page covers narrowing by country, by page depth or by IP, and `snipexp:` for pulling the account ids back out of the matches. For a product that is not here, [Signatures](https://publicwww.com/docs/signatures/) shows how to find its code. Source: https://publicwww.com/docs/examples/ --- # Advertising - `Yandex Advertising Network` (https://publicwww.com/websites/%22yaContextCb%22/) - `"yaContextCb"` - `Google Ad Manager` (https://publicwww.com/websites/%22tag%2Fjs%2Fgpt.js%22+-%22marketing+google+ad+manager%22/) - `"tag/js/gpt.js" -"marketing google ad manager"` - `Taboola` (https://publicwww.com/websites/%22cdn.taboola.com%2Flibtrc%22/) - `"cdn.taboola.com/libtrc"` - `Ezoic` (https://publicwww.com/websites/%22tcf-ezoic%22+%7C+%22ezojs.com%22+-%22marketing+ezoic%22/) - `"tcf-ezoic" | "ezojs.com" -"marketing ezoic"` - `Adsterra` (https://publicwww.com/websites/%22atOptions%22+%7C+%22highperformanceformat.com%22/) - `"atOptions" | "highperformanceformat.com"` - `MGID` (https://publicwww.com/websites/%22mgid.com%22+-%22marketing+mgid%22/) - `"mgid.com" -"marketing mgid"` - `PropellerAds` (https://publicwww.com/websites/%22name%3Dpropeller%22/) - `"name=propeller"` - `Prebid.js` (https://publicwww.com/websites/%22prebid.js%22+%7C+%22pbjs.que%22/) - `"prebid.js" | "pbjs.que"` - `Monetag` (https://publicwww.com/websites/%22name%3Dmonetag%22/) - `"name=monetag"` - `ExoClick` (https://publicwww.com/websites/%22magsrv.com%22+%7C+%22syndication.exoclick.com%22/) - `"magsrv.com" | "syndication.exoclick.com"` - `Adfox` (https://publicwww.com/websites/%22Ya.adfoxCode%22+%7C+%22ads.adfox.ru%22/) - `"Ya.adfoxCode" | "ads.adfox.ru"` - `Mediavine` (https://publicwww.com/websites/%22scripts.mediavine.com%22+-%22marketing+mediavine%22+-%22mediavine.com+categories%22/) - `"scripts.mediavine.com" -"marketing mediavine" -"mediavine.com categories"` - `TrafficStars` (https://publicwww.com/websites/%22tsyndicate.com%22/) - `"tsyndicate.com"` - `Raptive` (https://publicwww.com/websites/%22adthrive.cmd%22/) - `"adthrive.cmd"` - `Outbrain` (https://publicwww.com/websites/%22obApi%22+%7C+%22widgets.outbrain.com%22+%7C+%22class%3DOUTBRAIN%22+-%22marketing+outbrain%22+-%22outbrain+patterns%22/) - `"obApi" | "widgets.outbrain.com" | "class=OUTBRAIN" -"marketing outbrain" -"outbrain patterns"` - `Google IMA SDK` (https://publicwww.com/websites/%22imasdk.googleapis.com%2Fjs%2Fsdkloader%2Fima3.js%22/) - `"imasdk.googleapis.com/js/sdkloader/ima3.js"` - `Infolinks` (https://publicwww.com/websites/%22resources.infolinks.com%2Fjs%2Finfolinks_main.js%22+-%22marketing+infolinks%22/) - `"resources.infolinks.com/js/infolinks_main.js" -"marketing infolinks"` - `Amazon Publisher Services` (https://publicwww.com/websites/%22amazon-adsystem.com%2Faax2%2Fapstag.js%22+%7C+%22apstag.init%22/) - `"amazon-adsystem.com/aax2/apstag.js" | "apstag.init"` - `Adcash` (https://publicwww.com/websites/%22acscdn.com%2Fscript%2Faclib.js%22+%7C+%22aclib.runAutoTag%22/) - `"acscdn.com/script/aclib.js" | "aclib.runAutoTag"` - `Media.net` (https://publicwww.com/websites/%22medianet_versionId%22+%7C+%22contextual.media.net%2Fdmedianet.js%22/) - `"medianet_versionId" | "contextual.media.net/dmedianet.js"` - `JuicyAds` (https://publicwww.com/websites/%22adsbyjuicy%22/) - `"adsbyjuicy"` - `EthicalAds` (https://publicwww.com/websites/%22data-ea-publisher%22/) - `"data-ea-publisher"` - `Equativ` (https://publicwww.com/websites/%22sas.cmd%22+%7C+%22ced.sascdn.com%2Ftag%22+%7C+%22smartadserver.com%2Fcall%22/) - `"sas.cmd" | "ced.sascdn.com/tag" | "smartadserver.com/call"` - `Revcontent` (https://publicwww.com/websites/%22data-rc-widget%22+%7C+%22trends.revcontent.com%22+%7C+%22data-widget-host%3D%5C%22revcontent%5C%22%22/) - `"data-rc-widget" | "trends.revcontent.com" | "data-widget-host=\"revcontent\""` - `Magnite` (https://publicwww.com/websites/%22micro.rubiconproject.com%2Fprebid%2Fdynamic%22/) - `"micro.rubiconproject.com/prebid/dynamic"` - `BuySellAds` (https://publicwww.com/websites/%22bsa.src%22+%7C+%22m.servedby-buysellads.com%2Fmonetization%22+%7C+%22srv.buysellads.com%22/) - `"bsa.src" | "m.servedby-buysellads.com/monetization" | "srv.buysellads.com"` - `Carbon Ads` (https://publicwww.com/websites/%22cdn.carbonads.com%2Fcarbon.js%22+%7C+%22carbonads-container%22/) - `"cdn.carbonads.com/carbon.js" | "carbonads-container"` - `Teads` (https://publicwww.com/websites/%22a.teads.tv%2Fpage%22+%7C+%22teads.tv%2Fanalytics%2Ftag.js%22+%7C+%22p.teads.tv%2Fteads-fellow.js%22/) - `"a.teads.tv/page" | "teads.tv/analytics/tag.js" | "p.teads.tv/teads-fellow.js"` - `Freestar` (https://publicwww.com/websites/%22freestar.config%22/) - `"freestar.config"` - `PopAds` (https://publicwww.com/websites/%22popads.net%22+-%22popads.net%2Fusers%2Frefer%22/) - `"popads.net" -"popads.net/users/refer"` - `Index Exchange` (https://publicwww.com/websites/%22js-sec.indexww.com%2Fht%2Fp%22/) - `"js-sec.indexww.com/ht/p"` - `Monumetric` (https://publicwww.com/websites/%22monu.delivery%2Fsite%22/) - `"monu.delivery/site"` - `Kevel` (https://publicwww.com/websites/%22ados_add_placement%22/) - `"ados_add_placement"` - `RevenueHits` (https://publicwww.com/websites/%22clksite.com%22/) - `"clksite.com"` - `PubMatic` (https://publicwww.com/websites/%22ads.pubmatic.com%2FAdServer%2Fjs%2Fpwt%22/) - `"ads.pubmatic.com/AdServer/js/pwt"` - [AdSense Publishers](https://publicwww.com/top/adsense/) Source: https://publicwww.com/docs/examples/ads/ --- # Ad pixels & affiliate - `Meta Pixel` (https://publicwww.com/websites/%22fbevents.js%22/) - `"fbevents.js"` - `Google Ads` (https://publicwww.com/websites/%22gtag+config+AW%22/) - `"gtag config AW"` - `TikTok Pixel` (https://publicwww.com/websites/%22analytics.tiktok.com%2Fi18n%2Fpixel%2Fevents.js%22/) - `"analytics.tiktok.com/i18n/pixel/events.js"` - `Microsoft Advertising` (https://publicwww.com/websites/%22uetq%22/) - `"uetq"` - `LinkedIn Insight Tag` (https://publicwww.com/websites/%22snap.licdn.com%2Fli.lms-analytics%2Finsight.min.js%22/) - `"snap.licdn.com/li.lms-analytics/insight.min.js"` - `Pinterest Tag` (https://publicwww.com/websites/%22s.pinimg.com%2Fct%2Fcore.js%22/) - `"s.pinimg.com/ct/core.js"` - `VK Pixel` (https://publicwww.com/websites/%22VK.Retargeting.Init%22+%7C+%22vk.com%2Frtrg%22/) - `"VK.Retargeting.Init" | "vk.com/rtrg"` - `X Pixel` (https://publicwww.com/websites/%22static.ads-twitter.com%2Fuwt.js%22/) - `"static.ads-twitter.com/uwt.js"` - `Snap Pixel` (https://publicwww.com/websites/%22sc-static.net%2Fscevent.min.js%22/) - `"sc-static.net/scevent.min.js"` - `Quantcast` (https://publicwww.com/websites/%22quantserve.com%2Fquant.js%22+-%22marketing+quantcast%22/) - `"quantserve.com/quant.js" -"marketing quantcast"` - `Awin` (https://publicwww.com/websites/%22awin1.com%2Fcread.php%22+%7C+%22dwin1.com%22+-%22marketing+awin%22/) - `"awin1.com/cread.php" | "dwin1.com" -"marketing awin"` - `AdRoll` (https://publicwww.com/websites/%22adroll_adv_id%22+-%22marketing+adroll%22/) - `"adroll_adv_id" -"marketing adroll"` - `CJ Affiliate` (https://publicwww.com/websites/%22anrdoezrs.net%22+%7C+%22jdoqocy.com%22+%7C+%22dpbolvw.net%22+%7C+%22kqzyfj.com%22+%7C+%22tkqlhce.com%22/) - `"anrdoezrs.net" | "jdoqocy.com" | "dpbolvw.net" | "kqzyfj.com" | "tkqlhce.com"` - `Amazon Associates` (https://publicwww.com/websites/%22z-na.amazon-adsystem.com%2Fwidgets%2Fonejs%22+%7C+%22amzn_assoc_placement%22+%7C+%22ws-na.amazon-adsystem.com%2Fwidgets%2Fq%22/) - `"z-na.amazon-adsystem.com/widgets/onejs" | "amzn_assoc_placement" | "ws-na.amazon-adsystem.com/widgets/q"` - `Criteo` (https://publicwww.com/websites/%22static.criteo.net%2Fjs%2Fld%22+%7C+%22dynamic.criteo.com%2Fjs%2Fld%2Fld.js%22+%7C+%22criteo_q%22+-%22marketing+criteo%22/) - `"static.criteo.net/js/ld" | "dynamic.criteo.com/js/ld/ld.js" | "criteo_q" -"marketing criteo"` - `Reddit Pixel` (https://publicwww.com/websites/%22redditstatic.com%2Fads%2Fpixel.js%22/) - `"redditstatic.com/ads/pixel.js"` - `The Trade Desk` (https://publicwww.com/websites/%22js.adsrvr.org%2Fup_loader%22+%7C+%22insight.adsrvr.org%2Ftrack%22/) - `"js.adsrvr.org/up_loader" | "insight.adsrvr.org/track"` - `ShareASale` (https://publicwww.com/websites/%22shareasale.com%2Fr.cfm%22/) - `"shareasale.com/r.cfm"` - `Floodlight` (https://publicwww.com/websites/%22gtag+config+DC%22+%7C+%22fls.doubleclick.net%2Factivityi%22/) - `"gtag config DC" | "fls.doubleclick.net/activityi"` - `Rakuten Advertising` (https://publicwww.com/websites/%22click.linksynergy.com%22+-%22linksynergy.com%2Ffs-bin%2F%5C%22%5D%3Eimg%22+-%22linksynergy.com%2Ffs-bin%2F%5C%22%5D+%3E+img%22/) - `"click.linksynergy.com" -"linksynergy.com/fs-bin/\"]>img" -"linksynergy.com/fs-bin/\"] > img"` - `impact.com` (https://publicwww.com/websites/%22utt.impactcdn.com%22+-%22marketing+impact%22/) - `"utt.impactcdn.com" -"marketing impact"` - `Tradedoubler` (https://publicwww.com/websites/%22clk.tradedoubler.com%2Fclick%22+%7C+%22impes.tradedoubler.com%2Fimp%22/) - `"clk.tradedoubler.com/click" | "impes.tradedoubler.com/imp"` - `Sovrn Commerce` (https://publicwww.com/websites/%22vglnk%22/) - `"vglnk"` - `Skimlinks` (https://publicwww.com/websites/%22s.skimresources.com%2Fjs%22+-%22marketing+skimlinks%22/) - `"s.skimresources.com/js" -"marketing skimlinks"` - `StackAdapt` (https://publicwww.com/websites/%22tags.srv.stackadapt.com%2Fevents.js%22/) - `"tags.srv.stackadapt.com/events.js"` - `Adform` (https://publicwww.com/websites/%22_adftrack%22/) - `"_adftrack"` - `Yahoo Advertising` (https://publicwww.com/websites/%22dotq%22/) - `"dotq"` - `PartnerStack` (https://publicwww.com/websites/%22snippet.growsumo.com%22+%7C+%22growsumo._initialize%22/) - `"snippet.growsumo.com" | "growsumo._initialize"` - `Quora Pixel` (https://publicwww.com/websites/%22a.quora.com%2Fqevents.js%22/) - `"a.quora.com/qevents.js"` - `Webgains` (https://publicwww.com/websites/%22wgcampaignid%22/) - `"wgcampaignid"` - `Perfect Audience` (https://publicwww.com/websites/%22tag.perfectaudience.com%2Fserve%22/) - `"tag.perfectaudience.com/serve"` - `RTB House` (https://publicwww.com/websites/%22rtbhEvents%22+%7C+%22creativecdn.com%2Ftags%3Fid%22/) - `"rtbhEvents" | "creativecdn.com/tags?id"` Source: https://publicwww.com/docs/examples/pixels/ --- # Marketing - `Google Tag Manager` (https://publicwww.com/websites/%22googletagmanager.com%2Fgtm.js%22/) - `"googletagmanager.com/gtm.js"` - `Yoast SEO` (https://publicwww.com/websites/%22this+site+is+optimized+with+the+yoast%22/) - `"this site is optimized with the yoast"` - `Rank Math` (https://publicwww.com/websites/%22rank-math-schema%22/) - `"rank-math-schema"` - `All in One SEO` (https://publicwww.com/websites/%22aioseo-schema%22/) - `"aioseo-schema"` - `Popup Maker` (https://publicwww.com/websites/%22pum-overlay%22/) - `"pum-overlay"` - `Adobe Experience Platform Tags` (https://publicwww.com/websites/%22assets.adobedtm.com%22+-%22satelliteLib%22/) - `"assets.adobedtm.com" -"satelliteLib"` - `Matomo Tag Manager` (https://publicwww.com/websites/%22_mtm.push%22/) - `"_mtm.push"` - `The SEO Framework` (https://publicwww.com/websites/%22The+SEO+Framework+by+Sybre+Waaijer%22/) - `"The SEO Framework by Sybre Waaijer"` - `OneSignal` (https://publicwww.com/websites/%22cdn.onesignal.com%2Fsdks%22+%7C+%22OneSignal.init%22+-%22marketing+onesignal%22/) - `"cdn.onesignal.com/sdks" | "OneSignal.init" -"marketing onesignal"` - `WonderPush` (https://publicwww.com/websites/%22cdn.by.wonderpush.com%22/) - `"cdn.by.wonderpush.com"` - `Bloom` (https://publicwww.com/websites/%22et_bloom%22/) - `"et_bloom"` - `SEOPress` (https://publicwww.com/websites/%22SEOPress%22/) - `"SEOPress"` - `Branch` (https://publicwww.com/websites/%22branch.init%22+-%22marketing+branch%22/) - `"branch.init" -"marketing branch"` - `ClickFunnels` (https://publicwww.com/websites/%22clickfunnels-com%22/) - `"clickfunnels-com"` - `Tealium iQ` (https://publicwww.com/websites/%22utag.js%22+-%22marketing+tealium%22/) - `"utag.js" -"marketing tealium"` - `AppsFlyer` (https://publicwww.com/websites/%22onelink.me%22+%7C+%22websdk.appsflyer.com%22+%7C+%22onelinksmartscript%22+-%22marketing+appsflyer%22/) - `"onelink.me" | "websdk.appsflyer.com" | "onelinksmartscript" -"marketing appsflyer"` - `CallRail` (https://publicwww.com/websites/%22cdn.callrail.com%2Fcompanies%22/) - `"cdn.callrail.com/companies"` - `Slim SEO` (https://publicwww.com/websites/%22slim-seo-schema%22/) - `"slim-seo-schema"` - `Mailmunch` (https://publicwww.com/websites/%22a.mailmunch.co%22+-%22marketing+mailmunch%22/) - `"a.mailmunch.co" -"marketing mailmunch"` - `Sumo` (https://publicwww.com/websites/%22load.sumome.com%22+%7C+%22load.sumo.com%22+-%22marketing+sumo%22/) - `"load.sumome.com" | "load.sumo.com" -"marketing sumo"` - `Poptin` (https://publicwww.com/websites/%22cdn.popt.in%2Fpixel.js%22/) - `"cdn.popt.in/pixel.js"` - `Calltouch` (https://publicwww.com/websites/%22mod.calltouch.ru%22/) - `"mod.calltouch.ru"` - `OptinMonster` (https://publicwww.com/websites/%22omappapi%22+-%22marketing+optinmonster%22/) - `"omappapi" -"marketing optinmonster"` - `Squirrly SEO` (https://publicwww.com/websites/%22Squirrly+SEO%22+-%22marketing+squirrly%22/) - `"Squirrly SEO" -"marketing squirrly"` - `PushEngage` (https://publicwww.com/websites/%22clientcdn.pushengage.com%22+-%22categories+functional%22/) - `"clientcdn.pushengage.com" -"categories functional"` - `Getsitecontrol` (https://publicwww.com/websites/%22getsitecontrol.com%22+-%22categories+functional%22/) - `"getsitecontrol.com" -"categories functional"` - `Adjust` (https://publicwww.com/websites/%22app.adjust.com%22+%7C+%22adj.st%22+-%22marketing+adjust%22/) - `"app.adjust.com" | "adj.st" -"marketing adjust"` - `Roistat` (https://publicwww.com/websites/%22Roistat+Counter+Start%22/) - `"Roistat Counter Start"` - `CallTrackingMetrics` (https://publicwww.com/websites/%22tctm.co%2Ft.js%22/) - `"tctm.co/t.js"` - `Unbounce` (https://publicwww.com/websites/%22lp-pom-root%22+%7C+%22ubembed.com%22/) - `"lp-pom-root" | "ubembed.com"` - `PushOwl` (https://publicwww.com/websites/%22pushowl-shopify.js%22/) - `"pushowl-shopify.js"` - `SendPulse` (https://publicwww.com/websites/%22web.webpushs.com%22+%7C+%22cdn.sendpulse.com%22/) - `"web.webpushs.com" | "cdn.sendpulse.com"` - `OptiMonk` (https://publicwww.com/websites/%22onsite.optimonk.com%22/) - `"onsite.optimonk.com"` - `iZooto` (https://publicwww.com/websites/%22cdn.izooto.com%22/) - `"cdn.izooto.com"` - `Leadpages` (https://publicwww.com/websites/%22leadpages-meta-id%22/) - `"leadpages-meta-id"` - `Hello Bar` (https://publicwww.com/websites/%22my.hellobar.com%22/) - `"my.hellobar.com"` - `Thrive Leads` (https://publicwww.com/websites/%22tve-leads%22/) - `"tve-leads"` - `ProveSource` (https://publicwww.com/websites/%22provesrc%22/) - `"provesrc"` - `Webpushr` (https://publicwww.com/websites/%22cdn.webpushr.com%22/) - `"cdn.webpushr.com"` - `Privy` (https://publicwww.com/websites/%22widget.privy.com%22+-%22marketing+privy%22/) - `"widget.privy.com" -"marketing privy"` - `Sleeknote` (https://publicwww.com/websites/%22sleeknotecustomerscripts%22/) - `"sleeknotecustomerscripts"` - `Wisepops` (https://publicwww.com/websites/%22loader.wisepops.com%22/) - `"loader.wisepops.com"` Source: https://publicwww.com/docs/examples/marketing/ --- # Email & automation - `Mailchimp` (https://publicwww.com/websites/%22chimpstatic.com%2Fmcjs-connected%22+%7C+%22mc-embedded-subscribe-form%22/) - `"chimpstatic.com/mcjs-connected" | "mc-embedded-subscribe-form"` - `HubSpot` (https://publicwww.com/websites/%22hs-script-loader%22+%7C+%22js.hs-scripts.com%22+%7C+%22js.hsforms.net%22/) - `"hs-script-loader" | "js.hs-scripts.com" | "js.hsforms.net"` - `Klaviyo` (https://publicwww.com/websites/%22static.klaviyo.com%2Fonsite%2Fjs%22+-%22marketing+klaviyo%22/) - `"static.klaviyo.com/onsite/js" -"marketing klaviyo"` - `MC4WP: Mailchimp for WordPress` (https://publicwww.com/websites/%22mc4wp-form-1%22/) - `"mc4wp-form-1"` - `Brevo` (https://publicwww.com/websites/%22sibforms.com%22+%7C+%22Brevo.push%22+%7C+%22cdn.brevo.com%2Fjs%2Fsdk-loader.js%22+-%22marketing+brevo%22/) - `"sibforms.com" | "Brevo.push" | "cdn.brevo.com/js/sdk-loader.js" -"marketing brevo"` - `MailerLite` (https://publicwww.com/websites/%22assets.mailerlite.com%2Fjs%2Funiversal.js%22+%7C+%22static.mailerlite.com%2Fjs%2Funiversal.js%22+%7C+%22groot.mailerlite.com%22+-%22marketing+mailerlite%22/) - `"assets.mailerlite.com/js/universal.js" | "static.mailerlite.com/js/universal.js" | "groot.mailerlite.com" -"marketing mailerlite"` - `Kit` (https://publicwww.com/websites/%22formkit-form%22+%7C+%22convertkit-js%22+%7C+%22app.kit.com%2Fforms%22+-%22marketing+convertkit%22/) - `"formkit-form" | "convertkit-js" | "app.kit.com/forms" -"marketing convertkit"` - `HubSpot Forms` (https://publicwww.com/websites/%22hbspt.forms.create%22/) - `"hbspt.forms.create"` - `Omnisend` (https://publicwww.com/websites/%22omnisnippet1.com%22+%7C+%22omnisend-in-shop.js%22+-%22marketing+omnisend%22/) - `"omnisnippet1.com" | "omnisend-in-shop.js" -"marketing omnisend"` - `ActiveCampaign` (https://publicwww.com/websites/%22diffuser-cdn.app-us1.com%22+%7C+%22activehosted.com%22+%7C+%22trackcmp.net%22+-%22marketing+activecampaign%22/) - `"diffuser-cdn.app-us1.com" | "activehosted.com" | "trackcmp.net" -"marketing activecampaign"` - `Constant Contact` (https://publicwww.com/websites/%22static.ctctcdn.com%2Fjs%2Fsignup-form-widget%22/) - `"static.ctctcdn.com/js/signup-form-widget"` - `Pardot` (https://publicwww.com/websites/%22pi.pardot.com%22+%7C+%22piAId%22+%7C+%22go.pardot.com%22+-%22marketing+pardot%22/) - `"pi.pardot.com" | "piAId" | "go.pardot.com" -"marketing pardot"` - `Bitrix24 CRM Forms` (https://publicwww.com/websites/%22b24-form%22/) - `"b24-form"` - `Campaign Monitor` (https://publicwww.com/websites/%22createsend.com%22+%7C+%22createsend1.com%22/) - `"createsend.com" | "createsend1.com"` - `AWeber` (https://publicwww.com/websites/%22forms.aweber.com%22/) - `"forms.aweber.com"` - `Postscript` (https://publicwww.com/websites/%22sdk.postscript.io%22+-%22marketing+postscript%22/) - `"sdk.postscript.io" -"marketing postscript"` - `Marketo` (https://publicwww.com/websites/%22munchkin.marketo.net%22+%7C+%22Munchkin.init%22+%7C+%22mktoForms2%22+-%22marketing+marketo%22/) - `"munchkin.marketo.net" | "Munchkin.init" | "mktoForms2" -"marketing marketo"` - `Mautic` (https://publicwww.com/websites/%22MauticTrackingObject%22/) - `"MauticTrackingObject"` - `SharpSpring` (https://publicwww.com/websites/%22marketingautomation.services%2Fclient%2Fss.js%22/) - `"marketingautomation.services/client/ss.js"` - `Zoho Campaigns` (https://publicwww.com/websites/%22maillist-manage%22/) - `"maillist-manage"` - `GetResponse` (https://publicwww.com/websites/%22gr-cdn.com%22+%7C+%22ga.getresponse.com%22/) - `"gr-cdn.com" | "ga.getresponse.com"` - `Drip` (https://publicwww.com/websites/%22tag.getdrip.com%22+-%22marketing+drip%22/) - `"tag.getdrip.com" -"marketing drip"` - `Attentive` (https://publicwww.com/websites/%22cdn.attn.tv%22+-%22marketing+attentive%22/) - `"cdn.attn.tv" -"marketing attentive"` - `Salesforce Web-to-Lead` (https://publicwww.com/websites/%22salesforce.com%2Fservlet%2Fservlet.WebToLead%22/) - `"salesforce.com/servlet/servlet.WebToLead"` - `Keap` (https://publicwww.com/websites/%22infusionsoft.com%2Fapp%2Fform%22/) - `"infusionsoft.com/app/form"` - `Salesforce Marketing Cloud` (https://publicwww.com/websites/%22cdn.evgnet.com%22+%7C+%22collect.igodigital.com%22/) - `"cdn.evgnet.com" | "collect.igodigital.com"` - `Pipedrive Web Forms` (https://publicwww.com/websites/%22webforms.pipedrive.com%22/) - `"webforms.pipedrive.com"` - `Oracle Eloqua` (https://publicwww.com/websites/%22elqCfg%22+%7C+%22img.en25.com%22+%7C+%22elqTrackId%22/) - `"elqCfg" | "img.en25.com" | "elqTrackId"` Source: https://publicwww.com/docs/examples/email/ --- # Reviews & store apps - `Trustindex` (https://publicwww.com/websites/%22cdn.trustindex.io%22/) - `"cdn.trustindex.io"` - `Judge.me` (https://publicwww.com/websites/%22jdgm%22+-%22marketing+judge+me%22/) - `"jdgm" -"marketing judge me"` - `Trustpilot` (https://publicwww.com/websites/%22widget.trustpilot.com%2Fbootstrap%22/) - `"widget.trustpilot.com/bootstrap"` - `PageFly` (https://publicwww.com/websites/%22pagefly%22/) - `"pagefly"` - `Loox` (https://publicwww.com/websites/%22loox.io%22+%7C+%22loox-rating%22/) - `"loox.io" | "loox-rating"` - `Klevu` (https://publicwww.com/websites/%22js.klevu.com%22/) - `"js.klevu.com"` - `Tripadvisor` (https://publicwww.com/websites/%22jscache.com%2Fwejs%22/) - `"jscache.com/wejs"` - `Algolia` (https://publicwww.com/websites/%22algoliasearch%22+%7C+%22algolianet+com%22+%7C+%22dsn+algolia+net%22/) - `"algoliasearch" | "algolianet com" | "dsn algolia net"` - `Google Customer Reviews` (https://publicwww.com/websites/%22merchantwidget.js%22+%7C+%22renderOptIn%22/) - `"merchantwidget.js" | "renderOptIn"` - `Yotpo` (https://publicwww.com/websites/%22cdn-widgetsrepository.yotpo.com%22+%7C+%22staticw2.yotpo.com%22+-%22marketing+yotpo%22/) - `"cdn-widgetsrepository.yotpo.com" | "staticw2.yotpo.com" -"marketing yotpo"` - `GemPages` (https://publicwww.com/websites/%22gempages%22/) - `"gempages"` - `Trusted Shops` (https://publicwww.com/websites/%22widgets.trustedshops.com%22/) - `"widgets.trustedshops.com"` - `Stamped` (https://publicwww.com/websites/%22stamped.io%22+-%22marketing+stamped%22/) - `"stamped.io" -"marketing stamped"` - `Smile.io` (https://publicwww.com/websites/%22js.smile.io%22/) - `"js.smile.io"` - `Recharge` (https://publicwww.com/websites/%22static.rechargecdn.com%22/) - `"static.rechargecdn.com"` - `Okendo` (https://publicwww.com/websites/%22okendo-reviews%22+%7C+%22okendo.io%22/) - `"okendo-reviews" | "okendo.io"` - `Rebuy` (https://publicwww.com/websites/%22cdn.rebuyengine.com%22/) - `"cdn.rebuyengine.com"` - `ProvenExpert` (https://publicwww.com/websites/%22provenexpert.com%2Fwidget%22/) - `"provenexpert.com/widget"` - `REVIEWS.io` (https://publicwww.com/websites/%22reviewsio%22+%7C+%22widget.reviews.io%22/) - `"reviewsio" | "widget.reviews.io"` - `Searchanise` (https://publicwww.com/websites/%22searchanise%22/) - `"searchanise"` - `Bazaarvoice` (https://publicwww.com/websites/%22apps.bazaarvoice.com%2Fdeployments%22+%7C+%22display.ugc.bazaarvoice.com%22/) - `"apps.bazaarvoice.com/deployments" | "display.ugc.bazaarvoice.com"` - `Birdeye` (https://publicwww.com/websites/%22birdeye.com%2Fembed%22/) - `"birdeye.com/embed"` - `Feefo` (https://publicwww.com/websites/%22api.feefo.com%22/) - `"api.feefo.com"` - `Nosto` (https://publicwww.com/websites/%22connect.nosto.com%22/) - `"connect.nosto.com"` Source: https://publicwww.com/docs/examples/reviews/ --- # Analytics - `Google Analytics 4` (https://publicwww.com/websites/%22gtag%2Fjs%3Fid%3DG-%22/) - `"gtag/js?id=G-"` - `Site Kit by Google` (https://publicwww.com/websites/%22Site+Kit+by+Google%22/) - `"Site Kit by Google"` - `Yandex Metrica` (https://publicwww.com/websites/%22mc.yandex.ru%2Fmetrika%2Ftag.js%22/) - `"mc.yandex.ru/metrika/tag.js"` - `Baidu Tongji` (https://publicwww.com/websites/%22hm.baidu.com%2Fhm.js%22/) - `"hm.baidu.com/hm.js"` - `51.la` (https://publicwww.com/websites/%22sdk.51.la%22/) - `"sdk.51.la"` - `MonsterInsights` (https://publicwww.com/websites/%22Google+Analytics+by+MonsterInsights%22/) - `"Google Analytics by MonsterInsights"` - `Jetpack Stats` (https://publicwww.com/websites/%22_stq.push%22/) - `"_stq.push"` - `Matomo` (https://publicwww.com/websites/%22matomo.js%22+%7C+%22piwik.php%22+-%22matomo+js+analytics+matomo%22/) - `"matomo.js" | "piwik.php" -"matomo js analytics matomo"` - `Cloudflare Web Analytics` (https://publicwww.com/websites/%22static.cloudflareinsights.com%2Fbeacon.min.js%22/) - `"static.cloudflareinsights.com/beacon.min.js"` - `Plausible` (https://publicwww.com/websites/%22plausible.io%2Fjs%2F%22+%7C+%22window.plausible.q%3Dwindow.plausible.q%22+-%22pa-6FZUe2Iv3m6Yx_KBS2sv2%22+-%22plausible+io+js+analytics+plausible%22/) - `"plausible.io/js/" | "window.plausible.q=window.plausible.q" -"pa-6FZUe2Iv3m6Yx_KBS2sv2" -"plausible io js analytics plausible"` - `CNZZ` (https://publicwww.com/websites/%22cnzz.com%2Fz_stat.php%22+%7C+%22cnzz.com%2Fstat.php%22+%7C+%22s4.cnzz.com%22/) - `"cnzz.com/z_stat.php" | "cnzz.com/stat.php" | "s4.cnzz.com"` - `LiveInternet` (https://publicwww.com/websites/%22counter.yadro.ru%2Fhit%22/) - `"counter.yadro.ru/hit"` - `Umami` (https://publicwww.com/websites/%22script.js+data-website-id%22/) - `"script.js data-website-id"` - `StatCounter` (https://publicwww.com/websites/%22sc_project%22/) - `"sc_project"` - `ExactMetrics` (https://publicwww.com/websites/%22by+ExactMetrics%22/) - `"by ExactMetrics"` - `Histats` (https://publicwww.com/websites/%22s10.histats.com%2Fjs15_as.js%22+%7C+%22Histats.com+START%22/) - `"s10.histats.com/js15_as.js" | "Histats.com START"` - `Top.Mail.Ru` (https://publicwww.com/websites/%22_tmr.push%22+%7C+%22top.mail.ru%2Fcounter%22/) - `"_tmr.push" | "top.mail.ru/counter"` - `Ahrefs Web Analytics` (https://publicwww.com/websites/%22analytics.ahrefs.com%2Fanalytics.js%22/) - `"analytics.ahrefs.com/analytics.js"` - `Fathom Analytics` (https://publicwww.com/websites/%22cdn.usefathom.com%2Fscript.js%22+-%22usefathom+com+analytics+fathom%22/) - `"cdn.usefathom.com/script.js" -"usefathom com analytics fathom"` - `Adobe Analytics` (https://publicwww.com/websites/%22sc.omtrdc.net%22+%7C+%22s_code.js%22+%7C+%22AppMeasurement%22+-%22launch-9f62b0723785%22/) - `"sc.omtrdc.net" | "s_code.js" | "AppMeasurement" -"launch-9f62b0723785"` - `Vercel Web Analytics` (https://publicwww.com/websites/%22_vercel%2Finsights%2Fscript.js%22/) - `"_vercel/insights/script.js"` - `comScore` (https://publicwww.com/websites/%22_comscore.push%22/) - `"_comscore.push"` - `Piano Analytics` (https://publicwww.com/websites/%22xiti.com%22/) - `"xiti.com"` - `Clicky` (https://publicwww.com/websites/%22static.getclicky.com%22+-%22getclicky+com+analytics+clicky%22/) - `"static.getclicky.com" -"getclicky com analytics clicky"` - `Rambler Top100` (https://publicwww.com/websites/%22counter.rambler.ru%2Ftop100%22/) - `"counter.rambler.ru/top100"` - `Gemius` (https://publicwww.com/websites/%22xgemius.js%22/) - `"xgemius.js"` - `Leadfeeder` (https://publicwww.com/websites/%22lfeeder.com%22/) - `"lfeeder.com"` - `GoatCounter` (https://publicwww.com/websites/%22data-goatcounter%22/) - `"data-goatcounter"` - `ShinyStat` (https://publicwww.com/websites/%22shinystat.com%2Fcgi-bin%2F%22/) - `"shinystat.com/cgi-bin/"` - `whos.amung.us` (https://publicwww.com/websites/%22_wau.push%22+%7C+%22whos.amung.us%2Fwidget%22/) - `"_wau.push" | "whos.amung.us/widget"` - `Simple Analytics` (https://publicwww.com/websites/%22scripts.simpleanalyticscdn.com%22+-%22simpleanalyticscdn+com+analytics%22/) - `"scripts.simpleanalyticscdn.com" -"simpleanalyticscdn com analytics"` - `etracker` (https://publicwww.com/websites/%22et_pagename%22+%7C+%22code.etracker.com%22/) - `"et_pagename" | "code.etracker.com"` - `Piwik PRO` (https://publicwww.com/websites/%22containers.piwik.pro%22/) - `"containers.piwik.pro"` - `Pirsch` (https://publicwww.com/websites/%22api.pirsch.io%22/) - `"api.pirsch.io"` - `HitWebCounter` (https://publicwww.com/websites/%22hitwebcounter.com%2Fcounter%22/) - `"hitwebcounter.com/counter"` - `Flag Counter` (https://publicwww.com/websites/%22flagcounter.com%2Fcount%22+%7C+%22flagcounter.com%2Fmore%22/) - `"flagcounter.com/count" | "flagcounter.com/more"` - `Rybbit` (https://publicwww.com/websites/%22rybbit%22+%22api%2Fscript.js%22/) - `"rybbit" "api/script.js"` - `ClustrMaps` (https://publicwww.com/websites/%22clustrmaps.com%2Fcounter%22+%7C+%22clustrmaps.com%2Fmap_v2.js%22+%7C+%22clustrmaps.com%2Fglobe.js%22/) - `"clustrmaps.com/counter" | "clustrmaps.com/map_v2.js" | "clustrmaps.com/globe.js"` - `Nielsen` (https://publicwww.com/websites/%22imrworldwide.com%22/) - `"imrworldwide.com"` - `Open Web Analytics` (https://publicwww.com/websites/%22owa_baseUrl%22/) - `"owa_baseUrl"` - `Chartbeat` (https://publicwww.com/websites/%22_sf_async_config%22/) - `"_sf_async_config"` - `W3Counter` (https://publicwww.com/websites/%22w3counter.com%2Ftracker.js%22/) - `"w3counter.com/tracker.js"` - `Parse.ly` (https://publicwww.com/websites/%22parsely-cfg%22+%7C+%22parsely-title%22/) - `"parsely-cfg" | "parsely-title"` - `GoStats` (https://publicwww.com/websites/%22GoStats+JavaScript+Based+Code%22/) - `"GoStats JavaScript Based Code"` - `Mapp Intelligence` (https://publicwww.com/websites/%22wt-safetag.com%22+%7C+%22webtrekkConfig%22+%7C+%22webtrekk_v4%22/) - `"wt-safetag.com" | "webtrekkConfig" | "webtrekk_v4"` - `Snoobi` (https://publicwww.com/websites/%22snoobi.com%22+%7C+%22Snoobi+siteanalytics%22/) - `"snoobi.com" | "Snoobi siteanalytics"` - `Webtrends` (https://publicwww.com/websites/%22webtrendslive.com%22+%7C+%22dcsimg%22+%7C+%22webtrends.js%22/) - `"webtrendslive.com" | "dcsimg" | "webtrends.js"` - `INFOnline` (https://publicwww.com/websites/%22iom.c%28%22+%7C+%22script.ioam.de%2Fiam.js%22/) - `"iom.c(" | "script.ioam.de/iam.js"` - [Google Analytics](https://publicwww.com/top/analytics/) Source: https://publicwww.com/docs/examples/analytics/ --- # Product analytics, replay & monitoring - `Snowplow` (https://publicwww.com/websites/%22GlobalSnowplowNamespace%22/) - `"GlobalSnowplowNamespace"` - `Microsoft Clarity` (https://publicwww.com/websites/%22clarity.ms%2Ftag%22+-%22clarity+ms+tag+analytics+clarity%22/) - `"clarity.ms/tag" -"clarity ms tag analytics clarity"` - `New Relic` (https://publicwww.com/websites/%22js-agent.newrelic.com%22/) - `"js-agent.newrelic.com"` - `Hotjar` (https://publicwww.com/websites/%22_hjSettings%22/) - `"_hjSettings"` - `Crazy Egg` (https://publicwww.com/websites/%22script.crazyegg.com%2Fpages%22/) - `"script.crazyegg.com/pages"` - `Datadog RUM` (https://publicwww.com/websites/%22datadoghq-browser-agent.com%22/) - `"datadoghq-browser-agent.com"` - `Sentry` (https://publicwww.com/websites/%22Sentry.init%22+%7C+%22browser.sentry-cdn.com%22/) - `"Sentry.init" | "browser.sentry-cdn.com"` - `PostHog` (https://publicwww.com/websites/%22posthog.init%22/) - `"posthog.init"` - `Segment` (https://publicwww.com/websites/%22segment.com%2Fanalytics.js%2Fv1%22/) - `"segment.com/analytics.js/v1"` - `RudderStack` (https://publicwww.com/websites/%22rudderanalytics.load%22/) - `"rudderanalytics.load"` - `Lucky Orange` (https://publicwww.com/websites/%22tools.luckyorange.com%2Fcore%2Flo.js%22+%7C+%22d10lpsik1i8c69.cloudfront.net%2Fw.js%22/) - `"tools.luckyorange.com/core/lo.js" | "d10lpsik1i8c69.cloudfront.net/w.js"` - `Mixpanel` (https://publicwww.com/websites/%22mixpanel.init%22/) - `"mixpanel.init"` - `Smartlook` (https://publicwww.com/websites/%22smartlook+init%22+-%22smartlook+com+analytics+smartlook%22/) - `"smartlook init" -"smartlook com analytics smartlook"` - `Amplitude` (https://publicwww.com/websites/%22amplitude.init%22+%7C+%22amplitude.getInstance%22/) - `"amplitude.init" | "amplitude.getInstance"` - `Contentsquare` (https://publicwww.com/websites/%22t.contentsquare.net%2Fuxa%22/) - `"t.contentsquare.net/uxa"` - `Azure Application Insights` (https://publicwww.com/websites/%22js.monitor.azure.com%2Fscripts%2Fb%2Fai%22/) - `"js.monitor.azure.com/scripts/b/ai"` - `Mouseflow` (https://publicwww.com/websites/%22_mfq%22/) - `"_mfq"` - `TrackJS` (https://publicwww.com/websites/%22cdn.trackjs.com%22/) - `"cdn.trackjs.com"` - `Heap` (https://publicwww.com/websites/%22heap.load%22/) - `"heap.load"` - `Pendo` (https://publicwww.com/websites/%22cdn.pendo.io%2Fagent%2Fstatic%22/) - `"cdn.pendo.io/agent/static"` - `Quantum Metric` (https://publicwww.com/websites/%22cdn.quantummetric.com%2Fqscripts%22/) - `"cdn.quantummetric.com/qscripts"` - `FullStory` (https://publicwww.com/websites/%22fullstory.com%2Fs%2Ffs.js%22+%7C+%22_fs_namespace%22/) - `"fullstory.com/s/fs.js" | "_fs_namespace"` - `Ptengine` (https://publicwww.com/websites/%22ptengine.jp%2Fpta.js%22+%7C+%22src+https+js+ptengine%22+%7C+%22ptengine.com%2Fpta%22/) - `"ptengine.jp/pta.js" | "src https js ptengine" | "ptengine.com/pta"` - `Inspectlet` (https://publicwww.com/websites/%22__insp%22/) - `"__insp"` - `Woopra` (https://publicwww.com/websites/%22static.woopra.com%22+-%22Woopra+flakiness%22+-%22woopra+com+analytics+woopra%22/) - `"static.woopra.com" -"Woopra flakiness" -"woopra com analytics woopra"` - `LogRocket` (https://publicwww.com/websites/%22LogRocket.init%22+%7C+%22cdn.lr-ingest.io%22+%7C+%22cdn.lr-in.com%22/) - `"LogRocket.init" | "cdn.lr-ingest.io" | "cdn.lr-in.com"` - `Dynatrace` (https://publicwww.com/websites/%22js-cdn.dynatrace.com%22/) - `"js-cdn.dynatrace.com"` - `TruConversion` (https://publicwww.com/websites/%22app.truconversion.com%2Fti-js%22/) - `"app.truconversion.com/ti-js"` - `Kissmetrics` (https://publicwww.com/websites/%22scripts.kissmetrics.io%22+%7C+%22i.kissmetrics.com%22+-%22kissmetrics+io+analytics+kissmetrics%22/) - `"scripts.kissmetrics.io" | "i.kissmetrics.com" -"kissmetrics io analytics kissmetrics"` - `Plerdy` (https://publicwww.com/websites/%22_site_hash_code%22/) - `"_site_hash_code"` - `heatmap.it` (https://publicwww.com/websites/%22u.heatmap.it%2Flog.js%22/) - `"u.heatmap.it/log.js"` - `Heatmap.com` (https://publicwww.com/websites/%22_heatmap_paq%22/) - `"_heatmap_paq"` - `OpenReplay` (https://publicwww.com/websites/%22static.openreplay.com%22+%7C+%22openreplay.js%22/) - `"static.openreplay.com" | "openreplay.js"` - `ClickHeat` (https://publicwww.com/websites/%22initClickHeat%22/) - `"initClickHeat"` Source: https://publicwww.com/docs/examples/product-analytics/ --- # A/B testing - `Optimizely` (https://publicwww.com/websites/%22optimizely.com%2Fjs%22/) - `"optimizely.com/js"` - `VWO` (https://publicwww.com/websites/%22visualwebsiteoptimizer.com%2Fj.php%22/) - `"visualwebsiteoptimizer.com/j.php"` - `Zoho PageSense` (https://publicwww.com/websites/%22cdn.pagesense.io%2Fjs%22/) - `"cdn.pagesense.io/js"` - `Adobe Target` (https://publicwww.com/websites/%22Adobe+Target+Flicker+handling%22+%7C+%22tt.omtrdc.net%22+-%22launch-9f62b0723785%22/) - `"Adobe Target Flicker handling" | "tt.omtrdc.net" -"launch-9f62b0723785"` - `Statsig` (https://publicwww.com/websites/%22statsigapi.net%22/) - `"statsigapi.net"` - `Intellimize` (https://publicwww.com/websites/%22cdn.intellimize.co%2Fsnippet%22/) - `"cdn.intellimize.co/snippet"` - `LaunchDarkly` (https://publicwww.com/websites/%22launchdarkly.com%22/) - `"launchdarkly.com"` - `Convert` (https://publicwww.com/websites/%22convertexperiments.com%2Fv1%2Fjs%22+%7C+%22convertexperiments.com%2Fjs%22/) - `"convertexperiments.com/v1/js" | "convertexperiments.com/js"` - `GrowthBook` (https://publicwww.com/websites/%22cdn.growthbook.io%22+%7C+%22npm.growthbook%22/) - `"cdn.growthbook.io" | "npm.growthbook"` - `Intelligems` (https://publicwww.com/websites/%22cdn.intelligems.io%22/) - `"cdn.intelligems.io"` - `AB Tasty` (https://publicwww.com/websites/%22try.abtasty.com%22+-%22try+abtasty+com+analytics+ab+tasty%22/) - `"try.abtasty.com" -"try abtasty com analytics ab tasty"` - `Nelio A/B Testing` (https://publicwww.com/websites/%22nelio-ab-testing%22/) - `"nelio-ab-testing"` - `Shoplift` (https://publicwww.com/websites/%22Start+of+Shoplift+scripts%22/) - `"Start of Shoplift scripts"` - `Kameleoon` (https://publicwww.com/websites/%22kameleoonQueue%22+%7C+%22kameleoon.io%2Fengine.js%22/) - `"kameleoonQueue" | "kameleoon.io/engine.js"` - `Monetate` (https://publicwww.com/websites/%22se.monetate.net%22/) - `"se.monetate.net"` - `Mida` (https://publicwww.com/websites/%22cdn.mida.so%22/) - `"cdn.mida.so"` - `Dynamic Yield` (https://publicwww.com/websites/%22api_dynamic.js%22/) - `"api_dynamic.js"` - `Varify.io` (https://publicwww.com/websites/%22app.varify.io%2Fvarify.js%22/) - `"app.varify.io/varify.js"` - `ABlyft` (https://publicwww.com/websites/%22cdn.ablyft.com%22/) - `"cdn.ablyft.com"` - `Omniconvert` (https://publicwww.com/websites/%22app.omniconvert.com%22/) - `"app.omniconvert.com"` - `Webtrends Optimize` (https://publicwww.com/websites/%22webtrends-optimize.com%22/) - `"webtrends-optimize.com"` Source: https://publicwww.com/docs/examples/ab-testing/ --- # Consent & cookie banners - `Complianz` (https://publicwww.com/websites/%22cmplz%22/) - `"cmplz"` - `CookieYes` (https://publicwww.com/websites/%22cookie-law-info%22+%7C+%22cdn-cookieyes.com%22/) - `"cookie-law-info" | "cdn-cookieyes.com"` - `consentmanager` (https://publicwww.com/websites/%22cdn.consentmanager.net%22/) - `"cdn.consentmanager.net"` - `Cookie Notice` (https://publicwww.com/websites/%22cookie-notice-front%22/) - `"cookie-notice-front"` - `Cookiebot` (https://publicwww.com/websites/%22consent.cookiebot.com%22/) - `"consent.cookiebot.com"` - `GDPR Cookie Compliance` (https://publicwww.com/websites/%22plugins%2Fgdpr-cookie-compliance%22+%7C+%22moove_gdpr_popup%22/) - `"plugins/gdpr-cookie-compliance" | "moove_gdpr_popup"` - `Cookie Consent by Osano` (https://publicwww.com/websites/%22cookieconsent.initialise%22+%7C+%22cookieconsent2%22/) - `"cookieconsent.initialise" | "cookieconsent2"` - `Borlabs Cookie` (https://publicwww.com/websites/%22borlabs-cookie%22/) - `"borlabs-cookie"` - `iubenda` (https://publicwww.com/websites/%22_iub.csConfiguration%22/) - `"_iub.csConfiguration"` - `OneTrust` (https://publicwww.com/websites/%22cdn.cookielaw.org%22+%7C+%22otSDKStub.js%22/) - `"cdn.cookielaw.org" | "otSDKStub.js"` - `Real Cookie Banner` (https://publicwww.com/websites/%22wp-content%2Fplugins%2Freal-cookie-banner%22/) - `"wp-content/plugins/real-cookie-banner"` - `tarteaucitron.js` (https://publicwww.com/websites/%22tarteaucitron.init%22+%7C+%22tarteaucitron.js%22/) - `"tarteaucitron.init" | "tarteaucitron.js"` - `CookieConsent` (https://publicwww.com/websites/%22CookieConsent.run%22+%7C+%22initCookieConsent%22/) - `"CookieConsent.run" | "initCookieConsent"` - `Termly` (https://publicwww.com/websites/%22app.termly.io%22/) - `"app.termly.io"` - `Usercentrics` (https://publicwww.com/websites/%22app.usercentrics.eu%22+%7C+%22web.cmp.usercentrics.eu%22/) - `"app.usercentrics.eu" | "web.cmp.usercentrics.eu"` - `Google Funding Choices` (https://publicwww.com/websites/%22fundingchoicesmessages.google.com%2Fi%22/) - `"fundingchoicesmessages.google.com/i"` - `Didomi` (https://publicwww.com/websites/%22window.didomiOnReady%22+%7C+%22sdk.privacy-center.org%22/) - `"window.didomiOnReady" | "sdk.privacy-center.org"` - `Cookie Script` (https://publicwww.com/websites/%22cdn.cookie-script.com%2Fs%22/) - `"cdn.cookie-script.com/s"` - `InMobi Choice` (https://publicwww.com/websites/%22cmp.inmobi.com%22+%7C+%22quantcast.mgr.consensu.org%22/) - `"cmp.inmobi.com" | "quantcast.mgr.consensu.org"` - `Klaro` (https://publicwww.com/websites/%22klaroConfig%22+%7C+%22klaro.js%22/) - `"klaroConfig" | "klaro.js"` - `Axeptio` (https://publicwww.com/websites/%22static.axept.io%22/) - `"static.axept.io"` - `Osano` (https://publicwww.com/websites/%22cmp.osano.com%22/) - `"cmp.osano.com"` - `Consentmo` (https://publicwww.com/websites/%22consentmo-gdpr%22/) - `"consentmo-gdpr"` - `Cookie Information` (https://publicwww.com/websites/%22CookieInformation%22/) - `"CookieInformation"` - `Pandectes` (https://publicwww.com/websites/%22pandectes-gdpr%22/) - `"pandectes-gdpr"` - `TrustArc` (https://publicwww.com/websites/%22consent.trustarc.com%22/) - `"consent.trustarc.com"` - `Sirdata` (https://publicwww.com/websites/%22cache.consentframework.com%22/) - `"cache.consentframework.com"` - `SureCookie` (https://publicwww.com/websites/%22surecookie%22/) - `"surecookie"` - `CookieFirst` (https://publicwww.com/websites/%22consent.cookiefirst.com%22/) - `"consent.cookiefirst.com"` - `CookieHub` (https://publicwww.com/websites/%22cookiehub.load%22/) - `"cookiehub.load"` - `Civic Cookie Control` (https://publicwww.com/websites/%22cc.cdn.civiccomputing.com%22/) - `"cc.cdn.civiccomputing.com"` - `Sourcepoint` (https://publicwww.com/websites/%22cdn.privacy-mgmt.com%22+%7C+%22_sp_.config%22/) - `"cdn.privacy-mgmt.com" | "_sp_.config"` - `Ketch` (https://publicwww.com/websites/%22global.ketchcdn.com%22/) - `"global.ketchcdn.com"` - `Clickio Consent` (https://publicwww.com/websites/%22clickiocmp.com%22/) - `"clickiocmp.com"` - `Securiti` (https://publicwww.com/websites/%22cdn-prod.securiti.ai%22/) - `"cdn-prod.securiti.ai"` - `TrustCommander` (https://publicwww.com/websites/%22cdn.trustcommander.net%22/) - `"cdn.trustcommander.net"` Source: https://publicwww.com/docs/examples/consent/ --- # Chat & support - `WhatsApp chat links` (https://publicwww.com/websites/%22https+wa+me%22/) - `"https wa me"` - `Joinchat` (https://publicwww.com/websites/%22creame-whatsapp-me%22+%7C+%22joinchat-button%22/) - `"creame-whatsapp-me" | "joinchat-button"` - `Tawk.to` (https://publicwww.com/websites/%22tawk_api%22/) - `"tawk_api"` - `Click to Chat` (https://publicwww.com/websites/%22ht-ctc%22/) - `"ht-ctc"` - `WP Social Chat` (https://publicwww.com/websites/%22qlwapp%22/) - `"qlwapp"` - `LiveChat` (https://publicwww.com/websites/%22cdn+livechatinc+com+tracking+js%22/) - `"cdn livechatinc com tracking js"` - `JivoChat` (https://publicwww.com/websites/%22code+jivosite+com+script+widget%22+%7C+%22code+jivosite+com+widget%22+%7C+%22code+jivo+ru+widget%22/) - `"code jivosite com script widget" | "code jivosite com widget" | "code jivo ru widget"` - `Smartsupp` (https://publicwww.com/websites/%22_smartsupp+key%22/) - `"_smartsupp key"` - `Tidio` (https://publicwww.com/websites/%22src+code+tidio+co%22/) - `"src code tidio co"` - `Zendesk Web Widget` (https://publicwww.com/websites/%22zdassets+com+ekr+snippet+js%22/) - `"zdassets com ekr snippet js"` - `Zoho SalesIQ` (https://publicwww.com/websites/%22zoho+salesiq%22/) - `"zoho salesiq"` - `Crisp` (https://publicwww.com/websites/%22crisp_website_id%22/) - `"crisp_website_id"` - `Bitrix24` (https://publicwww.com/websites/%22crm+site_button%22/) - `"crm site_button"` - `Zendesk Chat (Zopim)` (https://publicwww.com/websites/%22zopim+function%22/) - `"zopim function"` - `Udesk` (https://publicwww.com/websites/%22udesk+cn+im_client%22/) - `"udesk cn im_client"` - `53KF` (https://publicwww.com/websites/%22tb+53kf+com+code%22/) - `"tb 53kf com code"` - `Meiqia` (https://publicwww.com/websites/%22_meiqia%22/) - `"_meiqia"` - `Intercom` (https://publicwww.com/websites/%22widget+intercom+io+widget%22/) - `"widget intercom io widget"` - `Help Scout Beacon` (https://publicwww.com/websites/%22beacon-v2+helpscout+net%22+-%22functional+helpscout-beacon%22/) - `"beacon-v2 helpscout net" -"functional helpscout-beacon"` - `Chaport` (https://publicwww.com/websites/%22chaportconfig%22/) - `"chaportconfig"` - `Chatwoot` (https://publicwww.com/websites/%22chatwootsdk+run%22/) - `"chatwootsdk run"` - `Chatbase` (https://publicwww.com/websites/%22www+chatbase+co+embed+min+js%22/) - `"www chatbase co embed min js"` - `Freshchat` (https://publicwww.com/websites/%22fcwidget%22+%7C+%22wchat+freshchat+com+js+widget+js%22/) - `"fcwidget" | "wchat freshchat com js widget js"` - `LivePerson` (https://publicwww.com/websites/%22window+lptag%22/) - `"window lptag"` - `Chatra` (https://publicwww.com/websites/%22chatraid%22/) - `"chatraid"` - `Gorgias` (https://publicwww.com/websites/%22config+gorgias+chat+bundle-loader%22/) - `"config gorgias chat bundle-loader"` - `Pure Chat` (https://publicwww.com/websites/%22purechatapi%22/) - `"purechatapi"` - `Freshdesk Help Widget` (https://publicwww.com/websites/%22freshworkswidget%22/) - `"freshworkswidget"` - `Drift` (https://publicwww.com/websites/%22drift+load%22/) - `"drift load"` - `Channel Talk` (https://publicwww.com/websites/%22cdn+channel+io+plugin%22/) - `"cdn channel io plugin"` - `ManyChat` (https://publicwww.com/websites/%22widget+manychat+com%22/) - `"widget manychat com"` - `Botpress` (https://publicwww.com/websites/%22cdn+botpress+cloud+webchat%22/) - `"cdn botpress cloud webchat"` - `Olark` (https://publicwww.com/websites/%22olark+identify%22/) - `"olark identify"` - `LiveAgent` (https://publicwww.com/websites/%22liveagent+createbutton%22/) - `"liveagent createbutton"` - `Brevo Conversations` (https://publicwww.com/websites/%22conversations-widget+brevo+com%22/) - `"conversations-widget brevo com"` - `Userlike` (https://publicwww.com/websites/%22userlike-cdn-widgets%22/) - `"userlike-cdn-widgets"` - `HubSpot Chat` (https://publicwww.com/websites/%22hubspot-messages-iframe-container%22/) - `"hubspot-messages-iframe-container"` - `Dialogflow Messenger` (https://publicwww.com/websites/%22df-messenger%22/) - `"df-messenger"` - `Talk-Me` (https://publicwww.com/websites/%22lcab+talk-me+ru%22/) - `"lcab talk-me ru"` - `Re:amaze` (https://publicwww.com/websites/%22cdn+reamaze+com%22/) - `"cdn reamaze com"` - `Comm100` (https://publicwww.com/websites/%22comm100api%22/) - `"comm100api"` - `Voiceflow` (https://publicwww.com/websites/%22cdn+voiceflow+com+widget%22/) - `"cdn voiceflow com widget"` - `Ada` (https://publicwww.com/websites/%22static+ada+support+embed2+js%22/) - `"static ada support embed2 js"` - `Salesforce Embedded Messaging` (https://publicwww.com/websites/%22embeddedservice_bootstrap%22+%7C+%22embedded_svc%22/) - `"embeddedservice_bootstrap" | "embedded_svc"` - `osTicket` (https://publicwww.com/websites/%22OSTSESSID%22/) - `"OSTSESSID"` - `GetButton` (https://publicwww.com/websites/%22static+getbutton+io%22/) - `"static getbutton io"` - `Chatling` (https://publicwww.com/websites/%22chatling+ai+js+embed+js%22/) - `"chatling ai js embed js"` - `Typebot` (https://publicwww.com/websites/%22cdn+jsdelivr+net+npm+typebot+io+js%22/) - `"cdn jsdelivr net npm typebot io js"` - `Trengo` (https://publicwww.com/websites/%22static+widget+trengo+eu%22/) - `"static widget trengo eu"` - `Qiyu` (https://publicwww.com/websites/%22qiyukf+com%22/) - `"qiyukf com"` - `Genesys Cloud` (https://publicwww.com/websites/%22genesys-bootstrap%22/) - `"genesys-bootstrap"` Source: https://publicwww.com/docs/examples/chat/ --- # CAPTCHA & bot protection - `reCAPTCHA` (https://publicwww.com/websites/%22recaptcha+api+js%22/) - `"recaptcha api js"` - `Cloudflare bot detection` (https://publicwww.com/websites/%22cdn-cgi+challenge-platform+scripts+jsd+main+js%22/) - `"cdn-cgi challenge-platform scripts jsd main js"` - `reCAPTCHA v3` (https://publicwww.com/websites/%22recaptcha+api+js+render%22+-%22render+explicit%22/) - `"recaptcha api js render" -"render explicit"` - `reCAPTCHA v2 checkbox` (https://publicwww.com/websites/%22g-recaptcha+data-sitekey%22/) - `"g-recaptcha data-sitekey"` - `Cloudflare Turnstile` (https://publicwww.com/websites/%22turnstile+v0+api+js%22/) - `"turnstile v0 api js"` - `reCAPTCHA Enterprise` (https://publicwww.com/websites/%22recaptcha+enterprise+js%22/) - `"recaptcha enterprise js"` - `ALTCHA` (https://publicwww.com/websites/%22altcha+min+js%22+%7C+%22altcha-widget%22/) - `"altcha min js" | "altcha-widget"` - `hCaptcha` (https://publicwww.com/websites/%22js+hcaptcha+com%22+-%22js+hcaptcha+com+essential+hcaptcha%22/) - `"js hcaptcha com" -"js hcaptcha com essential hcaptcha"` - `CleanTalk` (https://publicwww.com/websites/%22apbct%22/) - `"apbct"` - `Akismet` (https://publicwww.com/websites/%22akismet-frontend%22+%7C+%22akismet_comment_nonce%22/) - `"akismet-frontend" | "akismet_comment_nonce"` - `Alibaba Cloud Captcha` (https://publicwww.com/websites/%22o+alicdn+com+captcha-frontend%22/) - `"o alicdn com captcha-frontend"` - `Imperva Bot Protection` (https://publicwww.com/websites/%22_incapsula_resource%22/) - `"_incapsula_resource"` - `Radware Bot Manager` (https://publicwww.com/websites/%22perfdrive+com%22/) - `"perfdrive com"` - `NetEase Yidun` (https://publicwww.com/websites/%22cstaticdun+126+net%22/) - `"cstaticdun 126 net"` - `Tencent Captcha` (https://publicwww.com/websites/%22tcaptcha+js%22+%7C+%22turing+captcha+qcloud+com%22/) - `"tcaptcha js" | "turing captcha qcloud com"` - `AWS WAF CAPTCHA` (https://publicwww.com/websites/%22sdk+awswaf+com%22/) - `"sdk awswaf com"` - `Yandex SmartCaptcha` (https://publicwww.com/websites/%22smartcaptcha+yandexcloud+net%22/) - `"smartcaptcha yandexcloud net"` - `GeeTest` (https://publicwww.com/websites/%22static+geetest+com%22+%7C+%22initgeetest4%22/) - `"static geetest com" | "initgeetest4"` - `DataDome` (https://publicwww.com/websites/%22js+datadome+co%22+%7C+%22x-datadome%22/) - `"js datadome co" | "x-datadome"` - `Securimage` (https://publicwww.com/websites/%22securimage_show%22/) - `"securimage_show"` - `Friendly Captcha` (https://publicwww.com/websites/%22frc-captcha%22+%7C+%22friendlycaptcha+sdk%22/) - `"frc-captcha" | "friendlycaptcha sdk"` - `Cap` (https://publicwww.com/websites/%22cap-widget%22/) - `"cap-widget"` - `Akamai Bot Manager` (https://publicwww.com/websites/%22set-cookie%3A+bm_sz%22/) - `"set-cookie: bm_sz"` - `HUMAN (PerimeterX)` (https://publicwww.com/websites/%22_pxappid%22+-%22px-captcha-modal%22/) - `"_pxappid" -"px-captcha-modal"` - `Kasada` (https://publicwww.com/websites/%22149e9513-01fa-4fb0-aad4-566afd725d1b%22/) - `"149e9513-01fa-4fb0-aad4-566afd725d1b"` - `BotDetect CAPTCHA` (https://publicwww.com/websites/%22botdetect+captcha%22+%7C+%22botdetectcaptcha%22/) - `"botdetect captcha" | "botdetectcaptcha"` - `Really Simple CAPTCHA` (https://publicwww.com/websites/%22really-simple-captcha%22/) - `"really-simple-captcha"` - `MTCaptcha` (https://publicwww.com/websites/%22mtcaptcha+com%22/) - `"mtcaptcha com"` Source: https://publicwww.com/docs/examples/captcha/ --- # Accessibility - `UserWay` (https://publicwww.com/websites/%22userway+org+widget%22/) - `"userway org widget"` - `One Click Accessibility` (https://publicwww.com/websites/%22pojo-a11y%22/) - `"pojo-a11y"` - `Ally by Elementor` (https://publicwww.com/websites/%22ea11y%22/) - `"ea11y"` - `AudioEye` (https://publicwww.com/websites/%22__audioeyesitehash%22/) - `"__audioeyesitehash"` - `OneTap` (https://publicwww.com/websites/%22accessibility-onetap%22/) - `"accessibility-onetap"` - `WP Accessibility` (https://publicwww.com/websites/%22plugins+wp-accessibility%22+-%22plugins+wp-accessibility-helper%22/) - `"plugins wp-accessibility" -"plugins wp-accessibility-helper"` - `accessiBe` (https://publicwww.com/websites/%22acsbjs%22/) - `"acsbjs"` - `Enable` (https://publicwww.com/websites/%22cdn+enable+co+il%22/) - `"cdn enable co il"` - `Siteimprove` (https://publicwww.com/websites/%22siteimproveanalytics+com+js%22/) - `"siteimproveanalytics com js"` - `EqualWeb` (https://publicwww.com/websites/%22cdn+equalweb+com%22+%7C+%22window+interdeal%22/) - `"cdn equalweb com" | "window interdeal"` - `Eye-Able` (https://publicwww.com/websites/%22cdn+eye-able+com%22/) - `"cdn eye-able com"` - `WP Accessibility Helper` (https://publicwww.com/websites/%22wp-accessibility-helper%22/) - `"wp-accessibility-helper"` - `ReadSpeaker` (https://publicwww.com/websites/%22readspeaker+com+script%22/) - `"readspeaker com script"` - `All in One Accessibility` (https://publicwww.com/websites/%22skynettechnologies+com+accessibility+js%22/) - `"skynettechnologies com accessibility js"` - `Monsido` (https://publicwww.com/websites/%22window+_monsido%22/) - `"window _monsido"` - `Sienna` (https://publicwww.com/websites/%22sienna-accessibility%22/) - `"sienna-accessibility"` - `Nagish` (https://publicwww.com/websites/%22nagishli%22+%7C+%22nagich+co+il%22/) - `"nagishli" | "nagich co il"` - `Level Access` (https://publicwww.com/websites/%22levelaccess+com+a%22+%7C+%22essentialaccessibility+com%22/) - `"levelaccess com a" | "essentialaccessibility com"` - `Accessibly` (https://publicwww.com/websites/%22accessibly%22+%22acc-main+js%22/) - `"accessibly" "acc-main js"` - `Recite Me` (https://publicwww.com/websites/%22api+reciteme+com+asset+js%22/) - `"api reciteme com asset js"` - `ReachDeck (BrowseAloud)` (https://publicwww.com/websites/%22browsealoud+com+plus+scripts%22/) - `"browsealoud com plus scripts"` - `Max Access` (https://publicwww.com/websites/%22oada_ma_license_url%22/) - `"oada_ma_license_url"` - `Equally AI` (https://publicwww.com/websites/%22equally-widget+min+js%22/) - `"equally-widget min js"` Source: https://publicwww.com/docs/examples/accessibility/ --- # Hosting & CDN - `Cloudflare` (https://publicwww.com/websites/%22cf-ray%22/) - `"cf-ray"` - `Fastly` (https://publicwww.com/websites/%22x-served-by%3A+cache-%22/) - `"x-served-by: cache-"` - `Google Cloud` (https://publicwww.com/websites/%22via%3A+1+1+google%22/) - `"via: 1 1 google"` - `Hostinger` (https://publicwww.com/websites/%22x-hcdn-request-id%22/) - `"x-hcdn-request-id"` - `Plesk` (https://publicwww.com/websites/%22x-powered-by%3A+plesklin%22/) - `"x-powered-by: plesklin"` - `Vercel` (https://publicwww.com/websites/%22x-vercel-cache%22/) - `"x-vercel-cache"` - `Amazon CloudFront` (https://publicwww.com/websites/%22x-amz-cf-pop%22/) - `"x-amz-cf-pop"` - `OVHcloud` (https://publicwww.com/websites/%22x-iplb-instance%22/) - `"x-iplb-instance"` - `Netlify` (https://publicwww.com/websites/%22x-nf-request-id%22/) - `"x-nf-request-id"` - `SiteGround` (https://publicwww.com/websites/%228441280b0c35cbc1147f8ba998a563a7%22/) - `"8441280b0c35cbc1147f8ba998a563a7"` - `GitHub Pages` (https://publicwww.com/websites/%22x-github-request-id%22/) - `"x-github-request-id"` - `AWS Elastic Load Balancing` (https://publicwww.com/websites/%22awsalb%22/) - `"awsalb"` - `bunny.net` (https://publicwww.com/websites/%22b-cdn+net%22+%7C+%22cdn-pullzone%22/) - `"b-cdn net" | "cdn-pullzone"` - `Amazon S3` (https://publicwww.com/websites/%22server%3A+amazons3%22/) - `"server: amazons3"` - `Bluehost / HostGator` (https://publicwww.com/websites/%22x-endurance-cache-level%22/) - `"x-endurance-cache-level"` - `WP Engine` (https://publicwww.com/websites/%22x-powered-by%3A+wp+engine%22/) - `"x-powered-by: wp engine"` - `Render` (https://publicwww.com/websites/%22rndr-id%22/) - `"rndr-id"` - `Cloudways` (https://publicwww.com/websites/%22cloudways-cache%22/) - `"cloudways-cache"` - `Microsoft Azure` (https://publicwww.com/websites/%22arraffinity%22+%7C+%22x-azure-ref%22/) - `"arraffinity" | "x-azure-ref"` - `Railway` (https://publicwww.com/websites/%22x-railway-request-id%22/) - `"x-railway-request-id"` - `Sucuri` (https://publicwww.com/websites/%22x-sucuri-id%22/) - `"x-sucuri-id"` - `Kinsta` (https://publicwww.com/websites/%22x-kinsta-cache%22/) - `"x-kinsta-cache"` - `Heroku` (https://publicwww.com/websites/%22heroku-router%22/) - `"heroku-router"` - `Apache Traffic Server` (https://publicwww.com/websites/%22server%3A+ats%22/) - `"server: ats"` - `Flywheel` (https://publicwww.com/websites/%22server%3A+flywheel%22/) - `"server: flywheel"` - `Tencent EdgeOne` (https://publicwww.com/websites/%22eo-log-uuid%22/) - `"eo-log-uuid"` - `Imperva` (https://publicwww.com/websites/%22x-iinfo%22/) - `"x-iinfo"` - `Google Cloud Storage` (https://publicwww.com/websites/%22x-guploader-uploadid%22/) - `"x-guploader-uploadid"` - `DigitalOcean App Platform` (https://publicwww.com/websites/%22x-do-app-origin%22/) - `"x-do-app-origin"` - `Fly.io` (https://publicwww.com/websites/%22fly-request-id%22/) - `"fly-request-id"` - `Pantheon` (https://publicwww.com/websites/%22x-pantheon-styx-hostname%22/) - `"x-pantheon-styx-hostname"` - `Akamai` (https://publicwww.com/websites/%22x-akamai-transformed%22+%7C+%22akamai-grn%22/) - `"x-akamai-transformed" | "akamai-grn"` - `QUIC.cloud` (https://publicwww.com/websites/%22x-qc-pop%22/) - `"x-qc-pop"` - `KeyCDN` (https://publicwww.com/websites/%22kxcdn+com%22/) - `"kxcdn com"` - `CDN77` (https://publicwww.com/websites/%22cdn77+org%22/) - `"cdn77 org"` - `F5 BIG-IP` (https://publicwww.com/websites/%22bigipserver%22/) - `"bigipserver"` - `Acquia` (https://publicwww.com/websites/%22x-ah-environment%22/) - `"x-ah-environment"` Source: https://publicwww.com/docs/examples/hosting/ --- # Servers & languages - `LiteSpeed` (https://publicwww.com/websites/%22server%3A+litespeed%22/) - `"server: litespeed"` - `OpenResty` (https://publicwww.com/websites/%22server%3A+openresty%22/) - `"server: openresty"` - `ASP.NET` (https://publicwww.com/websites/%22x-powered-by%3A+asp+net%22/) - `"x-powered-by: asp net"` - `Microsoft IIS` (https://publicwww.com/websites/%22server%3A+microsoft-iis%22/) - `"server: microsoft-iis"` - `LiteSpeed Cache` (https://publicwww.com/websites/%22x-litespeed-cache%22/) - `"x-litespeed-cache"` - `Varnish` (https://publicwww.com/websites/%22x-varnish%22/) - `"x-varnish"` - `WP Rocket` (https://publicwww.com/websites/%22wp-rocket+me%22+%7C+%22rocketlazyloadscript%22/) - `"wp-rocket me" | "rocketlazyloadscript"` - `Express` (https://publicwww.com/websites/%22x-powered-by%3A+express%22/) - `"x-powered-by: express"` - `PHP 8.3` (https://publicwww.com/websites/%22x-powered-by%3A+php+8+3%22/) - `"x-powered-by: php 8 3"` - `PHP 8.2` (https://publicwww.com/websites/%22x-powered-by%3A+php+8+2%22/) - `"x-powered-by: php 8 2"` - `PHP 8.4` (https://publicwww.com/websites/%22x-powered-by%3A+php+8+4%22/) - `"x-powered-by: php 8 4"` - `Tengine` (https://publicwww.com/websites/%22server%3A+tengine%22/) - `"server: tengine"` - `WP Fastest Cache` (https://publicwww.com/websites/%22wpfc-minified%22+%7C+%22wp+fastest+cache+file+was+created%22/) - `"wpfc-minified" | "wp fastest cache file was created"` - `WP Super Cache` (https://publicwww.com/websites/%22cached+page+generated+by+wp-super-cache%22/) - `"cached page generated by wp-super-cache"` - `Autoptimize` (https://publicwww.com/websites/%22cache+autoptimize%22/) - `"cache autoptimize"` - `W3 Total Cache` (https://publicwww.com/websites/%22optimized+by+w3+total+cache%22/) - `"optimized by w3 total cache"` - `Caddy` (https://publicwww.com/websites/%22server%3A+caddy%22/) - `"server: caddy"` - `Ruby on Rails` (https://publicwww.com/websites/%22csrf-param+content+authenticity_token%22/) - `"csrf-param content authenticity_token"` - `Laravel` (https://publicwww.com/websites/%22laravel_session%22/) - `"laravel_session"` - `PHP 8.5` (https://publicwww.com/websites/%22x-powered-by%3A+php+8+5%22/) - `"x-powered-by: php 8 5"` - `Java Servlet` (https://publicwww.com/websites/%22jsessionid%22/) - `"jsessionid"` - `Cloudflare Rocket Loader` (https://publicwww.com/websites/%22rocket-loader+min+js%22/) - `"rocket-loader min js"` - `Envoy` (https://publicwww.com/websites/%22x-envoy-upstream-service-time%22+%7C+%22server%3A+envoy%22/) - `"x-envoy-upstream-service-time" | "server: envoy"` - `Uvicorn` (https://publicwww.com/websites/%22server%3A+uvicorn%22/) - `"server: uvicorn"` - `CodeIgniter` (https://publicwww.com/websites/%22ci_session%22/) - `"ci_session"` - `SiteGround Speed Optimizer` (https://publicwww.com/websites/%22sg-cachepress%22/) - `"sg-cachepress"` - `Django` (https://publicwww.com/websites/%22set-cookie%3A+csrftoken%22/) - `"set-cookie: csrftoken"` - `Breeze` (https://publicwww.com/websites/%22breeze-prefetch%22+%7C+%22x-breeze-cache-write%22/) - `"breeze-prefetch" | "x-breeze-cache-write"` - `lighttpd` (https://publicwww.com/websites/%22server%3A+lighttpd%22/) - `"server: lighttpd"` - `Yii` (https://publicwww.com/websites/%22csrf-param+content+_csrf%22/) - `"csrf-param content _csrf"` - `Phusion Passenger` (https://publicwww.com/websites/%22x-powered-by%3A+phusion+passenger%22+%7C+%22phusion_passenger%22/) - `"x-powered-by: phusion passenger" | "phusion_passenger"` - `Adobe ColdFusion` (https://publicwww.com/websites/%22cftoken%22/) - `"cftoken"` - `Kestrel` (https://publicwww.com/websites/%22server%3A+kestrel%22/) - `"server: kestrel"` - `ThinkPHP` (https://publicwww.com/websites/%22x-powered-by%3A+thinkphp%22+%7C+%22thinkphp_show_page_trace%22/) - `"x-powered-by: thinkphp" | "thinkphp_show_page_trace"` - `Hummingbird` (https://publicwww.com/websites/%22wphb-%22/) - `"wphb-"` - `Gunicorn` (https://publicwww.com/websites/%22server%3A+gunicorn%22/) - `"server: gunicorn"` - `NitroPack` (https://publicwww.com/websites/%22generator+content+nitropack%22+-%22nitrocdn+com+essential+nitropack%22/) - `"generator content nitropack" -"nitrocdn com essential nitropack"` - `FlyingPress` (https://publicwww.com/websites/%22flying-press%22/) - `"flying-press"` - `Rack::Cache` (https://publicwww.com/websites/%22x-rack-cache%22/) - `"x-rack-cache"` - `Nextcloud` (https://publicwww.com/websites/%22app-id%3D1125420102%22/) - `"app-id=1125420102"` - `Apache Tomcat` (https://publicwww.com/websites/%22server%3A+apache-coyote%22/) - `"server: apache-coyote"` - `Nette Framework` (https://publicwww.com/websites/%22x-powered-by%3A+nette+framework%22/) - `"x-powered-by: nette framework"` - `CakePHP` (https://publicwww.com/websites/%22set-cookie%3A+cakephp%22/) - `"set-cookie: cakephp"` - `Werkzeug` (https://publicwww.com/websites/%22server%3A+werkzeug%22/) - `"server: werkzeug"` - `GitLab` (https://publicwww.com/websites/%22_gitlab_session%22/) - `"_gitlab_session"` - `BaseHTTP` (https://publicwww.com/websites/%22server%3A+basehttp%22/) - `"server: basehttp"` - `Phoenix LiveView` (https://publicwww.com/websites/%22data-phx-main%22/) - `"data-phx-main"` - `Jetty` (https://publicwww.com/websites/%22server%3A+jetty%22/) - `"server: jetty"` - `Zope` (https://publicwww.com/websites/%22server%3A+zope%22/) - `"server: zope"` - `TornadoServer` (https://publicwww.com/websites/%22server%3A+tornadoserver%22/) - `"server: tornadoserver"` - `Mono` (https://publicwww.com/websites/%22x-powered-by%3A+mono%22/) - `"x-powered-by: mono"` - `ownCloud` (https://publicwww.com/websites/%22app-id%3D543672169%22/) - `"app-id=543672169"` - `Sails.js` (https://publicwww.com/websites/%22x-powered-by%3A+sails%22/) - `"x-powered-by: sails"` - `web2py` (https://publicwww.com/websites/%22web2py+js%22/) - `"web2py js"` - [Apache](https://publicwww.com/top/apache/) - [JBoss](https://publicwww.com/top/jboss/) - [Nginx](https://publicwww.com/top/nginx/) - [PHP](https://publicwww.com/top/php/) - [Python](https://publicwww.com/top/python/) Source: https://publicwww.com/docs/examples/webtech/ --- # Library, font & image CDNs - `Google Fonts` (https://publicwww.com/websites/%22fonts.googleapis.com%2Fcss%22/) - `"fonts.googleapis.com/css"` - `cdnjs` (https://publicwww.com/websites/%22cdnjs+cloudflare+com%22/) - `"cdnjs cloudflare com"` - `jsDelivr` (https://publicwww.com/websites/%22cdn+jsdelivr+net%22/) - `"cdn jsdelivr net"` - `Google Hosted Libraries` (https://publicwww.com/websites/%22ajax+googleapis+com+ajax+libs%22/) - `"ajax googleapis com ajax libs"` - `BootstrapCDN` (https://publicwww.com/websites/%22maxcdn+bootstrapcdn+com%22/) - `"maxcdn bootstrapcdn com"` - `Adobe Fonts` (https://publicwww.com/websites/%22href%3D%5C%22https%3A%2F%2Fuse.typekit.net%22/) - `"href=\"https://use.typekit.net"` - `jQuery CDN` (https://publicwww.com/websites/%22code+jquery+com%22/) - `"code jquery com"` - `Gravatar` (https://publicwww.com/websites/%22gravatar+com+avatar%22/) - `"gravatar com avatar"` - `unpkg` (https://publicwww.com/websites/%22unpkg+com%22/) - `"unpkg com"` - `Jetpack Site Accelerator` (https://publicwww.com/websites/%22i0+wp+com%22/) - `"i0 wp com"` - `Bunny Fonts` (https://publicwww.com/websites/%22fonts.bunny.net%2Fcss%22/) - `"fonts.bunny.net/css"` - `Cloudinary` (https://publicwww.com/websites/%22res+cloudinary+com%22/) - `"res cloudinary com"` - `ImageKit` (https://publicwww.com/websites/%22ik+imagekit+io%22+-%22imagekit+io+essential+imagekit%22/) - `"ik imagekit io" -"imagekit io essential imagekit"` - `Microsoft Ajax CDN` (https://publicwww.com/websites/%22ajax+aspnetcdn+com%22/) - `"ajax aspnetcdn com"` - `imgix` (https://publicwww.com/websites/%22imgix+net%22/) - `"imgix net"` - `Staticfile CDN` (https://publicwww.com/websites/%22cdn+staticfile+org%22/) - `"cdn staticfile org"` - `BootCDN` (https://publicwww.com/websites/%22cdn+bootcdn+net%22/) - `"cdn bootcdn net"` - `Fontshare` (https://publicwww.com/websites/%22api+fontshare+com+v2+css%22/) - `"api fontshare com v2 css"` - `esm.sh` (https://publicwww.com/websites/%22esm+sh%22/) - `"esm sh"` - `Uploadcare` (https://publicwww.com/websites/%22ucarecdn+com%22/) - `"ucarecdn com"` - `Cloudflare Images` (https://publicwww.com/websites/%22imagedelivery+net%22/) - `"imagedelivery net"` - `Optimole` (https://publicwww.com/websites/%22i+optimole+com%22/) - `"i optimole com"` - `ShortPixel` (https://publicwww.com/websites/%22cdn+shortpixel+ai%22/) - `"cdn shortpixel ai"` - `Fonts.com` (https://publicwww.com/websites/%22fast+fonts+net+cssapi%22+%7C+%22fast+fonts+net+jsapi%22/) - `"fast fonts net cssapi" | "fast fonts net jsapi"` - `Statically` (https://publicwww.com/websites/%22cdn+statically+io%22/) - `"cdn statically io"` - `wsrv.nl` (https://publicwww.com/websites/%22images+weserv+nl%22+%7C+%22wsrv+nl%22/) - `"images weserv nl" | "wsrv nl"` - `Cloud.typography` (https://publicwww.com/websites/%22cloud+typography+com%22/) - `"cloud typography com"` - `Cloudimage` (https://publicwww.com/websites/%22cloudimg+io%22/) - `"cloudimg io"` - `Skypack` (https://publicwww.com/websites/%22cdn+skypack+dev%22/) - `"cdn skypack dev"` - `Sirv` (https://publicwww.com/websites/%22sirv+com%22/) - `"sirv com"` Source: https://publicwww.com/docs/examples/cdn-libs/ --- # JavaScript libraries - `jQuery Migrate` (https://publicwww.com/websites/%22jquery-migrate.min.js%22/) - `"jquery-migrate.min.js"` - `js-cookie` (https://publicwww.com/websites/%22js.cookie.js%22/) - `"js.cookie.js"` - `core-js` (https://publicwww.com/websites/%22core-js-bundle%22/) - `"core-js-bundle"` - `jQuery UI` (https://publicwww.com/websites/%22jquery-ui.min.js%22/) - `"jquery-ui.min.js"` - `Waypoints` (https://publicwww.com/websites/%22waypoints.min.js%22/) - `"waypoints.min.js"` - `jQuery Easing` (https://publicwww.com/websites/%22jquery.easing.1.3.js%22+%7C+%22jquery.easing.js%22/) - `"jquery.easing.1.3.js" | "jquery.easing.js"` - `Underscore.js` (https://publicwww.com/websites/%22underscore.min.js%22/) - `"underscore.min.js"` - `lazysizes` (https://publicwww.com/websites/%22lazysizes.min.js%22/) - `"lazysizes.min.js"` - `Superfish` (https://publicwww.com/websites/%22superfish.js%22/) - `"superfish.js"` - `MediaElement.js` (https://publicwww.com/websites/%22mediaelement-and-player.min.js%22/) - `"mediaelement-and-player.min.js"` - `Alpine.js` (https://publicwww.com/websites/%22x-cloak%22+%7C+%22alpinejs%22/) - `"x-cloak" | "alpinejs"` - `Moment.js` (https://publicwww.com/websites/%22moment.min.js%22/) - `"moment.min.js"` - `RequireJS` (https://publicwww.com/websites/%22requirejs%2Frequire%22+%7C+%22require.js%22+%7C+%22require.min.js%22/) - `"requirejs/require" | "require.js" | "require.min.js"` - `Hammer.js` (https://publicwww.com/websites/%22hammer.min.js%22/) - `"hammer.min.js"` - `Lodash` (https://publicwww.com/websites/%22lodash.min.js%22/) - `"lodash.min.js"` - `MooTools` (https://publicwww.com/websites/%22mootools-core%22+%7C+%22mootools.js%22/) - `"mootools-core" | "mootools.js"` - `Axios` (https://publicwww.com/websites/%22axios.min.js%22/) - `"axios.min.js"` - `Video.js` (https://publicwww.com/websites/%22video-js.min.css%22+%7C+%22video-js.css%22/) - `"video-js.min.css" | "video-js.css"` - `htmx` (https://publicwww.com/websites/%22htmx.min.js%22+%7C+%22hx-post%22/) - `"htmx.min.js" | "hx-post"` - `Handlebars` (https://publicwww.com/websites/%22x-handlebars-template%22+%7C+%22handlebars+js%22+%7C+%22handlebars+min+js%22/) - `"x-handlebars-template" | "handlebars js" | "handlebars min js"` - `Plyr` (https://publicwww.com/websites/%22plyr.css%22+%7C+%22plyr.min.js%22/) - `"plyr.css" | "plyr.min.js"` - `MathJax` (https://publicwww.com/websites/%22MathJax.js%22+%7C+%22tex-mml-chtml.js%22/) - `"MathJax.js" | "tex-mml-chtml.js"` - `highlight.js` (https://publicwww.com/websites/%22libs%2Fhighlight.js%22+%7C+%22hljs.initHighlightingOnLoad%22+%7C+%22highlightjs%22/) - `"libs/highlight.js" | "hljs.initHighlightingOnLoad" | "highlightjs"` - `Moment Timezone` (https://publicwww.com/websites/%22moment-timezone-with-data%22+%7C+%22moment-timezone.min.js%22/) - `"moment-timezone-with-data" | "moment-timezone.min.js"` - `Prototype` (https://publicwww.com/websites/%22js%2Fprototype.js%22+%7C+%22libs%2Fprototype%2F%22+%7C+%22prototype%2Fprototype.js%22/) - `"js/prototype.js" | "libs/prototype/" | "prototype/prototype.js"` - `Prism` (https://publicwww.com/websites/%22prism.js%22+%7C+%22prism.css%22+%7C+%22prism.min.js%22/) - `"prism.js" | "prism.css" | "prism.min.js"` - `hls.js` (https://publicwww.com/websites/%22hls.js%40%22+%7C+%22hls.min.js%22/) - `"hls.js@" | "hls.min.js"` - `Socket.IO` (https://publicwww.com/websites/%22socket.io.js%22+%7C+%22socket.io.min.js%22/) - `"socket.io.js" | "socket.io.min.js"` - `KaTeX` (https://publicwww.com/websites/%22katex.min.css%22/) - `"katex.min.css"` - `Zepto.js` (https://publicwww.com/websites/%22zepto.min.js%22+%7C+%22zepto.js%22/) - `"zepto.min.js" | "zepto.js"` - `Dojo` (https://publicwww.com/websites/%22data-dojo-config%22+%7C+%22dojo.js%22/) - `"data-dojo-config" | "dojo.js"` - `Day.js` (https://publicwww.com/websites/%22dayjs.min.js%22/) - `"dayjs.min.js"` - `Mustache` (https://publicwww.com/websites/%22mustache.min.js%22+%7C+%22mustache.js%22+-%22amp-mustache%22/) - `"mustache.min.js" | "mustache.js" -"amp-mustache"` - `Xajax` (https://publicwww.com/websites/%22xajax_core.js%22/) - `"xajax_core.js"` - `XRegExp` (https://publicwww.com/websites/%22xregexp.min.js%22+%7C+%22xregexp-all.js%22/) - `"xregexp.min.js" | "xregexp-all.js"` - `math.js` (https://publicwww.com/websites/%22mathjs%22/) - `"mathjs"` - `reveal.js` (https://publicwww.com/websites/%22Reveal.initialize%22+%7C+%22reveal.js%2Fcss%22/) - `"Reveal.initialize" | "reveal.js/css"` - [jQuery](https://publicwww.com/top/jquery/) - [Modernizr](https://publicwww.com/top/modernizr/) Source: https://publicwww.com/docs/examples/frontend/ --- # CSS frameworks, fonts & icons - `Bootstrap` (https://publicwww.com/websites/%22bootstrap.min.css%22/) - `"bootstrap.min.css"` - `Font Awesome` (https://publicwww.com/websites/%22font-awesome.min.css%22/) - `"font-awesome.min.css"` - `Lucide` (https://publicwww.com/websites/%22class%3D%5C%22lucide+lucide-%22/) - `"class=\"lucide lucide-"` - `Bootstrap Icons` (https://publicwww.com/websites/%22bootstrap-icons.css%22/) - `"bootstrap-icons.css"` - `Material Icons` (https://publicwww.com/websites/%22family%3DMaterial%2BIcons%22+%7C+%22material-symbols-outlined%22/) - `"family=Material+Icons" | "material-symbols-outlined"` - `Normalize.css` (https://publicwww.com/websites/%22normalize.css%22/) - `"normalize.css"` - `Tailwind CSS` (https://publicwww.com/websites/%22cdn.tailwindcss.com%22/) - `"cdn.tailwindcss.com"` - `Web Font Loader` (https://publicwww.com/websites/%22webfont.js%22/) - `"webfont.js"` - `Glyphicons` (https://publicwww.com/websites/%22glyphicon+glyphicon%22/) - `"glyphicon glyphicon"` - `Ionicons` (https://publicwww.com/websites/%22ionicons+min+css%22/) - `"ionicons min css"` - `UIkit` (https://publicwww.com/websites/%22uikit.min.js%22+%7C+%22uikit.js%22/) - `"uikit.min.js" | "uikit.js"` - `Radix UI` (https://publicwww.com/websites/%22data-radix-%22/) - `"data-radix-"` - `Headless UI` (https://publicwww.com/websites/%22headlessui-%22/) - `"headlessui-"` - `Foundation` (https://publicwww.com/websites/%22foundation.min.js%22+%7C+%22css%2Ffoundation.min.css%22/) - `"foundation.min.js" | "css/foundation.min.css"` - `MUI` (https://publicwww.com/websites/%22MuiButtonBase-root%22+%7C+%22MuiTypography-root%22/) - `"MuiButtonBase-root" | "MuiTypography-root"` - `Materialize` (https://publicwww.com/websites/%22materialize.min.js%22+%7C+%22materialize.css%22+%7C+%22materialize.js%22/) - `"materialize.min.js" | "materialize.css" | "materialize.js"` - `W3.CSS` (https://publicwww.com/websites/%22w3.css%22+%7C+%22w3-container%22/) - `"w3.css" | "w3-container"` - `Bulma` (https://publicwww.com/websites/%22bulma.min.css%22+%7C+%22bulma.css%22/) - `"bulma.min.css" | "bulma.css"` - `Ant Design` (https://publicwww.com/websites/%22ant-btn%22+%7C+%22ant-layout%22/) - `"ant-btn" | "ant-layout"` - `Less` (https://publicwww.com/websites/%22stylesheet%2Fless%22+%7C+%22less.min.js%22/) - `"stylesheet/less" | "less.min.js"` - `Chakra UI` (https://publicwww.com/websites/%22chakra-ui-light%22/) - `"chakra-ui-light"` - `Prefix-Free` (https://publicwww.com/websites/%22prefixfree.min.js%22/) - `"prefixfree.min.js"` - `Semantic UI` (https://publicwww.com/websites/%22semantic.min.css%22+%7C+%22semantic-ui%22/) - `"semantic.min.css" | "semantic-ui"` - `Flowbite` (https://publicwww.com/websites/%22flowbite.min.js%22+%7C+%22libs%2Fflowbite%22/) - `"flowbite.min.js" | "libs/flowbite"` - `Pure.css` (https://publicwww.com/websites/%22pure-min.css%22+%7C+%22grids-responsive-min.css%22/) - `"pure-min.css" | "grids-responsive-min.css"` - `Vuetify` (https://publicwww.com/websites/%22v-application%22/) - `"v-application"` - `Mantine` (https://publicwww.com/websites/%22mantine-color-scheme%22/) - `"mantine-color-scheme"` - `Pico CSS` (https://publicwww.com/websites/%22pico.min.css%22/) - `"pico.min.css"` - `daisyUI` (https://publicwww.com/websites/%22daisyui%22/) - `"daisyui"` - `Kendo UI` (https://publicwww.com/websites/%22kendo.all.min.js%22+%7C+%22kendo.common.min.css%22/) - `"kendo.all.min.js" | "kendo.common.min.css"` - `Preline UI` (https://publicwww.com/websites/%22%40preline%22/) - `"@preline"` - `DevExtreme` (https://publicwww.com/websites/%22dx.light.css%22+%7C+%22dx.all.js%22/) - `"dx.light.css" | "dx.all.js"` - `Fomantic-UI` (https://publicwww.com/websites/%22fomantic%22/) - `"fomantic"` - `EQCSS` (https://publicwww.com/websites/%22data-eqcss%22+%7C+%22EQCSS-polyfills%22+%7C+%22EQCSS.js%22+%7C+%22EQCSS.min.js%22/) - `"data-eqcss" | "EQCSS-polyfills" | "EQCSS.js" | "EQCSS.min.js"` Source: https://publicwww.com/docs/examples/css/ --- # Sliders & UI components - `Swiper` (https://publicwww.com/websites/%22swiper.min.css%22/) - `"swiper.min.css"` - `imagesLoaded` (https://publicwww.com/websites/%22imagesloaded.min.js%22/) - `"imagesloaded.min.js"` - `OWL Carousel` (https://publicwww.com/websites/%22owl.carousel.min.js%22/) - `"owl.carousel.min.js"` - `Slick` (https://publicwww.com/websites/%22slick.min.js%22/) - `"slick.min.js"` - `Magnific Popup` (https://publicwww.com/websites/%22magnific-popup.min.js%22/) - `"magnific-popup.min.js"` - `Fancybox` (https://publicwww.com/websites/%22jquery.fancybox.min.css%22/) - `"jquery.fancybox.min.css"` - `Popper` (https://publicwww.com/websites/%22popper.min.js%22/) - `"popper.min.js"` - `Isotope` (https://publicwww.com/websites/%22isotope.pkgd.min.js%22/) - `"isotope.pkgd.min.js"` - `Select2` (https://publicwww.com/websites/%22select2.css%22+%7C+%22select2.min.css%22/) - `"select2.css" | "select2.min.css"` - `jQuery Validation` (https://publicwww.com/websites/%22jquery.validate.min.js%22/) - `"jquery.validate.min.js"` - `SweetAlert2` (https://publicwww.com/websites/%22sweetalert2%22/) - `"sweetalert2"` - `intl-tel-input` (https://publicwww.com/websites/%22intlTelInput.css%22+%7C+%22intlTelInput.min.css%22/) - `"intlTelInput.css" | "intlTelInput.min.css"` - `Splide` (https://publicwww.com/websites/%22splide__track%22+%7C+%22splide.min.css%22/) - `"splide__track" | "splide.min.css"` - `PhotoSwipe` (https://publicwww.com/websites/%22photoswipe.css%22+%7C+%22photoswipe.min.js%22/) - `"photoswipe.css" | "photoswipe.min.js"` - `Flickity` (https://publicwww.com/websites/%22flickity.pkgd.min.js%22/) - `"flickity.pkgd.min.js"` - `Masonry` (https://publicwww.com/websites/%22masonry.pkgd.min.js%22/) - `"masonry.pkgd.min.js"` - `flatpickr` (https://publicwww.com/websites/%22flatpickr.min.css%22+%7C+%22flatpickr.min.js%22/) - `"flatpickr.min.css" | "flatpickr.min.js"` - `toastr` (https://publicwww.com/websites/%22toastr.min.js%22+%7C+%22toastr.min.css%22/) - `"toastr.min.js" | "toastr.min.css"` - `DataTables` (https://publicwww.com/websites/%22datatables.min.js%22+%7C+%22cdn.datatables.net%22+%7C+%22datatables.js%22/) - `"datatables.min.js" | "cdn.datatables.net" | "datatables.js"` - `lightGallery` (https://publicwww.com/websites/%22lightgallery.min.css%22+%7C+%22lightgallery.min.js%22/) - `"lightgallery.min.css" | "lightgallery.min.js"` - `GLightbox` (https://publicwww.com/websites/%22glightbox.min.css%22+%7C+%22glightbox.min.js%22/) - `"glightbox.min.css" | "glightbox.min.js"` - `Glide.js` (https://publicwww.com/websites/%22glide__track%22/) - `"glide__track"` - `fullPage.js` (https://publicwww.com/websites/%22jquery.fullpage%22+%7C+%22fullpage.min.js%22/) - `"jquery.fullpage" | "fullpage.min.js"` - `Lightbox` (https://publicwww.com/websites/%22js%2Flightbox.min.js%22+%7C+%22css%2Flightbox.min.css%22/) - `"js/lightbox.min.js" | "css/lightbox.min.css"` - `Inputmask` (https://publicwww.com/websites/%22inputmask.min.js%22+%7C+%22jquery.inputmask.bundle%22+%7C+%22jquery.inputmask.js%22/) - `"inputmask.min.js" | "jquery.inputmask.bundle" | "jquery.inputmask.js"` - `Tiny Slider` (https://publicwww.com/websites/%22tiny-slider.css%22+%7C+%22tns-outer%22/) - `"tiny-slider.css" | "tns-outer"` - `SweetAlert` (https://publicwww.com/websites/%22sweetalert.min.js%22+%7C+%22sweetalert.css%22/) - `"sweetalert.min.js" | "sweetalert.css"` - `noUiSlider` (https://publicwww.com/websites/%22nouislider.min.js%22+%7C+%22nouislider.min.css%22+%7C+%22nouislider.js%22/) - `"nouislider.min.js" | "nouislider.min.css" | "nouislider.js"` - `spin.js` (https://publicwww.com/websites/%22spin.min.js%22+%7C+%22spin.js%22/) - `"spin.min.js" | "spin.js"` - `TinyMCE` (https://publicwww.com/websites/%22tinymce.min.js%22/) - `"tinymce.min.js"` - `jQuery Mask Plugin` (https://publicwww.com/websites/%22jquery.mask.min.js%22+%7C+%22jquery.mask.js%22/) - `"jquery.mask.min.js" | "jquery.mask.js"` - `CKEditor` (https://publicwww.com/websites/%22ckeditor.js%22+%7C+%22ckeditor5.css%22/) - `"ckeditor.js" | "ckeditor5.css"` - `Tippy.js` (https://publicwww.com/websites/%22tippy-bundle.umd.min.js%22+%7C+%22tippy.umd.min.js%22+%7C+%22libs%2Ftippy.js%22/) - `"tippy-bundle.umd.min.js" | "tippy.umd.min.js" | "libs/tippy.js"` - `Choices.js` (https://publicwww.com/websites/%22choices.min.css%22/) - `"choices.min.css"` - `Supersized` (https://publicwww.com/websites/%22supersized.3%22+%7C+%22supersized.css%22/) - `"supersized.3" | "supersized.css"` - `Slimbox` (https://publicwww.com/websites/%22slimbox2.js%22+%7C+%22slimbox2.css%22+%7C+%22slimbox.js%22/) - `"slimbox2.js" | "slimbox2.css" | "slimbox.js"` - `Quill` (https://publicwww.com/websites/%22quill.snow.css%22+%7C+%22quill.min.js%22/) - `"quill.snow.css" | "quill.min.js"` - `Keen Slider` (https://publicwww.com/websites/%22keen-slider%22/) - `"keen-slider"` - `SortableJS` (https://publicwww.com/websites/%22sortablejs%22+%7C+%22libs%2FSortable%2F%22/) - `"sortablejs" | "libs/Sortable/"` - `List.js` (https://publicwww.com/websites/%22listjs%22+%7C+%22libs%2Flist.js%22/) - `"listjs" | "libs/list.js"` Source: https://publicwww.com/docs/examples/ui/ --- # Animation, charts & maps - `Animate.css` (https://publicwww.com/websites/%22animate.css%22/) - `"animate.css"` - `WOW.js` (https://publicwww.com/websites/%22wow.min.js%22/) - `"wow.min.js"` - `AOS` (https://publicwww.com/websites/%22aos.css%22/) - `"aos.css"` - `GSAP` (https://publicwww.com/websites/%22gsap.min.js%22+%7C+%22TweenMax.min.js%22/) - `"gsap.min.js" | "TweenMax.min.js"` - `particles.js` (https://publicwww.com/websites/%22particles.js%22+%7C+%22particles.min.js%22/) - `"particles.js" | "particles.min.js"` - `Jarallax` (https://publicwww.com/websites/%22jarallax.js%22+%7C+%22jarallax.min.js%22/) - `"jarallax.js" | "jarallax.min.js"` - `Leaflet` (https://publicwww.com/websites/%22leaflet.css%22/) - `"leaflet.css"` - `Typed.js` (https://publicwww.com/websites/%22typed.js%40%22+%7C+%22typed.min.js%22/) - `"typed.js@" | "typed.min.js"` - `Anime.js` (https://publicwww.com/websites/%22anime.min.js%22/) - `"anime.min.js"` - `Chart.js` (https://publicwww.com/websites/%22chart.min.js%22+%7C+%22npm%2Fchart.js%22/) - `"chart.min.js" | "npm/chart.js"` - `Lenis` (https://publicwww.com/websites/%22lenis.min.js%22+%7C+%22lenis-smooth%22/) - `"lenis.min.js" | "lenis-smooth"` - `Lottie` (https://publicwww.com/websites/%22lottie-player%22+%7C+%22lottie.min.js%22/) - `"lottie-player" | "lottie.min.js"` - `ScrollReveal` (https://publicwww.com/websites/%22scrollreveal.min.js%22+%7C+%22scrollreveal.js%22/) - `"scrollreveal.min.js" | "scrollreveal.js"` - `three.js` (https://publicwww.com/websites/%22three.min.js%22+%7C+%22libs%2Fthree.js%22/) - `"three.min.js" | "libs/three.js"` - `Mapbox GL JS` (https://publicwww.com/websites/%22mapbox-gl.js%22/) - `"mapbox-gl.js"` - `Rellax` (https://publicwww.com/websites/%22rellax.min.js%22+%7C+%22rellax.js%22/) - `"rellax.min.js" | "rellax.js"` - `Raphaël` (https://publicwww.com/websites/%22raphael.min.js%22+%7C+%22raphael.js%22/) - `"raphael.min.js" | "raphael.js"` - `Apache ECharts` (https://publicwww.com/websites/%22echarts.min.js%22/) - `"echarts.min.js"` - `Highcharts` (https://publicwww.com/websites/%22highcharts.js%22+%7C+%22code.highcharts.com%22/) - `"highcharts.js" | "code.highcharts.com"` - `D3` (https://publicwww.com/websites/%22d3.min.js%22+%7C+%22d3js.org%2Fd3%22+%7C+%22d3.v3.min.js%22/) - `"d3.min.js" | "d3js.org/d3" | "d3.v3.min.js"` - `Google Charts` (https://publicwww.com/websites/%22gstatic.com%2Fcharts%2Floader.js%22/) - `"gstatic.com/charts/loader.js"` - `Snap.svg` (https://publicwww.com/websites/%22snap.svg-min.js%22/) - `"snap.svg-min.js"` - `ApexCharts` (https://publicwww.com/websites/%22apexcharts.min.js%22+%7C+%22npm%2Fapexcharts%22+%7C+%22apexcharts.js%22/) - `"apexcharts.min.js" | "npm/apexcharts" | "apexcharts.js"` - `OpenLayers` (https://publicwww.com/websites/%22OpenLayers.js%22+%7C+%22css%2Fol.css%22+%7C+%22npm%2Fol%40%22/) - `"OpenLayers.js" | "css/ol.css" | "npm/ol@"` - `Locomotive Scroll` (https://publicwww.com/websites/%22locomotive-scroll%22/) - `"locomotive-scroll"` - `Barba.js` (https://publicwww.com/websites/%22barba.min.js%22+%7C+%22%40barba%2Fcore%22/) - `"barba.min.js" | "@barba/core"` - `amCharts` (https://publicwww.com/websites/%22cdn.amcharts.com%2Flib%22+%7C+%22amcharts.js%22/) - `"cdn.amcharts.com/lib" | "amcharts.js"` - `Flot` (https://publicwww.com/websites/%22jquery.flot.js%22+%7C+%22jquery.flot.min.js%22/) - `"jquery.flot.js" | "jquery.flot.min.js"` - `jqPlot` (https://publicwww.com/websites/%22jquery.jqplot.min%22+%7C+%22jquery.jqplot.css%22/) - `"jquery.jqplot.min" | "jquery.jqplot.css"` - `vis.js` (https://publicwww.com/websites/%22vis-network.min.js%22+%7C+%22vis.min.js%22+%7C+%22vis-timeline-graph2d.min.js%22/) - `"vis-network.min.js" | "vis.min.js" | "vis-timeline-graph2d.min.js"` Source: https://publicwww.com/docs/examples/charts/ --- # JS frameworks - `Next.js` (https://publicwww.com/websites/%22%2F_next%2Fstatic%2F%22/) - `"/_next/static/"` - `React` (https://publicwww.com/websites/%22You+need+to+enable+JavaScript+to+run+this+app%22+%7C+%22react.min.js%22/) - `"You need to enable JavaScript to run this app" | "react.min.js"` - `Nuxt` (https://publicwww.com/websites/%22id%3D%5C%22__nuxt%22/) - `"id=\"__nuxt"` - `Vue.js` (https://publicwww.com/websites/%22doesn%27t+work+properly+without+JavaScript+enabled%22+%7C+%22vue.min.js%22+%7C+%22v-cloak%22+%7C+%22data-v-app%22/) - `"doesn't work properly without JavaScript enabled" | "vue.min.js" | "v-cloak" | "data-v-app"` - `Svelte` (https://publicwww.com/websites/%22data-sveltekit-preload-data%22/) - `"data-sveltekit-preload-data"` - `Hotwire Turbo` (https://publicwww.com/websites/%22data-turbo-track%22/) - `"data-turbo-track"` - `Angular` (https://publicwww.com/websites/%22_ngcontent-%22/) - `"_ngcontent-"` - `Backbone.js` (https://publicwww.com/websites/%22backbone.min.js%22/) - `"backbone.min.js"` - `Inertia` (https://publicwww.com/websites/%22X-Inertia%22/) - `"X-Inertia"` - `Knockout` (https://publicwww.com/websites/%22libs%2Fknockout%22+%7C+%22knockout-3.5%22/) - `"libs/knockout" | "knockout-3.5"` - `Livewire` (https://publicwww.com/websites/%22wire%3Aid%22+%7C+%22livewire.js%22/) - `"wire:id" | "livewire.js"` - `Stimulus` (https://publicwww.com/websites/%22%40hotwired%2Fstimulus%22/) - `"@hotwired/stimulus"` - `React Router` (https://publicwww.com/websites/%22__reactRouterContext%22/) - `"__reactRouterContext"` - `Blazor` (https://publicwww.com/websites/%22blazor.web.js%22+%7C+%22blazor.server.js%22+%7C+%22blazor.webassembly.js%22/) - `"blazor.web.js" | "blazor.server.js" | "blazor.webassembly.js"` - `Lit` (https://publicwww.com/websites/%22%40lit%2Freactive-element%22/) - `"@lit/reactive-element"` - `Remix` (https://publicwww.com/websites/%22__remixContext%22/) - `"__remixContext"` - `Ember.js` (https://publicwww.com/websites/%22class%3D%5C%22ember-view%22+%7C+%22EmberENV%22/) - `"class=\"ember-view" | "EmberENV"` - `Qwik` (https://publicwww.com/websites/%22q%3Acontainer%3D%5C%22paused%5C%22%22/) - `"q:container=\"paused\""` - `Ionic` (https://publicwww.com/websites/%22ion-app%22+%7C+%22ionic.bundle%22/) - `"ion-app" | "ionic.bundle"` - `Ext JS` (https://publicwww.com/websites/%22ext-all.js%22/) - `"ext-all.js"` - `Marionette.js` (https://publicwww.com/websites/%22backbone.marionette.min.js%22/) - `"backbone.marionette.min.js"` - `GWT` (https://publicwww.com/websites/%22nocache.js%22/) - `"nocache.js"` - `Preact` (https://publicwww.com/websites/%22data-preact-island-id%22+%7C+%22preact.min.js%22+%7C+%22npm%2Fpreact%22/) - `"data-preact-island-id" | "preact.min.js" | "npm/preact"` - `Meteor` (https://publicwww.com/websites/%22__meteor-css__%22/) - `"__meteor-css__"` - `SolidJS` (https://publicwww.com/websites/%22_%24HY%22/) - `"_$HY"` - `Vaadin` (https://publicwww.com/websites/%22VAADIN%2Fbuild%22+%7C+%22VAADIN%2Fthemes%22/) - `"VAADIN/build" | "VAADIN/themes"` - `Aurelia` (https://publicwww.com/websites/%22aurelia-app%22/) - `"aurelia-app"` Source: https://publicwww.com/docs/examples/frameworks/ --- # Widgets - `YouTube` (https://publicwww.com/websites/%22youtube.com%2Fembed%22/) - `"youtube.com/embed"` - `Facebook` (https://publicwww.com/websites/%22fb-root%22/) - `"fb-root"` - `Google Maps` (https://publicwww.com/websites/%22google.com%2Fmaps%2Fembed%22/) - `"google.com/maps/embed"` - `X (Twitter)` (https://publicwww.com/websites/%22platform.twitter.com%2Fwidgets.js%22+%7C+%22twitter-tweet%22/) - `"platform.twitter.com/widgets.js" | "twitter-tweet"` - `Smash Balloon Instagram Feed` (https://publicwww.com/websites/%22sbi_styles%22+%7C+%22sb_instagram%22/) - `"sbi_styles" | "sb_instagram"` - `Vimeo` (https://publicwww.com/websites/%22player.vimeo.com%2Fvideo%22+%7C+%22player.vimeo.com%2Fapi%2Fplayer.js%22/) - `"player.vimeo.com/video" | "player.vimeo.com/api/player.js"` - `GTranslate` (https://publicwww.com/websites/%22gtranslate_wrapper%22+%7C+%22cdn.gtranslate.net%22/) - `"gtranslate_wrapper" | "cdn.gtranslate.net"` - `Google Translate` (https://publicwww.com/websites/%22translate.google.com%2Ftranslate_a%2Felement.js%22/) - `"translate.google.com/translate_a/element.js"` - `AddToAny` (https://publicwww.com/websites/%22addtoany.com%2Fmenu%2Fpage.js%22+%7C+%22a2a_kit%22/) - `"addtoany.com/menu/page.js" | "a2a_kit"` - `Elfsight` (https://publicwww.com/websites/%22elfsight-app-%22/) - `"elfsight-app-"` - `ShareThis` (https://publicwww.com/websites/%22platform-api.sharethis.com%22+%7C+%22sharethis.com%2Fbutton%22/) - `"platform-api.sharethis.com" | "sharethis.com/button"` - `Yandex Maps` (https://publicwww.com/websites/%22api-maps.yandex.ru%2F2.1%22+%7C+%22api-maps.yandex.ru%2Fservices%2Fconstructor%22/) - `"api-maps.yandex.ru/2.1" | "api-maps.yandex.ru/services/constructor"` - `Instagram` (https://publicwww.com/websites/%22instagram-media%22+%7C+%22instagram.com%2Fembed.js%22/) - `"instagram-media" | "instagram.com/embed.js"` - `Pinterest` (https://publicwww.com/websites/%22assets.pinterest.com%2Fjs%2Fpinit.js%22+%7C+%22data-pin-do%22/) - `"assets.pinterest.com/js/pinit.js" | "data-pin-do"` - `Spotify` (https://publicwww.com/websites/%22open.spotify.com%2Fembed%2F%22/) - `"open.spotify.com/embed/"` - `Embedly` (https://publicwww.com/websites/%22cdn.embedly.com%2Fwidgets%22/) - `"cdn.embedly.com/widgets"` - `Calendly` (https://publicwww.com/websites/%22assets.calendly.com%2Fassets%2Fexternal%2Fwidget.js%22+%7C+%22calendly-inline-widget%22/) - `"assets.calendly.com/assets/external/widget.js" | "calendly-inline-widget"` - `Jotform` (https://publicwww.com/websites/%22src%3D%5C%22https%3A%2F%2Fform.jotform.com%22/) - `"src=\"https://form.jotform.com"` - `Google Calendar` (https://publicwww.com/websites/%22calendar.google.com%2Fcalendar%2Fembed%22/) - `"calendar.google.com/calendar/embed"` - `Wistia` (https://publicwww.com/websites/%22fast.wistia.com%2Fassets%2Fexternal%2FE-v1.js%22+%7C+%22wistia_embed%22+%7C+%22fast.wistia.com%2Fembed%22/) - `"fast.wistia.com/assets/external/E-v1.js" | "wistia_embed" | "fast.wistia.com/embed"` - `Disqus` (https://publicwww.com/websites/%22disqus.com%2Fembed.js%22+%7C+%22disqus_shortname%22+%7C+%22disqus.com%2Fcount.js%22/) - `"disqus.com/embed.js" | "disqus_shortname" | "disqus.com/count.js"` - `POWR` (https://publicwww.com/websites/%22powr.io%2Fpowr.js%22/) - `"powr.io/powr.js"` - `SoundCloud` (https://publicwww.com/websites/%22w.soundcloud.com%2Fplayer%2F%3Furl%22/) - `"w.soundcloud.com/player/?url"` - `Acuity Scheduling` (https://publicwww.com/websites/%22acuityscheduling.com%2Fschedule.php%22+%7C+%22embed.acuityscheduling.com%2Fjs%2Fembed.js%22/) - `"acuityscheduling.com/schedule.php" | "embed.acuityscheduling.com/js/embed.js"` - `LinkedIn` (https://publicwww.com/websites/%22platform.linkedin.com%2Fin.js%22/) - `"platform.linkedin.com/in.js"` - `TikTok` (https://publicwww.com/websites/%22tiktok-embed%22/) - `"tiktok-embed"` - `JW Player` (https://publicwww.com/websites/%22jwplayer.js%22/) - `"jwplayer.js"` - `Matterport` (https://publicwww.com/websites/%22my.matterport.com%2Fshow%22/) - `"my.matterport.com/show"` - `Weglot` (https://publicwww.com/websites/%22cdn.weglot.com%2Fweglot.min.js%22/) - `"cdn.weglot.com/weglot.min.js"` - `OpenStreetMap` (https://publicwww.com/websites/%22src%3D%5C%22https%3A%2F%2Fwww.openstreetmap.org%2Fexport%2Fembed.html%22/) - `"src=\"https://www.openstreetmap.org/export/embed.html"` - `Google Forms` (https://publicwww.com/websites/%22viewform%3Fembedded%3Dtrue%22/) - `"viewform?embedded=true"` - `LightWidget` (https://publicwww.com/websites/%22lightwidget.js%22/) - `"lightwidget.js"` - `WeatherWidget.io` (https://publicwww.com/websites/%22weatherwidget-io%22/) - `"weatherwidget-io"` - `Typeform` (https://publicwww.com/websites/%22form.typeform.com%2Fto%2F%22+%7C+%22embed.typeform.com%2Fnext%2Fembed.js%22/) - `"form.typeform.com/to/" | "embed.typeform.com/next/embed.js"` - `Tally` (https://publicwww.com/websites/%22tally.so%2Fwidgets%2Fembed.js%22+%7C+%22tally.so%2Fembed%22/) - `"tally.so/widgets/embed.js" | "tally.so/embed"` - `Shareaholic` (https://publicwww.com/websites/%22shareaholic.js%22/) - `"shareaholic.js"` - `FareHarbor` (https://publicwww.com/websites/%22fareharbor.com%2Fembeds%22/) - `"fareharbor.com/embeds"` - `Bandcamp` (https://publicwww.com/websites/%22bandcamp.com%2FEmbeddedPlayer%22/) - `"bandcamp.com/EmbeddedPlayer"` - `Common Ninja` (https://publicwww.com/websites/%22commonninja.js%22/) - `"commonninja.js"` - `Iframely` (https://publicwww.com/websites/%22cdn.iframe.ly%2Fembed.js%22/) - `"cdn.iframe.ly/embed.js"` - `Buy Me a Coffee` (https://publicwww.com/websites/%22cdnjs.buymeacoffee.com%22+%7C+%22bmc-button%22/) - `"cdnjs.buymeacoffee.com" | "bmc-button"` - `Juicer` (https://publicwww.com/websites/%22juicer.io%2Fembed%22+%7C+%22juicer-feed%22+%7C+%22juicer.io%2Fapi%2Ffeeds%22/) - `"juicer.io/embed" | "juicer-feed" | "juicer.io/api/feeds"` - `SociableKIT` (https://publicwww.com/websites/%22widgets.sociablekit.com%22/) - `"widgets.sociablekit.com"` - `Cal.com` (https://publicwww.com/websites/%22app.cal.com%2Fembed%2Fembed.js%22/) - `"app.cal.com/embed/embed.js"` - `Twitch` (https://publicwww.com/websites/%22player.twitch.tv%2F%3Fchannel%22+%7C+%22embed.twitch.tv%2Fembed%2Fv1.js%22+%7C+%22Twitch.Embed%22/) - `"player.twitch.tv/?channel" | "embed.twitch.tv/embed/v1.js" | "Twitch.Embed"` - `EmbedSocial` (https://publicwww.com/websites/%22embedsocial.com%22/) - `"embedsocial.com"` - `Brightcove` (https://publicwww.com/websites/%22src%3D%5C%22https%3A%2F%2Fplayers.brightcove.net%22/) - `"src=\"https://players.brightcove.net"` - `Dailymotion` (https://publicwww.com/websites/%22dailymotion.com%2Fembed%2Fvideo%22+%7C+%22geo.dailymotion.com%2Fplayer%22/) - `"dailymotion.com/embed/video" | "geo.dailymotion.com/player"` - `Curator.io` (https://publicwww.com/websites/%22cdn.curator.io%22+%7C+%22curator-feed%22/) - `"cdn.curator.io" | "curator-feed"` - `Issuu` (https://publicwww.com/websites/%22e.issuu.com%2Fembed.html%22+%7C+%22issuu.com%2Fembed.js%22/) - `"e.issuu.com/embed.html" | "issuu.com/embed.js"` - `OpenTable` (https://publicwww.com/websites/%22opentable.com%2Fwidget%2Freservation%2Floader%22/) - `"opentable.com/widget/reservation/loader"` - `Apple Music` (https://publicwww.com/websites/%22src%3D%5C%22https%3A%2F%2Fembed.music.apple.com%22/) - `"src=\"https://embed.music.apple.com"` - `Loom` (https://publicwww.com/websites/%22src%3D%5C%22https%3A%2F%2Fwww.loom.com%2Fembed%22/) - `"src=\"https://www.loom.com/embed"` - `Buzzsprout` (https://publicwww.com/websites/%22buzzsprout-large-player%22+%7C+%22buzzsprout-player%22/) - `"buzzsprout-large-player" | "buzzsprout-player"` - `Apple Podcasts` (https://publicwww.com/websites/%22src%3D%5C%22https%3A%2F%2Fembed.podcasts.apple.com%22/) - `"src=\"https://embed.podcasts.apple.com"` - `GIPHY` (https://publicwww.com/websites/%22src%3D%5C%22https%3A%2F%2Fgiphy.com%2Fembed%22/) - `"src=\"https://giphy.com/embed"` - `Vidyard` (https://publicwww.com/websites/%22play.vidyard.com%2Fembed%22+%7C+%22vidyard-player-embed%22/) - `"play.vidyard.com/embed" | "vidyard-player-embed"` - `Rumble` (https://publicwww.com/websites/%22src%3D%5C%22https%3A%2F%2Frumble.com%2Fembed%22/) - `"src=\"https://rumble.com/embed"` - `Bluesky` (https://publicwww.com/websites/%22bluesky-embed%22+%7C+%22embed.bsky.app%2Fstatic%2Fembed.js%22/) - `"bluesky-embed" | "embed.bsky.app/static/embed.js"` - `giscus` (https://publicwww.com/websites/%22giscus.app%2Fclient.js%22/) - `"giscus.app/client.js"` Source: https://publicwww.com/docs/examples/widgets/ --- # CMS - [WordPress](https://publicwww.com/top/wordpress/) - `Joomla` (https://publicwww.com/websites/%22%2Fmedia%2Fsystem%2Fjs%2F%22+%7C+%22generator%5C%22+content%3D%5C%22Joomla%22/) - `"/media/system/js/" | "generator\" content=\"Joomla"` - `Drupal` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Drupal%22+%7C+%22%2Fsites%2Fall%2Fthemes%2F%22/) - `"generator\" content=\"Drupal" | "/sites/all/themes/"` - `TYPO3` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22TYPO3%22/) - `"generator\" content=\"TYPO3"` - `1C-Bitrix` (https://publicwww.com/websites/%22%2Fbitrix%2Fjs%2F%22+%7C+%22X-Powered-CMS%3A+Bitrix+Site+Manager%22/) - `"/bitrix/js/" | "X-Powered-CMS: Bitrix Site Manager"` - `Adobe Experience Manager` (https://publicwww.com/websites/%22%2Fetc.clientlibs%2F%22/) - `"/etc.clientlibs/"` - `Z-BlogPHP` (https://publicwww.com/websites/%22zb_system%2Fscript%2Fzblogphp.js%22/) - `"zb_system/script/zblogphp.js"` - `Contao` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Contao%22/) - `"generator\" content=\"Contao"` - `Gnuboard` (https://publicwww.com/websites/%22g5_url%22/) - `"g5_url"` - `DedeCMS` (https://publicwww.com/websites/%22%2Ftemplets%2Fdefault%2F%22/) - `"/templets/default/"` - `MODX` (https://publicwww.com/websites/%22assets%2Fcomponents%2Fajaxform%22+%7C+%22assets%2Fcomponents%2Fminishop2%22+%7C+%22assets%2Fcomponents%2Fmodxminify%22/) - `"assets/components/ajaxform" | "assets/components/minishop2" | "assets/components/modxminify"` - `Moodle` (https://publicwww.com/websites/%22%2Ftheme%2Fyui_combo.php%22/) - `"/theme/yui_combo.php"` - `DNN (DotNetNuke)` (https://publicwww.com/websites/%22%2FDesktopModules%2F%22/) - `"/DesktopModules/"` - `Craft CMS` (https://publicwww.com/websites/%22X-Powered-By%3A+Craft+CMS%22+%7C+%22CRAFT_CSRF_TOKEN%22/) - `"X-Powered-By: Craft CMS" | "CRAFT_CSRF_TOKEN"` - `October CMS` (https://publicwww.com/websites/%22Set-Cookie%3A+october_session%22/) - `"Set-Cookie: october_session"` - `DataLife Engine` (https://publicwww.com/websites/%22var+dle_root%22/) - `"var dle_root"` - `Concrete CMS` (https://publicwww.com/websites/%22CCM_DISPATCHER_FILENAME%22/) - `"CCM_DISPATCHER_FILENAME"` - `ProcessWire` (https://publicwww.com/websites/%22%2Fsite%2Fassets%2Ffiles%2F%22/) - `"/site/assets/files/"` - `Discuz!` (https://publicwww.com/websites/%22discuz_uid%22/) - `"discuz_uid"` - `Open Journal Systems` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Open+Journal+Systems%22/) - `"generator\" content=\"Open Journal Systems"` - `Silverstripe CMS` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22SilverStripe%22+%7C+%22%2F_resources%2Fthemes%2F%22/) - `"generator\" content=\"SilverStripe" | "/_resources/themes/"` - `Grav` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22GravCMS%22/) - `"generator\" content=\"GravCMS"` - `MetInfo` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22MetInfo%22/) - `"generator\" content=\"MetInfo"` - `Umbraco` (https://publicwww.com/websites/%22UmbracoForms%22+%7C+%22%2Fumbraco%2Fsurface%2F%22+%7C+%22umbraco-forms%22+%7C+%22%2Fumbraco%2Fapi%2F%22/) - `"UmbracoForms" | "/umbraco/surface/" | "umbraco-forms" | "/umbraco/api/"` - `Liferay` (https://publicwww.com/websites/%22Liferay.ThemeDisplay%22/) - `"Liferay.ThemeDisplay"` - `MediaWiki` (https://publicwww.com/websites/%22wgPageName%22/) - `"wgPageName"` - `DokuWiki` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22DokuWiki%22/) - `"generator\" content=\"DokuWiki"` - `phpBB` (https://publicwww.com/websites/%22styles%2Fprosilver%2F%22+%7C+%22Powered+by+phpBB%22/) - `"styles/prosilver/" | "Powered by phpBB"` - `SPIP` (https://publicwww.com/websites/%22Composed-By%3A+SPIP%22/) - `"Composed-By: SPIP"` - `Statamic` (https://publicwww.com/websites/%22X-Powered-By%3A+Statamic%22/) - `"X-Powered-By: Statamic"` - `Kentico` (https://publicwww.com/websites/%22CMSPages%2FGetResource.ashx%22/) - `"CMSPages/GetResource.ashx"` - `XenForo` (https://publicwww.com/websites/%22%2Fjs%2Fxf%2F%22/) - `"/js/xf/"` - `XOOPS` (https://publicwww.com/websites/%22%2Finclude%2Fxoops.js%22+%7C+%22generator%5C%22+content%3D%5C%22XOOPS%22/) - `"/include/xoops.js" | "generator\" content=\"XOOPS"` - `XpressEngine` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Rhymix%22+%7C+%22Generator%5C%22+content%3D%5C%22XpressEngine%22/) - `"generator\" content=\"Rhymix" | "Generator\" content=\"XpressEngine"` - `Orchard Core` (https://publicwww.com/websites/%22X-Generator%3A+Orchard%22+%7C+%22OrchardCore%22/) - `"X-Generator: Orchard" | "OrchardCore"` - `Plone` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Plone%22/) - `"generator\" content=\"Plone"` - `Typecho` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Typecho%22/) - `"generator\" content=\"Typecho"` - `Pimcore` (https://publicwww.com/websites/%22X-Powered-By%3A+pimcore%22/) - `"X-Powered-By: pimcore"` - `NetCat` (https://publicwww.com/websites/%22netcat_files%22/) - `"netcat_files"` - `Sitecore` (https://publicwww.com/websites/%22SC_ANALYTICS_GLOBAL_COOKIE%22+%7C+%22edge.sitecorecloud.io%22/) - `"SC_ANALYTICS_GLOBAL_COOKIE" | "edge.sitecorecloud.io"` - `Neos` (https://publicwww.com/websites/%22%2F_Resources%2FStatic%2FPackages%2F%22/) - `"/_Resources/Static/Packages/"` - `Microsoft SharePoint` (https://publicwww.com/websites/%22%2F_layouts%2F15%2F%22/) - `"/_layouts/15/"` - `Discourse` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Discourse%22/) - `"generator\" content=\"Discourse"` - `HostCMS` (https://publicwww.com/websites/%22X-Powered-By%3A+HostCMS%22/) - `"X-Powered-By: HostCMS"` - `UMI.CMS` (https://publicwww.com/websites/%22X-Generated-By%3A+UMI.CMS%22/) - `"X-Generated-By: UMI.CMS"` - `Rhymix` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Rhymix%22/) - `"generator\" content=\"Rhymix"` - `Simple Machines Forum` (https://publicwww.com/websites/%22smf_scripturl%22/) - `"smf_scripturl"` - `Invision Community` (https://publicwww.com/websites/%22%2Fapplications%2Fcore%2Finterface%2F%22/) - `"/applications/core/interface/"` - `MyBB` (https://publicwww.com/websites/%22MyBBEditor%22/) - `"MyBBEditor"` - `Sitefinity` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Sitefinity%22/) - `"generator\" content=\"Sitefinity"` - `vBulletin` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22vBulletin%22+%7C+%22vb_login_username%22/) - `"generator\" content=\"vBulletin" | "vb_login_username"` - `Halo` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Halo%22/) - `"generator\" content=\"Halo"` - `Movable Type` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Movable+Type%22+%7C+%22%2Fmt-static%2Fsupport%2F%22/) - `"generator\" content=\"Movable Type" | "/mt-static/support/"` - `Bludit` (https://publicwww.com/websites/%22%2Fbl-themes%2F%22/) - `"/bl-themes/"` - `WoltLab Suite` (https://publicwww.com/websites/%22wcf_path%22/) - `"wcf_path"` - `Sulu` (https://publicwww.com/websites/%22X-Generator%3A+Sulu%22/) - `"X-Generator: Sulu"` - `eZ Publish (Ibexa)` (https://publicwww.com/websites/%22X-Powered-By%3A+eZ+Publish%22+%7C+%22eZSESSID%22/) - `"X-Powered-By: eZ Publish" | "eZSESSID"` - `Flarum` (https://publicwww.com/websites/%22flarum-loading%22/) - `"flarum-loading"` - `a-blog cms` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22a-blog+cms%22/) - `"generator\" content=\"a-blog cms"` - `OpenCms` (https://publicwww.com/websites/%22Server%3A+OpenCms%22+%7C+%22%2Fopencms%2Fexport%2F%22/) - `"Server: OpenCms" | "/opencms/export/"` - `GetSimple CMS` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22GetSimple%22/) - `"generator\" content=\"GetSimple"` - `Mura CMS` (https://publicwww.com/websites/%22Mura.init%22+%7C+%22Generator%3A+Mura+CMS%22/) - `"Mura.init" | "Generator: Mura CMS"` - `Optimizely CMS (Episerver)` (https://publicwww.com/websites/%22EPiServerForms%22/) - `"EPiServerForms"` - `Textpattern` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Textpattern%22/) - `"generator\" content=\"Textpattern"` - `Wagtail` (https://publicwww.com/websites/%22X-Wagtail-Cache%22/) - `"X-Wagtail-Cache"` - `Pagekit` (https://publicwww.com/websites/%22%2Fpackages%2Fpagekit%2F%22+%7C+%22pagekit_session%3D%22/) - `"/packages/pagekit/" | "pagekit_session="` - `Chamilo` (https://publicwww.com/websites/%22x-powered-by%3A+chamilo%22/) - `"x-powered-by: chamilo"` - `MaxSite CMS` (https://publicwww.com/websites/%22%2Fapplication%2Fmaxsite%2F%22/) - `"/application/maxsite/"` - `Sarka-SPIP` (https://publicwww.com/websites/%22Sarka-SPIP%22/) - `"Sarka-SPIP"` - `Kooboo CMS` (https://publicwww.com/websites/%22X-KoobooCMS-Version%22/) - `"X-KoobooCMS-Version"` - `TiddlyWiki` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22TiddlyWiki%22/) - `"generator\" content=\"TiddlyWiki"` - `InstantCMS` (https://publicwww.com/websites/%22Set-Cookie%3A+InstantCMS%22/) - `"Set-Cookie: InstantCMS"` - `OpenNemas` (https://publicwww.com/websites/%22X-Powered-By%3A+OpenNemas%22/) - `"X-Powered-By: OpenNemas"` Source: https://publicwww.com/docs/examples/cms/ --- # WordPress themes & plugins - `Elementor` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Elementor%22/) - `"generator\" content=\"Elementor"` - `Divi` (https://publicwww.com/websites/%22et_pb_section%22/) - `"et_pb_section"` - `WPBakery` (https://publicwww.com/websites/%22%2Fwp-content%2Fplugins%2Fjs_composer%2F%22/) - `"/wp-content/plugins/js_composer/"` - `Astra` (https://publicwww.com/websites/%22astra-theme-css%22/) - `"astra-theme-css"` - `Flatsome` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Fflatsome%2F%22/) - `"/wp-content/themes/flatsome/"` - `Avada` (https://publicwww.com/websites/%22fusion-builder%22/) - `"fusion-builder"` - `GeneratePress` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Fgeneratepress%2F%22/) - `"/wp-content/themes/generatepress/"` - `Kadence` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Fkadence%2F%22/) - `"/wp-content/themes/kadence/"` - `OceanWP` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Foceanwp%2F%22/) - `"/wp-content/themes/oceanwp/"` - `Blocksy` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Fblocksy%2F%22/) - `"/wp-content/themes/blocksy/"` - `WoodMart` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Fwoodmart%2F%22/) - `"/wp-content/themes/woodmart/"` - `Beaver Builder` (https://publicwww.com/websites/%22%2Fwp-content%2Fplugins%2Fbb-plugin%2F%22+%7C+%22%2Fwp-content%2Fplugins%2Fbeaver-builder-lite-version%2F%22/) - `"/wp-content/plugins/bb-plugin/" | "/wp-content/plugins/beaver-builder-lite-version/"` - `Enfold` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Fenfold%2F%22/) - `"/wp-content/themes/enfold/"` - `BeTheme` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Fbetheme%2F%22/) - `"/wp-content/themes/betheme/"` - `Salient` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Fsalient%2F%22/) - `"/wp-content/themes/salient/"` - `The7` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Fdt-the7%2F%22/) - `"/wp-content/themes/dt-the7/"` - `Bricks` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2Fbricks%2F%22/) - `"/wp-content/themes/bricks/"` - `Oxygen` (https://publicwww.com/websites/%22%2Fwp-content%2Fplugins%2Foxygen%2F%22/) - `"/wp-content/plugins/oxygen/"` - `Newspaper` (https://publicwww.com/websites/%22%2Fwp-content%2Fthemes%2FNewspaper%2F%22/) - `"/wp-content/themes/Newspaper/"` - `Breakdance` (https://publicwww.com/websites/%22%2Fwp-content%2Fplugins%2Fbreakdance%2F%22/) - `"/wp-content/plugins/breakdance/"` - `Wordfence` (https://publicwww.com/websites/%22plugins+wordfence%22/) - `"plugins wordfence"` Source: https://publicwww.com/docs/examples/wordpress/ --- # Headless CMS & static sites - `Astro` (https://publicwww.com/websites/%22%2F_astro%2F%22/) - `"/_astro/"` - `Hugo` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Hugo%22/) - `"generator\" content=\"Hugo"` - `Sanity` (https://publicwww.com/websites/%22cdn.sanity.io%22/) - `"cdn.sanity.io"` - `Jekyll` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Jekyll%22/) - `"generator\" content=\"Jekyll"` - `Gatsby` (https://publicwww.com/websites/%22___gatsby%22/) - `"___gatsby"` - `Ghost` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Ghost%22/) - `"generator\" content=\"Ghost"` - `Sphinx` (https://publicwww.com/websites/%22documentation_options%22/) - `"documentation_options"` - `Contentful` (https://publicwww.com/websites/%22ctfassets.net%22/) - `"ctfassets.net"` - `Hexo` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Hexo%22/) - `"generator\" content=\"Hexo"` - `Prismic` (https://publicwww.com/websites/%22images.prismic.io%22/) - `"images.prismic.io"` - `Docusaurus` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Docusaurus%22/) - `"generator\" content=\"Docusaurus"` - `Storyblok` (https://publicwww.com/websites/%22storyblok.com%2Ff%2F%22/) - `"storyblok.com/f/"` - `VitePress` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22VitePress%22/) - `"generator\" content=\"VitePress"` - `MkDocs` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22mkdocs%22/) - `"generator\" content=\"mkdocs"` - `Publii` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Publii%22/) - `"generator\" content=\"Publii"` - `DatoCMS` (https://publicwww.com/websites/%22datocms-assets.com%22/) - `"datocms-assets.com"` - `GitBook` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22GitBook%22/) - `"generator\" content=\"GitBook"` - `Eleventy` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Eleventy%22/) - `"generator\" content=\"Eleventy"` - `Hygraph` (https://publicwww.com/websites/%22graphassets.com%22/) - `"graphassets.com"` - `Strapi` (https://publicwww.com/websites/%22strapiapp.com%22/) - `"strapiapp.com"` Source: https://publicwww.com/docs/examples/headless/ --- # Site builders - `Wix` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Wix.com+Website+Builder%22/) - `"generator\" content=\"Wix.com Website Builder"` - `Squarespace` (https://publicwww.com/websites/%22%3C%21--+This+is+Squarespace.+--%3E%22/) - `""` - `WordPress.com` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22WordPress.com%22/) - `"generator\" content=\"WordPress.com"` - `GoDaddy Website Builder` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Starfield+Technologies%3B+Go+Daddy+Website+Builder%22/) - `"generator\" content=\"Starfield Technologies; Go Daddy Website Builder"` - `Duda` (https://publicwww.com/websites/%22d-js-dmapi%22/) - `"d-js-dmapi"` - `Tilda` (https://publicwww.com/websites/%22tildacdn%22/) - `"tildacdn"` - `Weebly` (https://publicwww.com/websites/%22editmysite.com%22/) - `"editmysite.com"` - `Webflow` (https://publicwww.com/websites/%22data-wf-page%22/) - `"data-wf-page"` - `Hostinger Website Builder` (https://publicwww.com/websites/%22zyrosite.com%22/) - `"zyrosite.com"` - `HighLevel` (https://publicwww.com/websites/%22stcdn.leadconnectorhq.com%22/) - `"stcdn.leadconnectorhq.com"` - `Google Sites` (https://publicwww.com/websites/%22ssl.gstatic.com%2Fatari%22/) - `"ssl.gstatic.com/atari"` - `Webador` (https://publicwww.com/websites/%22jwwb.nl%22/) - `"jwwb.nl"` - `Blogger` (https://publicwww.com/websites/%22blogger.com%2Fstatic%2Fv1%2Fwidgets%22/) - `"blogger.com/static/v1/widgets"` - `Jimdo` (https://publicwww.com/websites/%22assets.jimstatic.com%22/) - `"assets.jimstatic.com"` - `Framer` (https://publicwww.com/websites/%22framerusercontent.com%22/) - `"framerusercontent.com"` - `CM4all Sites` (https://publicwww.com/websites/%22cm4all-beng-proxy%22/) - `"cm4all-beng-proxy"` - `Carrd` (https://publicwww.com/websites/%22frame-ancestors+https%3A%2F%2Fcarrd.com%22/) - `"frame-ancestors https://carrd.com"` - `One.com Website Builder` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22One.com%22/) - `"generator\" content=\"One.com"` - `Webnode` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Webnode%22/) - `"generator\" content=\"Webnode"` - `STRATO Website Builder` (https://publicwww.com/websites/%22strato-editor.com%22/) - `"strato-editor.com"` - `IONOS MyWebsite` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22IONOS+MyWebsite%22/) - `"generator\" content=\"IONOS MyWebsite"` - `Mobirise` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Mobirise%22/) - `"generator\" content=\"Mobirise"` - `Tumblr` (https://publicwww.com/websites/%22X-Tumblr-User%22/) - `"X-Tumblr-User"` - `SITE123` (https://publicwww.com/websites/%22f-static.net%22/) - `"f-static.net"` - `Yola` (https://publicwww.com/websites/%22yolacdn.net%22/) - `"yolacdn.net"` - `Showit` (https://publicwww.com/websites/%22static.showit.co%22/) - `"static.showit.co"` - `Lovable` (https://publicwww.com/websites/%22cdn.gpteng.co%22/) - `"cdn.gpteng.co"` - `imweb` (https://publicwww.com/websites/%22cdn.imweb.me%22/) - `"cdn.imweb.me"` - `Nicepage` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Nicepage%22/) - `"generator\" content=\"Nicepage"` - `HubSpot CMS` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22HubSpot%22/) - `"generator\" content=\"HubSpot"` - `Systeme.io` (https://publicwww.com/websites/%22Created+with+https%3A%2F%2Fsysteme.io%22/) - `"Created with https://systeme.io"` - `uCoz` (https://publicwww.com/websites/%22%2F.s%2Fsrc%2Fuwnd.min.js%22/) - `"/.s/src/uwnd.min.js"` - `Readymag` (https://publicwww.com/websites/%22rmcdn.net%22/) - `"rmcdn.net"` - `Strikingly` (https://publicwww.com/websites/%22strikinglycdn.com%22/) - `"strikinglycdn.com"` - `Kajabi` (https://publicwww.com/websites/%22kajabi-cdn.com%22/) - `"kajabi-cdn.com"` - `Peraichi` (https://publicwww.com/websites/%22cdn.peraichi.com%22/) - `"cdn.peraichi.com"` - `Substack` (https://publicwww.com/websites/%22window._preloads%22/) - `"window._preloads"` - `uKit` (https://publicwww.com/websites/%22x-cms%3A+ukit%22/) - `"x-cms: ukit"` - `Bubble` (https://publicwww.com/websites/%22cdn.bubble.io%22/) - `"cdn.bubble.io"` - `Craftum` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Craftum%22/) - `"generator\" content=\"Craftum"` - `Overblog` (https://publicwww.com/websites/%22assets.over-blog-kiwi.com%22/) - `"assets.over-blog-kiwi.com"` - `Zoho Sites` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Zoho+Sites%22/) - `"generator\" content=\"Zoho Sites"` - `Weblium` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Weblium%22/) - `"generator\" content=\"Weblium"` - `Ameba Ownd` (https://publicwww.com/websites/%22cdn.amebaowndme.com%22/) - `"cdn.amebaowndme.com"` - `e-monsite` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22e-monsite%22/) - `"generator\" content=\"e-monsite"` - `MotoCMS` (https://publicwww.com/websites/%22mt-includes%22/) - `"mt-includes"` - `WebsPlanet` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Websplanet%22/) - `"generator\" content=\"Websplanet"` - `Kotisivukone` (https://publicwww.com/websites/%22kotisivukone.js%22/) - `"kotisivukone.js"` - `Hashnode` (https://publicwww.com/websites/%22cdn.hashnode.com%22/) - `"cdn.hashnode.com"` - `Teachable` (https://publicwww.com/websites/%22teachablecdn.com%22/) - `"teachablecdn.com"` - `Super (Notion sites)` (https://publicwww.com/websites/%22assets-v2.super.so%22/) - `"assets-v2.super.so"` - `Thinkific` (https://publicwww.com/websites/%22cdn.thinkific.com%22/) - `"cdn.thinkific.com"` - `Podia` (https://publicwww.com/websites/%22cdn.podia.com%22/) - `"cdn.podia.com"` - `Bear Blog` (https://publicwww.com/websites/%22Powered+by+%3Ca+href%3D%5C%22https%3A%2F%2Fbearblog.dev%5C%22%3EBear%22/) - `"Powered by Bear"` - `Ucraft` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22Ucraft%22/) - `"generator\" content=\"Ucraft"` - `10Web` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%2210Web%22/) - `"generator\" content=\"10Web"` Source: https://publicwww.com/docs/examples/site-builders/ --- # Shop platforms - `WooCommerce` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22WooCommerce%22/) - `"generator\" content=\"WooCommerce"` - `Shopify` (https://publicwww.com/websites/%22shopify-digital-wallet%22/) - `"shopify-digital-wallet"` - `OpenCart` (https://publicwww.com/websites/%22catalog%2Fview%2Ftheme%2F%22/) - `"catalog/view/theme/"` - `Wix Stores` (https://publicwww.com/websites/%22wixstores-client%22/) - `"wixstores-client"` - `PrestaShop` (https://publicwww.com/websites/%22var+prestashop%22+%7C+%22generator%5C%22+content%3D%5C%22PrestaShop%22/) - `"var prestashop" | "generator\" content=\"PrestaShop"` - `Magento (Adobe Commerce)` (https://publicwww.com/websites/%22text%2Fx-magento-init%22+%7C+%22%2Fskin%2Ffrontend%2F%22/) - `"text/x-magento-init" | "/skin/frontend/"` - `Odoo` (https://publicwww.com/websites/%22web.assets_frontend%22/) - `"web.assets_frontend"` - `Cafe24` (https://publicwww.com/websites/%22echosting.cafe24.com%22/) - `"echosting.cafe24.com"` - `Tiendanube (Nuvemshop)` (https://publicwww.com/websites/%22mitiendanube.com%22/) - `"mitiendanube.com"` - `BASE` (https://publicwww.com/websites/%22static.thebase.in%22/) - `"static.thebase.in"` - `Squarespace Commerce` (https://publicwww.com/websites/%22sqs-add-to-cart-button%22/) - `"sqs-add-to-cart-button"` - `WHMCS` (https://publicwww.com/websites/%22%2Fclientarea.php%22+%7C+%22cart.php%3Fa%3Dadd%26pid%22/) - `"/clientarea.php" | "cart.php?a=add&pid"` - `Salla` (https://publicwww.com/websites/%22cdn.salla.sa%22/) - `"cdn.salla.sa"` - `BigCommerce` (https://publicwww.com/websites/%22bigcommerce.com%2Fs-%22/) - `"bigcommerce.com/s-"` - `Shoptet` (https://publicwww.com/websites/%22cdn.myshoptet.com%22/) - `"cdn.myshoptet.com"` - `YouCan` (https://publicwww.com/websites/%22cdn.youcan.shop%22/) - `"cdn.youcan.shop"` - `Color Me Shop` (https://publicwww.com/websites/%22img.shop-pro.jp%22/) - `"img.shop-pro.jp"` - `VirtueMart` (https://publicwww.com/websites/%22com_virtuemart%22/) - `"com_virtuemart"` - `Ecwid` (https://publicwww.com/websites/%22app.ecwid.com%2Fscript.js%22/) - `"app.ecwid.com/script.js"` - `Shopline` (https://publicwww.com/websites/%22cdn.myshopline.com%22/) - `"cdn.myshopline.com"` - `Big Cartel` (https://publicwww.com/websites/%22assets.bigcartel.com%22/) - `"assets.bigcartel.com"` - `Tray` (https://publicwww.com/websites/%22tcdn.com.br%22/) - `"tcdn.com.br"` - `MakeShop` (https://publicwww.com/websites/%22makeshop-multi-images%22/) - `"makeshop-multi-images"` - `nopCommerce` (https://publicwww.com/websites/%22Nop.customer%22/) - `"Nop.customer"` - `Shoplazza` (https://publicwww.com/websites/%22r.shoplazza.com%22/) - `"r.shoplazza.com"` - `ePages` (https://publicwww.com/websites/%22%2FWebRoot%2FStoreTypes%2F%22/) - `"/WebRoot/StoreTypes/"` - `Loja Integrada` (https://publicwww.com/websites/%22cdn.awsli.com.br%22/) - `"cdn.awsli.com.br"` - `Zid` (https://publicwww.com/websites/%22media.zid.store%22/) - `"media.zid.store"` - `Zen Cart` (https://publicwww.com/websites/%22zenid%22/) - `"zenid"` - `Shopware` (https://publicwww.com/websites/%22%2Fbundles%2Fstorefront%2F%22+%7C+%22engine%2FShopware%22/) - `"/bundles/storefront/" | "engine/Shopware"` - `Ticimax` (https://publicwww.com/websites/%22static.ticimax.cloud%22/) - `"static.ticimax.cloud"` - `JTL-Shop` (https://publicwww.com/websites/%22JTLSHOP%22/) - `"JTLSHOP"` - `EC-CUBE` (https://publicwww.com/websites/%22eccube.js%22+%7C+%22Set-Cookie%3A+eccube%22/) - `"eccube.js" | "Set-Cookie: eccube"` - `Haravan` (https://publicwww.com/websites/%22cdn.hstatic.net%22/) - `"cdn.hstatic.net"` - `Gambio` (https://publicwww.com/websites/%22Shopsoftware+by+Gambio+GmbH%22/) - `"Shopsoftware by Gambio GmbH"` - `osCommerce` (https://publicwww.com/websites/%22osCsid%22/) - `"osCsid"` - `Salesforce Commerce Cloud` (https://publicwww.com/websites/%22demandware.static%22/) - `"demandware.static"` - `CS-Cart` (https://publicwww.com/websites/%22design%2Fthemes%2Fresponsive%2F%22/) - `"design/themes/responsive/"` - `Jumpseller` (https://publicwww.com/websites/%22assets.jumpseller.com%22/) - `"assets.jumpseller.com"` - `Lightspeed eCom` (https://publicwww.com/websites/%22cdn.webshopapp.com%22/) - `"cdn.webshopapp.com"` - `ShopBase` (https://publicwww.com/websites/%22accounts.shopbase.com%22/) - `"accounts.shopbase.com"` - `modified eCommerce` (https://publicwww.com/websites/%22modified+eCommerce+Shopsoftware%22/) - `"modified eCommerce Shopsoftware"` - `Shoper` (https://publicwww.com/websites/%22Sklep+internetowy+Shoper%22/) - `"Sklep internetowy Shoper"` - `HCL Commerce (WebSphere Commerce)` (https://publicwww.com/websites/%22%2Fwcsstore%2F%22/) - `"/wcsstore/"` - `Sazito` (https://publicwww.com/websites/%22sazito_session_id%22/) - `"sazito_session_id"` - `VTEX` (https://publicwww.com/websites/%22vtexassets.com%22+%7C+%22vteximg.com.br%22/) - `"vtexassets.com" | "vteximg.com.br"` - `Volusion` (https://publicwww.com/websites/%22%2Fvspfiles%2F%22/) - `"/vspfiles/"` - `Snipcart` (https://publicwww.com/websites/%22cdn.snipcart.com%22/) - `"cdn.snipcart.com"` - `Shift4Shop (3dcart)` (https://publicwww.com/websites/%22shift4shop%22+%7C+%223dvisit%22/) - `"shift4shop" | "3dvisit"` - `SAP Commerce Cloud (Hybris)` (https://publicwww.com/websites/%22%2F_ui%2Fresponsive%2F%22+%7C+%22ACC.config%22/) - `"/_ui/responsive/" | "ACC.config"` - `Dukaan` (https://publicwww.com/websites/%22mydukaan.io%22/) - `"mydukaan.io"` - `Craft Commerce` (https://publicwww.com/websites/%22Craft+Commerce%22/) - `"Craft Commerce"` - `plentymarkets` (https://publicwww.com/websites/%22plentymarkets-cloud%22/) - `"plentymarkets-cloud"` - `Strato` (https://publicwww.com/websites/%22shop.strato.de%2Fepages%22/) - `"shop.strato.de/epages"` - `Drupal Commerce` (https://publicwww.com/websites/%22commerce-product-field%22+%7C+%22commerce-order-item-add-to-cart-form%22/) - `"commerce-product-field" | "commerce-order-item-add-to-cart-form"` - `CubeCart` (https://publicwww.com/websites/%22cubecart%22/) - `"cubecart"` - `Intershop` (https://publicwww.com/websites/%22%2FINTERSHOP%2Fstatic%2F%22+%7C+%22INTERSHOP.enfinity%22/) - `"/INTERSHOP/static/" | "INTERSHOP.enfinity"` - `Future Shop` (https://publicwww.com/websites/%22future-shop.jp%22/) - `"future-shop.jp"` - `xt:Commerce` (https://publicwww.com/websites/%22generator%5C%22+content%3D%5C%22xt%3ACommerce%22/) - `"generator\" content=\"xt:Commerce"` - `Shopfa` (https://publicwww.com/websites/%22shopfa%22/) - `"shopfa"` - `AfterBuy` (https://publicwww.com/websites/%22shop-static.afterbuy%22/) - `"shop-static.afterbuy"` - `NetSuite SuiteCommerce` (https://publicwww.com/websites/%22%2FSSP+Applications%2F%22/) - `"/SSP Applications/"` - `Bagisto` (https://publicwww.com/websites/%22x-built-with%3A+Bagisto%22/) - `"x-built-with: Bagisto"` - `Wikinggruppen` (https://publicwww.com/websites/%22WIKINGGRUPPEN%22/) - `"WIKINGGRUPPEN"` - `Thelia` (https://publicwww.com/websites/%22%2Fassets%2FfrontOffice%2F%22/) - `"/assets/frontOffice/"` - `Storeden` (https://publicwww.com/websites/%22Storeden%22/) - `"Storeden"` - `Mietshop` (https://publicwww.com/websites/%22Mietshop%22/) - `"Mietshop"` - `X-Cart` (https://publicwww.com/websites/%22skin%2Fcommon_files%22+%7C+%22xcart_web_dir%22/) - `"skin/common_files" | "xcart_web_dir"` - `Quick.Cart` (https://publicwww.com/websites/%22Powered+by+Quick.Cart%22/) - `"Powered by Quick.Cart"` - `Clientexec` (https://publicwww.com/websites/%22clientexec%22/) - `"clientexec"` - `UltraCart` (https://publicwww.com/websites/%22UCEditor%22/) - `"UCEditor"` - `OXID eShop` (https://publicwww.com/websites/%22oxCookieNote%22/) - `"oxCookieNote"` - `Smartstore` (https://publicwww.com/websites/%22smjslib.js%22/) - `"smjslib.js"` - `Xonic` (https://publicwww.com/websites/%22xonic-solutions%22/) - `"xonic-solutions"` Source: https://publicwww.com/docs/examples/ecommerce/ --- # Payments - `Stripe` (https://publicwww.com/websites/%22js.stripe.com%22+%7C+%22buy.stripe.com%22+-%22js.stripe.com%5C%22%3A%5B%5C%22essential%22/) - `"js.stripe.com" | "buy.stripe.com" -"js.stripe.com\":[\"essential"` - `PayPal` (https://publicwww.com/websites/%22paypal.com%2Fsdk%2Fjs%22+%7C+%22www.paypal.com%2Fcgi-bin%2Fwebscr%22/) - `"paypal.com/sdk/js" | "www.paypal.com/cgi-bin/webscr"` - `Razorpay` (https://publicwww.com/websites/%22checkout.razorpay.com%22+-%22checkout.razorpay.com%5C%22%3A%5B%5C%22essential%22/) - `"checkout.razorpay.com" -"checkout.razorpay.com\":[\"essential"` - `Braintree` (https://publicwww.com/websites/%22js.braintreegateway.com%22+-%22js.braintreegateway.com%5C%22%3A%5B%5C%22essential%22/) - `"js.braintreegateway.com" -"js.braintreegateway.com\":[\"essential"` - `iyzico` (https://publicwww.com/websites/%22iyzico%22/) - `"iyzico"` - `Google Pay` (https://publicwww.com/websites/%22pay.google.com%2Fgp%2Fp%2Fjs%2Fpay.js%22/) - `"pay.google.com/gp/p/js/pay.js"` - `Klarna` (https://publicwww.com/websites/%22js.klarna.com%22+%7C+%22x.klarnacdn.net%22+%7C+%22klarna-placement%22+-%22x.klarnacdn.net%5C%22%3A%5B%5C%22essential%22/) - `"js.klarna.com" | "x.klarnacdn.net" | "klarna-placement" -"x.klarnacdn.net\":[\"essential"` - `Apple Pay` (https://publicwww.com/websites/%22apple-pay-sdk.js%22/) - `"apple-pay-sdk.js"` - `Authorize.net` (https://publicwww.com/websites/%22js.authorize.net%22+-%22authorizeAcceptJsUrlLiveMode%22+-%22js.authorize.net%5C%22%3A%5B%5C%22essential%22/) - `"js.authorize.net" -"authorizeAcceptJsUrlLiveMode" -"js.authorize.net\":[\"essential"` - `Square` (https://publicwww.com/websites/%22web.squarecdn.com%22+-%22SQUARE_WEB_PAYMENTS_SDK%22+-%22web.squarecdn.com%5C%22%3A%5B%5C%22essential%22/) - `"web.squarecdn.com" -"SQUARE_WEB_PAYMENTS_SDK" -"web.squarecdn.com\":[\"essential"` - `Afterpay (Clearpay)` (https://publicwww.com/websites/%22static.afterpay.com%22+%7C+%22static-us.afterpay.com%22+%7C+%22afterpay-placement%22+%7C+%22js.afterpay.com%22/) - `"static.afterpay.com" | "static-us.afterpay.com" | "afterpay-placement" | "js.afterpay.com"` - `Mercado Pago` (https://publicwww.com/websites/%22sdk.mercadopago.com%22/) - `"sdk.mercadopago.com"` - `Mollie` (https://publicwww.com/websites/%22js.mollie.com%22+-%22js.mollie.com%5C%22%3A%5B%5C%22essential%22/) - `"js.mollie.com" -"js.mollie.com\":[\"essential"` - `Amazon Pay` (https://publicwww.com/websites/%22static-eu.payments-amazon.com%22+%7C+%22static-fe.payments-amazon.com%22+%7C+%22static-na.payments-amazon.com%22/) - `"static-eu.payments-amazon.com" | "static-fe.payments-amazon.com" | "static-na.payments-amazon.com"` - `Paystack` (https://publicwww.com/websites/%22js.paystack.co%22/) - `"js.paystack.co"` - `Adyen` (https://publicwww.com/websites/%22checkoutshopper-live.adyen.com%22/) - `"checkoutshopper-live.adyen.com"` - `Cashfree` (https://publicwww.com/websites/%22sdk.cashfree.com%22/) - `"sdk.cashfree.com"` - `Paddle` (https://publicwww.com/websites/%22cdn.paddle.com%2Fpaddle%22/) - `"cdn.paddle.com/paddle"` - `Shopify Buy Button` (https://publicwww.com/websites/%22sdks.shopifycdn.com%2Fbuy-button%22/) - `"sdks.shopifycdn.com/buy-button"` - `Lemon Squeezy` (https://publicwww.com/websites/%22lemonsqueezy.com%2Fcheckout%22+%7C+%22app.lemonsqueezy.com%2Fjs%2Flemon.js%22/) - `"lemonsqueezy.com/checkout" | "app.lemonsqueezy.com/js/lemon.js"` - `Affirm` (https://publicwww.com/websites/%22affirm.com%2Fjs%22+%7C+%22cdn1.affirm.com%22/) - `"affirm.com/js" | "cdn1.affirm.com"` - `Gumroad` (https://publicwww.com/websites/%22gumroad.com%2Fjs%2Fgumroad.js%22/) - `"gumroad.com/js/gumroad.js"` - `PayU` (https://publicwww.com/websites/%22secure.payu.com%22/) - `"secure.payu.com"` - `Scalapay` (https://publicwww.com/websites/%22cdn.scalapay.com%22/) - `"cdn.scalapay.com"` - `Chargebee` (https://publicwww.com/websites/%22js.chargebee.com%22/) - `"js.chargebee.com"` - `Midtrans` (https://publicwww.com/websites/%22app.midtrans.com%22/) - `"app.midtrans.com"` - `Tamara` (https://publicwww.com/websites/%22cdn.tamara.co%22/) - `"cdn.tamara.co"` - `Payhip` (https://publicwww.com/websites/%22payhip.com%2Fpayhip.js%22/) - `"payhip.com/payhip.js"` - `Zip (Quadpay)` (https://publicwww.com/websites/%22static.zip.co%22+%7C+%22quadpay%22/) - `"static.zip.co" | "quadpay"` - `Flutterwave` (https://publicwww.com/websites/%22checkout.flutterwave.com%22/) - `"checkout.flutterwave.com"` - `SamCart` (https://publicwww.com/websites/%22static.samcart.com%22/) - `"static.samcart.com"` - `Tabby` (https://publicwww.com/websites/%22checkout.tabby.ai%22/) - `"checkout.tabby.ai"` - `Sezzle` (https://publicwww.com/websites/%22widget.sezzle.com%22/) - `"widget.sezzle.com"` - `Checkout.com` (https://publicwww.com/websites/%22cdn.checkout.com%22/) - `"cdn.checkout.com"` - `PayFast` (https://publicwww.com/websites/%22www.payfast.co.za%22/) - `"www.payfast.co.za"` - `Worldpay` (https://publicwww.com/websites/%22secure.worldpay.com%22+%7C+%22payments.worldpay.com%22/) - `"secure.worldpay.com" | "payments.worldpay.com"` - `PagSeguro` (https://publicwww.com/websites/%22stc.pagseguro.uol.com.br%22/) - `"stc.pagseguro.uol.com.br"` - `Coinbase Commerce` (https://publicwww.com/websites/%22commerce.coinbase.com%22/) - `"commerce.coinbase.com"` - `FastSpring` (https://publicwww.com/websites/%22sbl.onfastspring.com%22/) - `"sbl.onfastspring.com"` - `Recurly` (https://publicwww.com/websites/%22js.recurly.com%22/) - `"js.recurly.com"` Source: https://publicwww.com/docs/examples/payments/ --- # Discontinued, still running - `Universal Analytics` (https://publicwww.com/websites/%22gtag+js+id+UA%22/) - `"gtag js id UA"` - `PHP 7` (https://publicwww.com/websites/%22x-powered-by%3A+php+7%22/) - `"x-powered-by: php 7"` - `PHP 5` (https://publicwww.com/websites/%22x-powered-by%3A+php+5%22/) - `"x-powered-by: php 5"` - `PHP 8.1` (https://publicwww.com/websites/%22x-powered-by%3A+php+8+1%22/) - `"x-powered-by: php 8 1"` - `PHP 8.0` (https://publicwww.com/websites/%22x-powered-by%3A+php+8+0%22/) - `"x-powered-by: php 8 0"` - `AngularJS` (https://publicwww.com/websites/%22ng-controller%22+%7C+%22ng-cloak%22+%7C+%22angular.min.js%22/) - `"ng-controller" | "ng-cloak" | "angular.min.js"` - `AddThis` (https://publicwww.com/websites/%22s7.addthis.com%22+%7C+%22addthis_widget.js%22/) - `"s7.addthis.com" | "addthis_widget.js"` - `SWFObject` (https://publicwww.com/websites/%22swfobject.js%22/) - `"swfobject.js"` - `Google PageSpeed` (https://publicwww.com/websites/%22x-mod-pagespeed%22+%7C+%22x-page-speed%22/) - `"x-mod-pagespeed" | "x-page-speed"` - `Google+ buttons` (https://publicwww.com/websites/%22apis.google.com%2Fjs%2Fplusone.js%22+%7C+%22g-plusone%22/) - `"apis.google.com/js/plusone.js" | "g-plusone"` - `Facebook Messenger chat plugin` (https://publicwww.com/websites/%22xfbml+customerchat%22+%7C+%22fb-customerchat%22/) - `"xfbml customerchat" | "fb-customerchat"` - `Turbolinks` (https://publicwww.com/websites/%22data-turbolinks-track%22/) - `"data-turbolinks-track"` - `jQuery Mobile` (https://publicwww.com/websites/%22jquery.mobile.custom%22+%7C+%22jquery.mobile.min.js%22/) - `"jquery.mobile.custom" | "jquery.mobile.min.js"` - `Cufon` (https://publicwww.com/websites/%22cufon-yui.js%22+%7C+%22Cufon.replace%22/) - `"cufon-yui.js" | "Cufon.replace"` - `script.aculo.us` (https://publicwww.com/websites/%22scriptaculous.js%22/) - `"scriptaculous.js"` - `polyfill.io` (https://publicwww.com/websites/%22polyfill.io%2Fv3%2Fpolyfill%22+%7C+%22cdn.polyfill.io%22/) - `"polyfill.io/v3/polyfill" | "cdn.polyfill.io"` - `Adobe Dynamic Tag Management` (https://publicwww.com/websites/%22satelliteLib%22/) - `"satelliteLib"` - `Google Optimize` (https://publicwww.com/websites/%22googleoptimize.com%2Foptimize.js%22+%7C+%22optimize_id+GTM%22/) - `"googleoptimize.com/optimize.js" | "optimize_id GTM"` - `YUI` (https://publicwww.com/websites/%22yahoo-dom-event.js%22+%7C+%22yui.yahooapis.com%2F2.%22+%7C+%22yui.yahooapis.com%2F3.%22+%7C+%22yui-min.js%22/) - `"yahoo-dom-event.js" | "yui.yahooapis.com/2." | "yui.yahooapis.com/3." | "yui-min.js"` - `MaxCDN` (https://publicwww.com/websites/%22netdna+ssl+com%22/) - `"netdna ssl com"` - `StackPath CDN` (https://publicwww.com/websites/%22stackpathcdn+com%22/) - `"stackpathcdn com"` - `Facebook Conversion Pixel` (https://publicwww.com/websites/%22fbds.js%22/) - `"fbds.js"` - `Alexa Certify` (https://publicwww.com/websites/%22atrk.js%22/) - `"atrk.js"` - `Site Meter` (https://publicwww.com/websites/%22sitemeter.com%2Fmeter.asp%22+%7C+%22sitemeter.com%2Fjs%22/) - `"sitemeter.com/meter.asp" | "sitemeter.com/js"` - `HeadJS` (https://publicwww.com/websites/%22head.load.min.js%22+%7C+%22data-headjs-load%22/) - `"head.load.min.js" | "data-headjs-load"` - `sIFR` (https://publicwww.com/websites/%22sifr.js%22/) - `"sifr.js"` - `Google Ad Manager legacy GA tags` (https://publicwww.com/websites/%22partner.googleadservices.com%2Fgampad%2Fgoogle_service.js%22+%7C+%22GA_googleFillSlot%22/) - `"partner.googleadservices.com/gampad/google_service.js" | "GA_googleFillSlot"` - `Google Checkout` (https://publicwww.com/websites/%22checkout.google.com%22/) - `"checkout.google.com"` - `Polymer` (https://publicwww.com/websites/%22%40polymer%2Fpolymer%22/) - `"@polymer/polymer"` - `OneStat` (https://publicwww.com/websites/%22onestat.com%22/) - `"onestat.com"` Source: https://publicwww.com/docs/examples/discontinued/ --- # Clusters A **cluster** is a set of unique domain names, saved under your account. It is what turns a search - which answers a question once, right now - into something you can keep, compare against next month's answer, combine with another, and read fields out of. Clusters are for signed-in accounts. What one may hold depends on the plan; see [limits](https://publicwww.com/docs/clusters/limits/). The same clusters can be managed from code through the [API](https://publicwww.com/docs/api/clusters/), and by an AI assistant through the [MCP tools](https://publicwww.com/docs/mcp/tools/). ## What they are for [**Keep** Store what a query returned. The index moves on and a search cannot be re-run against how it used to be.](https://publicwww.com/docs/clusters/creating/) [**Compare** Subtract one cluster from another to see who adopted a signature since last time, and who dropped it.](https://publicwww.com/docs/clusters/creating/) [**Combine** AND, OR and subtraction between clusters, saved as a new one.](https://publicwww.com/docs/clusters/creating/) [**Extract** Pull phone numbers, accounts or addresses off every site in the set, internal pages included.](https://publicwww.com/docs/clusters/extraction/) [**Filter** Upload your own list of domains and use it to narrow search results to it - or to everything but it.](https://publicwww.com/docs/clusters/creating/) [**Download** Browse page by page, or take the whole thing as a file.](https://publicwww.com/docs/clusters/creating/) ## In detail - [Creating a cluster](https://publicwww.com/docs/clusters/creating/) - from search results, from a file, or from other clusters. - [Extraction](https://publicwww.com/docs/clusters/extraction/) - reading fields off the sites in a cluster. - [Limits](https://publicwww.com/docs/clusters/limits/) - how many, how large, and how extraction is counted. ## Worked examples - [Tracking a widget change](https://publicwww.com/docs/clusters/example-widgets/) - which sites replaced one share widget with another, using two clusters and a subtraction across a PublicWWW update. - [Extracting phones and emails](https://publicwww.com/docs/clusters/example-contacts/) - from two searches to a spreadsheet of contact details for Greek WordPress sites. Source: https://publicwww.com/docs/clusters/ --- # Creating a cluster Three ways to fill a cluster. They can be mixed - a cluster built from a search can be combined with one uploaded from a file, and the result saved as a third. ## From search results Run a search, then use the Cluster button above the results. The domain names are saved, deduplicated, as a new cluster. Where a search returned several pages of one site, the cluster holds the site once. This is the usual starting point, and the reason to do it even when you do not need a cluster yet: the index moves on, and a search cannot be re-run against the index as it was last month. A cluster is the only record of what a query returned at the time it was run. ## From a file Upload a list of domains, urls or email addresses. Each line is reduced to its domain, and the ones PublicWWW knows about are kept - anything not in the index cannot be browsed or extracted, so it is dropped rather than stored as a name with nothing behind it. Useful for the other direction: rather than starting from a query, start from your own list of customers, competitors or leads, and use the cluster to filter search results down to it. ## From other clusters Boolean operations build a cluster out of two existing ones: | Operation | Result | Answers | | --- | --- | --- | | **AND** (intersection) | Sites in both. | Who runs both of these things? | | **OR** (union) | Sites in either, each once. | Everyone running any version of this. | | **Subtraction** | Sites in the first and not the second. | Who dropped it? Who is new since last time? | Subtraction across time is what makes clusters more than a saved list. Store a query's results today, store them again after the next PublicWWW update, and subtract in either direction: one way gives the sites that adopted the signature, the other the sites that lost it. Worked through step by step in [tracking a widget change](https://publicwww.com/docs/clusters/example-widgets/). ## Reading a cluster back Any cluster can be browsed page by page in the interface, downloaded as a file, used as the input to another operation, or [extracted](https://publicwww.com/docs/clusters/extraction/) for content found on its sites. Source: https://publicwww.com/docs/clusters/creating/ --- # Extraction Extraction reads the pages of every site in a cluster and pulls out the parts that match an expression. A cluster of sites becomes a table of phone numbers, social accounts, addresses, plugin names - whatever the pattern captures. ## What it reads Everything PublicWWW has indexed for those sites, internal pages included - not only the home page a search matched on. A contact detail that only appears on an "about" page is still found. ## Presets and your own patterns There are presets for the things people ask for most - email addresses, phone numbers, WhatsApp, Telegram, Viber and LINE contacts, links to Facebook, Instagram, X, LinkedIn (people and companies), YouTube, TikTok, Pinterest, Threads, Bluesky, Discord and GitHub profiles, the site's apps in Google Play and the App Store - and any regular expression can be used instead. The expression works the same way `'snipexp:'` (https://publicwww.com/docs/query-syntax/regex/) does in a search: the **capturing group** is what ends up in the column, and an expression without one produces empty results. ``` |/wp-content/plugins/([\w\d\-\.\_]+)/| ``` Test on a small cluster first. The expression can be tried, adjusted and tried again with a cap on how many records to pull, so a wrong pattern costs almost nothing - see [limits](https://publicwww.com/docs/clusters/limits/) for why that matters. ## Getting the result out The extracted table downloads as a file and opens in a spreadsheet. Each row is a site and what was found on it; a site where nothing matched is still listed, so the gaps are visible rather than silently dropped. ## Filtering searches with a cluster A cluster works as a filter in the other direction too. Upload your own list of domains, urls or email addresses, and use it to reduce search results to the sites on that list - or, by subtracting, to everything except them. [Extracting phones and emails](https://publicwww.com/docs/clusters/example-contacts/) walks the whole thing through, from two searches to a spreadsheet. From code, extraction is [part of the API](https://publicwww.com/docs/api/clusters/), with the same presets by name. Source: https://publicwww.com/docs/clusters/extraction/ --- # Limits What a cluster may hold, how many you may keep, and how extraction is counted against your plan. We store up to 100 clusters per user account. Size of each cluster and data extraction operations are limited by user account values. We count each RegEx match as full record and not matched RegEx as 1/10 record. Limits usage may be reduced by specifying maximal extractable records number while RegEx testing. The exact numbers depend on the plan - your own are on your [profile](https://publicwww.com/profile/), and all of them side by side on [pricing](https://publicwww.com/prices.html). ## How extraction is counted - A RegEx that matches counts as one full record. - A RegEx that does not match still costs a tenth of a record - the page was read either way. - Setting a maximum number of extractable records while testing an expression keeps a wrong pattern from spending the day's allowance. Test the expression on a small cluster first. The cost is in pages read, not in matches found, so a pattern that matches nothing across a large cluster is the expensive mistake. Source: https://publicwww.com/docs/clusters/limits/ --- # Example: tracking a widget change A cluster is a snapshot, so two snapshots taken either side of a PublicWWW update can be compared. This walks through finding the sites that took up one share widget and dropped another - eleven steps, each with the screen it happens on. The same shape works for any "who changed from A to B" question: two searches, two clusters, repeat after an update, subtract, intersect. 1. Let's use code samples for widgets: 2. Find websites with ShareThis widget code and copy domain names to cluster: 3. Same with AddToAny widget code and copy domain names to another cluster: 4. Wait until PublicWWW update and repeat query for ShareThis: 5. Store fresh ShareThis results to cluster: 6. Repeat query for AddToAny: 7. Store fresh AddToAny results to cluster too: 8. Find new websites with ShareThis code: 9. Find old websites with removed AddToAny code: 10. Intersect clusters to find who installed ShareThis AND removed AddToAny: 11. Download, browse or keep results for other operations: Steps 1 and 2 have to happen before the update you want to measure, since there is no way to search the index as it was. Get into the habit of storing the cluster when you first run a query you will want to compare later. Source: https://publicwww.com/docs/clusters/example-widgets/ --- # Example: extracting phones and emails Extraction turns a cluster of sites into a table of things found on them. This walks through pulling phone numbers and email addresses off Greek WordPress sites - six steps, ending in a spreadsheet. 1. Let's find Greece WordPress websites which contains email addresses and copy domain names to cluster: 2. And Greece WordPress websites with references to phone numbers and copy domain names to another cluster: 3. Find clusters intersection: 4. Select cluster with intersection for extraction: 5. Use RegEx presets for email and phones: 6. Open result in spreadsheet: The two RegEx presets used here are the built-in ones. Any expression works - see [regular expressions](https://publicwww.com/docs/query-syntax/regex/) for how the capturing group decides what ends up in the column, and [limits](https://publicwww.com/docs/clusters/limits/) for how extraction is charged. Source: https://publicwww.com/docs/clusters/example-contacts/ --- # API The API runs the same search the website does and hands back the results as data: JSON by default, or XML, CSV, TSV, NDJSON and plain text. Everything is a read - nothing here creates or changes anything. Base URL `https://api.publicwww.com` ## In one command ``` curl -H "Authorization: Bearer $KEY" \ "https://api.publicwww.com/v1/search?query=%22angular.min.js%22&per_page=3" ``` ``` { "query": "\"angular.min.js\"", "page": 1, "per_page": 3, "total": 278, "total_pages": 93, "returned": 3, "truncated": false, "took_ms": 2, "results": [ { "domain": "imgbox.com", "url": "https://imgbox.com/", "rank": 4187, "ranked": true } ] } ``` ## Endpoints | Endpoint | Methods | What it does | | --- | --- | --- | | `/v1/search` | GET, POST | Run a search. [Parameters](https://publicwww.com/docs/api/requests/), [formats](https://publicwww.com/docs/api/formats/). | | `/v1/account` | GET | Plan, quota and limits. Spends nothing. | | `/v1/clusters` | GET, POST | Saved lists of websites: create from a search or a list, combine, extract contacts and ids from page source. [Clusters](https://publicwww.com/docs/api/clusters/). | | `/mcp` | POST | The [MCP server](https://publicwww.com/docs/mcp/) for AI assistants and agents: search and clusters as tools, with the same token. | | `/` | GET | The API describing itself, error codes included. Needs no key. | | `/openapi.json` | GET | The same as an [OpenAPI 3.1 description](https://api.publicwww.com/openapi.json), to import into Postman, n8n, Make, Power Automate and other tools. Needs no key. | There is no separate export endpoint. Bulk is `/v1/search` with a large `per_page`, which on a paid plan goes up to a million rows; the answer streams as it is produced. ## What it promises - **Results are never silently reduced.** When a browser's daily quota runs out the website quietly falls back to free-tier limits and shows less. A script cannot see that happen, so here it is an error instead - `429 quota_exceeded`, not a short answer that looks complete. - **A short answer is marked as short** - `truncated` in the body and `X-Truncated` in the headers, in every format. - **Unranked sites say so** - `rank: null` and `ranked: false`, never an internal placeholder a client might mistake for a real, very large rank. - **Being told to wait beats being made to wait.** Arrive too fast and the answer comes back at once with a `Retry-After`, rather than the connection being held open. ## Getting a key Issue a token on your [profile](https://publicwww.com/profile/api), or let an application get one for you through [OAuth 2.1](https://publicwww.com/docs/api/authentication/#oauth). A paid plan is required; see [pricing](https://publicwww.com/prices.html). Existing scripts that call the old `?export=` urls keep working unchanged - see [the old export urls](https://publicwww.com/docs/api/legacy/). Source: https://publicwww.com/docs/api/ --- # Authentication One header, on every request except the self-describing index. ``` Authorization: Bearer ``` Tokens are issued on your [profile page](https://publicwww.com/profile/api) - up to ten per account, each revocable on its own, so a leaked one can be deleted without touching the others. A paid plan is required: without one, every endpoint except `/` and `/v1/account` answers `403 plan_required`. An application can also get a token for you through OAuth 2.1: you sign in, see what it asks for and press Allow. Its token goes in the same header and works the same way. ## Why not `?key=` A key in the query string ends up in places you did not put it: web server access logs, browser history, proxy logs, and the `Referer` header of anything the response links to. The API therefore does not accept it, and answers `401 missing_key` saying so. The old `?export=` urls on the main site do still accept `?key=`, because scripts written years ago depend on it and taking it away would break them. That is the one place it lives - see [the old export urls](https://publicwww.com/docs/api/legacy/). ## Checking a key works `/v1/account` is the cheapest call: it spends no quota and works even on an account with no plan, so it answers both "is this key valid" and "what am I entitled to". ``` curl -H "Authorization: Bearer $KEY" https://api.publicwww.com/v1/account ``` ``` { "plan": "enterprise", "plan_until": 1819461840, "full_access": true, "quota": { "searches": { "limit": 300, "used": 12, "resets_at": 1787961600 }, "snippets": { "limit": 100, "used": 3, "resets_at": 1787961600 } }, "limits": { "disclosed_positions": 4294967295, "max_per_page": 1000000, "max_per_page_snippets": 10000 } } ``` ## What can go wrong | Status | Code | Meaning | | --- | --- | --- | | 401 | `missing_key` | No `Authorization: Bearer` header. A key in the query string does not count. | | 401 | `invalid_key` | The key does not name an account. Check for a stray newline or quote. | | 403 | `plan_required` | The key is fine; the account has no paid plan. | A `401` also carries a `WWW-Authenticate: Bearer` header, so http clients that handle authentication generically behave sensibly. ## OAuth 2.1 for applications An application that works on behalf of other people - an assistant, an integration, a hosted service - should not ask each of them to copy a token. It sends them to PublicWWW instead: they sign in, approve the application, and it receives a token of its own. That token is sent as `Authorization: Bearer` like any other and opens the whole API and the [MCP server](https://publicwww.com/docs/mcp/) at `https://api.publicwww.com/mcp`, under the account's plan, quota and rate limit. | What | Where | | --- | --- | | Authorization server metadata (RFC 8414) | `https://publicwww.com/.well-known/oauth-authorization-server` | | Protected resource metadata (RFC 9728) | `https://api.publicwww.com/.well-known/oauth-protected-resource` | | Authorization endpoint | `https://publicwww.com/oauth/authorize` | | Token endpoint | `https://publicwww.com/oauth/token` | | Revocation endpoint (RFC 7009) | `https://publicwww.com/oauth/revoke` | ### Identifying the application There is no client registration. The `client_id` is the https URL of a small JSON document the application publishes - a client metadata document. PublicWWW reads it every time someone connects, so the name and return addresses are always current, and the person approving sees which host published them. ``` { "client_id": "https://app.example.com/oauth/client.json", "client_name": "Example App", "redirect_uris": ["https://app.example.com/oauth/callback"], "grant_types": ["authorization_code"], "response_types": ["code"], "token_endpoint_auth_method": "none" } ``` - `client_id` inside the document must be exactly the URL it is served from. The document is fetched over https, from a URL with a path, without following redirects; it must answer within 5 seconds and stay under 64 KB. - `redirect_uris` are https addresses, or http on `127.0.0.1`, `localhost` or `[::1]` for an application running on the person's own computer - there any port matches. Custom schemes such as `myapp://` are not accepted. - Every application is a public client: the token request carries no secret, whatever `token_endpoint_auth_method` the document names. The authorization code is protected by PKCE instead. ### The flow Authorization code with PKCE; `S256` is the only method. Send the person to the authorization endpoint: ``` https://publicwww.com/oauth/authorize ?response_type=code &client_id=https%3A%2F%2Fapp.example.com%2Foauth%2Fclient.json &redirect_uri=https%3A%2F%2Fapp.example.com%2Foauth%2Fcallback &code_challenge= &code_challenge_method=S256 &state= ``` They sign in with a one-time code sent by email if they have not already, see the application's name, the host of its document and where they will return, and press Allow or Cancel. Back at `redirect_uri` come `code`, your `state` and `iss=https://publicwww.com` (RFC 9207). A code is valid for ten minutes and works once. Exchange it: ``` curl https://publicwww.com/oauth/token \ -d grant_type=authorization_code \ -d code="$CODE" \ -d code_verifier="$VERIFIER" \ -d client_id=https://app.example.com/oauth/client.json \ -d redirect_uri=https://app.example.com/oauth/callback ``` ``` { "access_token": "", "token_type": "Bearer", "scope": "mcp" } ``` `scope` may be left out: there is one scope, `mcp`, and it covers the whole API. `resource` (RFC 8707) may be left out too; if sent, it is `https://api.publicwww.com/mcp` or `https://api.publicwww.com`. ### How long a token lives Until it is revoked - there is no expiry and no refresh token. An integration that works today keeps working tomorrow without anyone touching it. A token is revoked only on purpose: the person disconnects the application on their [profile page](https://publicwww.com/profile/api), the application revokes it itself, or the account is deleted. ``` curl https://publicwww.com/oauth/revoke \ -d token="$TOKEN" \ -d client_id=https://app.example.com/oauth/client.json ``` The revocation endpoint always answers `200`, whether or not the token existed. ### OAuth errors | Where | Code | Meaning | | --- | --- | --- | | Authorization | error page | The `client_id` document could not be read, or `redirect_uri` is not listed in it. The person is not sent back: an address that was not verified is never followed. | | Authorization | `invalid_request` | No `code_challenge`, or a method other than `S256`. | | Authorization | `unsupported_response_type` | Anything but `response_type=code`. | | Authorization, token | `invalid_target` | A `resource` other than the API. | | Authorization | `access_denied` | The person pressed Cancel. | | Token | `invalid_grant` | The code is unknown, used, expired or issued to another `client_id`; or `code_verifier` or `redirect_uri` does not match. | | Token | `unsupported_grant_type` | Anything but `authorization_code`. | Authorization errors other than the error page come back to `redirect_uri` as `error`, `error_description`, `state` and `iss`; token errors are a `400` with the same two fields in JSON. Source: https://publicwww.com/docs/api/authentication/ --- # Making requests `/v1/search` takes the same query you would type into the search box, plus a few parameters. It answers to `GET` and to `POST`; the parameters are the same either way. ## Parameters | Name | Default | Meaning | | --- | --- | --- | | `query` | required | The search string. Same syntax as the website - see [query syntax](https://publicwww.com/docs/query-syntax/). | | `page` | 1 | 1-based. | | `per_page` | 100 | Up to your plan's row limit, and so is `page × per_page`: a plan covers the first N rows of a query, paging does not go past them (`400 page_too_deep`); `/v1/account` reports it as `max_per_page`. | | `snippets` | off | `1` to include the matching text. Spends snippet quota. | | `format` | `json` | One of six - see [response formats](https://publicwww.com/docs/api/formats/). | | `columns` | depends on format | Comma-separated subset of `domain`, `url`, `rank`, `ranked`, `snippets`. | | `delimiter` | `;` / tab | For `csv` and `tsv`. | | `header` | off | `1` to put a header line on `csv` and `tsv`. | ## GET ``` curl -H "Authorization: Bearer $KEY" \ "https://api.publicwww.com/v1/search?query=%22angular.min.js%22&page=2&per_page=50" ``` Remember to url-encode the query. Quotes, slashes and `+` all matter. ## POST The same parameters as a JSON body. Use it when the query is long or has several phrases: a multi-line query in a url runs into length limits in proxies and clients long before the server minds. ``` curl https://api.publicwww.com/v1/search \ -H "Authorization: Bearer $KEY" \ -H "Content-Type: application/json" \ -d '{"query": ["\"angular.min.js\"", "\"bootstrap.min.css\""], "per_page": 50, "snippets": true}' ``` An array of phrases means all of them, exactly as separating them with newlines in the `query` string would. In the example above 278 sites carry the first phrase and 99 carry both. JSON types are understood: `true` works where the query string needs `1`. When a parameter is given in both the url and the body, the body wins. ## The response | Field | Meaning | | --- | --- | | `total` | How many sites match, in the whole index. A real count, not an estimate. | | `total_pages` | `total` divided by `per_page`, rounded up. | | `returned` | How many rows this page actually carries. | | `truncated` | Whether your plan's disclosed-position limit removed any of them. | | `took_ms` | How long the search took, in milliseconds. | | `results` | The rows. | ### A row | Field | Meaning | | --- | --- | | `domain` | The site. | | `url` | The page the match was found on, which for `depth:` searches is not the home page. | | `rank` | Position in the ranking, lower being more popular. `null` when the site has no rank. | | `ranked` | `false` exactly when `rank` is `null`. | | `snippets` | Only with `snippets=1`. Up to five `{"text", "match"}` pairs, where `match` is what matched and `text` is it with surrounding context. | ## Paging and bulk Page through with `page`, or ask for everything at once with a large `per_page` - up to `max_per_page` from `/v1/account`, which on a paid plan is a million. There is no separate export endpoint; the answer is written out as it is built, so a million rows is not also a million rows held in memory somewhere. Source: https://publicwww.com/docs/api/requests/ --- # Response formats One search resource, six spellings of the answer. Pick with `format=`; JSON is the default and the one the others are described in terms of. | `format` | Content-Type | Shape | | --- | --- | --- | | `json` | `application/json` | One object, results in an array. | | `ndjson` | `application/x-ndjson` | One JSON object per line. The first line is the metadata, tagged `"object":"meta"`. | | `xml` | `application/xml` | The same document as XML, rows as ``. | | `csv` | `text/csv` | Semicolon separated, no header line. | | `tsv` | `text/tab-separated-values` | As CSV, tab separated. | | `txt` | `text/plain` | One url per line. | `jsonl` is accepted as another name for `ndjson`. ## Which to use **json** for anything that fits in memory. **ndjson** for anything that does not: there is no enclosing array to wait for, the metadata arrives before the rows, and a reader can start work on the first result while the rest is still arriving. **csv**, **tsv** and **txt** for spreadsheets, shell pipelines, and for moving a script over from the old export urls without changing its parser. ## ndjson ``` {"object":"meta","query":"\"angular.min.js\"","page":1,"per_page":2,"total":278,"total_pages":139,"returned":2,"truncated":false,"took_ms":2} {"domain":"imgbox.com","url":"https://imgbox.com/","rank":4187,"ranked":true} {"domain":"angularjs.org","url":"https://angularjs.org/","rank":12376,"ranked":true} ``` ## Choosing the columns `json` and `xml` return every field. The flat formats default to the familiar ones instead, so a script coming from the old export urls needs no parser change: | Request | Output | | --- | --- | | `format=csv` | `imgbox.com;4187` | | `format=csv&columns=url,rank` | `https://imgbox.com/;4187` | | `format=csv&columns=domain` | `imgbox.com` | | `format=txt` | `https://imgbox.com/` | | `format=csv&snippets=1` | `imgbox.com;4187;the matching text` | | `format=csv&header=1` | a `domain;rank` line first | | `format=csv&delimiter=,` | `imgbox.com,4187` | `columns` works for every format, so `format=json` with `columns=domain` returns objects with only that field. ## Details of the flat formats - A value is quoted only when it would otherwise break the row - it contains the delimiter, a quote or a newline. Ordinary `domain;rank` output is bare. - Quotes inside a quoted value are doubled, as CSV expects. - Snippets, being a list, are joined with `...` into one cell. - An unranked site has an empty rank cell, which is how `null` spells itself here. - The totals cannot fit in a row, so they are in the `X-Total-Results`, `X-Returned-Results` and `X-Truncated` headers instead. Those are sent for every format. These are the new API's own serialisations, not a reissue of the old exports. The shape is familiar on purpose, but only [the old urls](https://publicwww.com/docs/api/legacy/) promise the exact bytes. ## Formats and errors `csv`, `tsv` and `txt` are shapes for rows and nothing else, so asking for one on `/v1/account` is `400 format_not_available`. Errors themselves come back as JSON, or as XML if that is what was asked for. Source: https://publicwww.com/docs/api/formats/ --- # Quotas and rate limits Two separate things bound what you can do: how many searches your plan allows per day, and how fast requests may arrive. Both are reported on every response, so a client can pace itself without having to provoke an error to find out where the edges are. ## Rate limit: ten requests per minute The limit is per account and is shared by the API and the [MCP server](https://publicwww.com/docs/mcp/): ten calls in a minute, whichever way they arrive. An eleventh request inside the window comes back **immediately** with `429 too_many_requests` and a `Retry-After` header giving the seconds until a slot frees up. The same number is in the body as `error.retry_after`. ``` HTTP/2 429 Retry-After: 18 { "error": { "code": "too_many_requests", "message": "At most 10 requests per minute.", "retry_after": 18 } } ``` Sleep for `Retry-After` seconds and repeat the request. Nothing was consumed and no quota was spent. The API never holds a connection open to slow you down. The old export urls do - they sleep a second at a time for up to half a minute before refusing - which is one of the reasons the API exists. ## Daily quota Your plan allows a number of searches per day. Searches with snippets fall within that allowance and have a smaller daily limit of their own inside it: Pro, for example, allows 100 searches a day, up to 30 of them with snippets. Both reset at the next UTC midnight, not 24 hours after use. - A search costs one from the search allowance. - A search with `snippets=1` costs one from the daily searches and one from the snippet limit. - `/v1/account` costs nothing. When the daily searches are used up, every search is refused with `429 quota_exceeded`, with snippets or without. When only the snippet limit is used up, searches with snippets are refused with `429 snippet_quota_exceeded`, and ordinary searches still work. Each refusal carries the limit, what has been used, and how long until the reset. ## Result depth A plan also decides how far down the ranking results stay disclosed - `disclosed_positions` from `/v1/account`. Rows past that point are left out rather than blanked, and when any were, `truncated` is `true` in the body and `X-Truncated: true` in the headers. This is the difference that matters most between the API and the website. A browser whose quota has run out quietly falls back to free-tier depth and shows less, which is fine for a person looking at a page. A script cannot see it happen, so the API refuses instead of shortening. ## Reading the current state Every authenticated response carries five headers: | Header | Meaning | | --- | --- | | `X-RateLimit-Limit` | Searches allowed today. | | `X-RateLimit-Remaining` | Searches left today. | | `X-RateLimit-Reset` | Unix time when the day's quota resets. | | `X-Snippets-Limit` | Snippet requests allowed today. | | `X-Snippets-Remaining` | Snippet requests left today. | Results carry three more: | Header | Meaning | | --- | --- | | `X-Total-Results` | How many sites match in the whole index. | | `X-Returned-Results` | How many rows this response carries. | | `X-Truncated` | `true` when the plan's depth limit removed rows. | ## Usage statistics `/v1/account` is the full picture in one call, and it spends nothing: ``` curl -H "Authorization: Bearer $KEY" https://api.publicwww.com/v1/account ``` ``` { "plan": "enterprise", "plan_until": 1819461840, "full_access": true, "quota": { "searches": { "limit": 300, "used": 12, "resets_at": 1787961600 }, "snippets": { "limit": 100, "used": 3, "resets_at": 1787961600 } }, "limits": { "disclosed_positions": 4294967295, "disclosed_positions_snippets": 4294967295, "max_per_page": 1000000, "max_per_page_snippets": 10000 } } ``` The older `https://publicwww.com/profile/api_status.xml?key=...` reports the same counters as XML and still works. It belongs to [the old urls](https://publicwww.com/docs/api/legacy/); new code should use `/v1/account`, which also reports the limits, not only the counts. Source: https://publicwww.com/docs/api/limits/ --- # Errors Every failure has the same shape and a stable `code`. Branch on the code - the message is written for people and may be reworded. ``` { "error": { "code": "invalid_key", "message": "That API key does not exist." } } ``` Some errors carry extra fields alongside those two: `parameter` for the one that was wrong, `retry_after` for how long to wait, `limit` and `used` for a spent quota. ## Every code | Status | Code | When | | --- | --- | --- | | 400 | `missing_query` | `query` was empty or absent. | | 400 | `unknown_format` | `format` is not one of the six. | | 400 | `unknown_column` | `columns` names a field that does not exist. | | 400 | `format_not_available` | A flat format was asked for where rows are not what is being returned. | | 400 | `per_page_too_large` | `per_page` above your plan's row limit. The limit is in the error. | | 400 | `invalid_json` | The POST body is not valid JSON. | | 401 | `missing_key` | No `Authorization: Bearer` header. | | 401 | `invalid_key` | The key does not name an account. | | 403 | `plan_required` | The account has no paid plan. | | 404 | `unknown_endpoint` | No such path. The known ones are listed in the error. | | 405 | `method_not_allowed` | Read-only API. Use GET, or POST a JSON body. | | 429 | `too_many_requests` | Arriving faster than ten requests per minute (API and MCP together). | | 429 | `quota_exceeded` | The day's search allowance is spent. | | 429 | `snippet_quota_exceeded` | The day's snippet allowance is spent. Searching without snippets still works. | ## What to do about each - **400** - your request is wrong and repeating it will not help. The `parameter` field says which one. - **401, 403** - your key or your plan. Not worth retrying until something changes. - **429 `too_many_requests`** - sleep `retry_after` seconds and repeat. Nothing was consumed. - **429 `quota_exceeded`** - the allowance returns at the next UTC midnight; `retry_after` says how far off that is. Retrying sooner will not help. - **5xx** - ours. Retry with a widening delay. ## Errors and formats Errors come back as JSON, or as XML when `format=xml` was asked for. The flat formats have no shape for an error, so a failed request that asked for `csv` gets JSON - which means a client reading CSV should check the status code rather than assume every 200-shaped body is rows. ## Reading the codes without reading this page `GET /` lists every code above, with its meaning, as JSON. It needs no key, so a client can be built against the whole set without anyone opening a browser. ``` curl https://api.publicwww.com/ ``` Source: https://publicwww.com/docs/api/errors/ --- # Clusters A [cluster](https://publicwww.com/docs/clusters/) is a saved list of websites. Through the API you can make one from a search or from your own list, combine clusters, and pull values out of the page source of every site in one - contacts, social profiles, analytics and tag ids, anything a regular expression can match. ## The endpoints | Endpoint | Method | What it does | | --- | --- | --- | | `/v1/clusters` | GET | The account's clusters, newest first: id, name, number of domains, creation time. | | `/v1/clusters` | POST | Create a cluster from a search (`query`) or from a list (`domains`); optional `name`. | | `/v1/clusters/{id}` | GET | The cluster and a page of its domains: `page`, `per_page` (up to 10000), `format=txt` for one domain per line. | | `/v1/clusters/combine` | POST | A new cluster from existing ones: `operation` and, or or diff, `clusters` - a list of ids. | | `/v1/clusters/{id}/extract` | GET, POST | Extract values with `presets` and `regex`, part by part: `offset`, `limit` (up to 1000 sites per call), `format` json, xml or csv. | | `/v1/clusters/presets` | GET | The ready-made expressions with their patterns. | | `/v1/clusters/{id}/rename` | POST | New `name`. | | `/v1/clusters/{id}/delete` | POST | Delete the cluster for good. | Everything that changes a cluster is a POST with a JSON body - no PUT or DELETE, so any client that can search can manage clusters too. The token, the rate limit and the error format are the same as for [search](https://publicwww.com/docs/api/requests/); the cluster numbers in your `/v1/account` answer show how many you have and how many extraction points are left today. ## Creating a cluster **From a search**: the results of the query, up to your plan's rows per report, become the cluster. It costs one search, the same as `/v1/search`. ``` curl https://api.publicwww.com/v1/clusters \ -H "Authorization: Bearer $PUBLICWWW_KEY" \ -H "Content-Type: application/json" \ -d '{"query": "\"googletagmanager.com/gtm.js\"", "name": "GTM sites"}' {"id": 7, "name": "GTM sites", "size": 100000, "created": "2026-10-10T20:21:30Z", "query": "\"googletagmanager.com/gtm.js\"", "total": 2412577, "index_complete": true} ``` **From a list**: domains or urls, as a JSON array or one per line. Only sites that are in the index are kept - `submitted` says how many you sent, `size` how many made it. A list costs nothing. ``` curl https://api.publicwww.com/v1/clusters \ -H "Authorization: Bearer $PUBLICWWW_KEY" \ -H "Content-Type: application/json" \ -d '{"domains": ["example.com", "https://www.example.org/about"], "name": "Prospects"}' ``` The plan caps the number of domains in a cluster, and an account keeps up to 100 clusters. With 100 already there, creating another answers `409 cluster_limit` - nothing is deleted on your behalf; delete the ones you no longer need first. ## Combining clusters ``` curl https://api.publicwww.com/v1/clusters/combine \ -H "Authorization: Bearer $PUBLICWWW_KEY" \ -H "Content-Type: application/json" \ -d '{"operation": "diff", "clusters": [7, 3], "name": "GTM, not yet contacted"}' ``` `and` keeps the domains that are in every cluster, `or` those in any of them, and `diff` those in the first cluster but not in the second - exactly two. Combining costs nothing. ## Extracting data Extraction reads the indexed pages of every site in the cluster and returns what the expressions capture, one column per expression. The easiest way is a preset: | Preset | What it pulls out | | --- | --- | | `email` | Addresses from mailto: links | | `phone` | Numbers from tel: links and schema.org markup | | `whatsapp`, `telegram`, `viber`, `line` | WhatsApp and Viber numbers, Telegram usernames, LINE account links | | `facebook`, `instagram`, `x`, `linkedin`, `youtube`, `tiktok`, `pinterest`, `threads`, `bluesky`, `discord`, `github` | Links to the site's social profiles (x also takes twitter.com, linkedin - people's and company profiles, discord - server invites, github - user and organization profiles) | | `google_play`, `app_store` | Ids of the site's mobile apps | Or write your own: a regular expression in slashes (or pipes) with optional `i`, `m`, `s`, `u` flags, up to 200 characters. The first capturing group is the value - the same rule as `'snipexp:'` (https://publicwww.com/docs/query-syntax/regex/). Up to ten expressions per call, presets included. ``` curl https://api.publicwww.com/v1/clusters/7/extract \ -H "Authorization: Bearer $PUBLICWWW_KEY" \ -H "Content-Type: application/json" \ -d '{"presets": ["email", "linkedin"], "regex": ["/data-site-id=\"([0-9]+)\"/i"], "limit": 1000}' { "cluster": 7, "name": "GTM sites", "size": 100000, "offset": 0, "scanned": 1000, "in_index": 1000, "with_matches": 941, "next_offset": 1000, "regex": ["/mailto:(...)/i", "/(https?:\\/\\/(...)linkedin\\.com\\/company\\/(...))/i", "/data-site-id=\"([0-9]+)\"/i"], "points_used": 1834.2, "points_left": 98165, "rows": [ { "domain": "example.com", "values": [["info@example.com"], ["https://www.linkedin.com/company/example"], []], "matches": 2 } ] } ``` **Part by part.** One call goes through up to 1000 sites of the cluster, starting at `offset`. Call again with `offset` set to `next_offset` until it comes back `null`. Sites where nothing matched are left out; `skip_empty=0` lists them too. `format=csv` gives a row per site - the domain, then a column per expression - with the next offset in the `X-Next-Offset` header. **Points.** Extraction spends the daily extraction allowance of your plan: each site found in the index costs as many points as values were found on it, 0.1 if none. When the points run out the call stops early with `"stopped": "extract_quota_exceeded"` and returns what it has; a call with nothing left gets `429 extract_quota_exceeded`. Try an expression on a small `limit` first - see [cluster limits](https://publicwww.com/docs/clusters/limits/). ## A whole cluster, in code Create a cluster from a search and write the extracted values of every site into a CSV file. The [client libraries](https://github.com/publicwww-com) have the same as ready functions and a command line. ### Python ``` import csv, os, time, requests KEY = os.environ["PUBLICWWW_KEY"] BASE = "https://api.publicwww.com" H = {"Authorization": "Bearer " + KEY} def call(method, path, body=None): while True: r = requests.request(method, BASE + path, headers=H, json=body) if r.status_code == 429 and r.json()["error"]["code"] == "too_many_requests": time.sleep(int(r.headers.get("Retry-After", 30))) continue r.raise_for_status() return r.json() cluster = call("POST", "/v1/clusters", {"query": '"googletagmanager.com/gtm.js"'}) offset = 0 with open("extract.csv", "w", newline="") as f: out = csv.writer(f) while offset is not None: part = call("POST", "/v1/clusters/%d/extract" % cluster["id"], {"presets": ["email", "linkedin"], "offset": offset}) for row in part["rows"]: out.writerow([row["domain"]] + [" ".join(v) for v in row["values"]]) offset = part["next_offset"] ``` ### JavaScript (Node 18+) ``` const BASE = "https://api.publicwww.com"; const H = { Authorization: "Bearer " + process.env.PUBLICWWW_KEY, "Content-Type": "application/json" }; async function call(method, path, body) { for (;;) { const r = await fetch(BASE + path, { method, headers: H, body: body && JSON.stringify(body) }); const data = await r.json(); if (r.status === 429 && data.error.code === "too_many_requests") { await new Promise(ok => setTimeout(ok, 1000 * (r.headers.get("Retry-After") || 30))); continue; } if (!r.ok) throw new Error(data.error.message); return data; } } const cluster = await call("POST", "/v1/clusters", { query: '"hotjar.com"' }); for (let offset = 0; offset !== null; ) { const part = await call("POST", `/v1/clusters/${cluster.id}/extract`, { presets: ["email", "phone"], offset }); for (const row of part.rows) console.log(row.domain, row.values.map(v => v.join(" ")).join(";")); offset = part.next_offset; } ``` ### PHP ``` $method, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv ("PUBLICWWW_KEY"), "Content-Type: application/json"], CURLOPT_POSTFIELDS => $body === null ? null : json_encode ($body), ]); $data = json_decode (curl_exec ($ch), true); if (isset ($data ["error"])) throw new Exception ($data ["error"]["message"]); return $data; } $cluster = call ("POST", "/v1/clusters", ["query" => '"jquery.min.js"']); $out = fopen ("extract.csv", "w"); for ($offset = 0; $offset !== null; ) { $part = call ("POST", "/v1/clusters/" . $cluster ["id"] . "/extract", ["presets" => ["email", "phone"], "offset" => $offset]); foreach ($part ["rows"] as $row) fputcsv ($out, array_merge ([$row ["domain"]], array_map (fn ($v) => join (" ", $v), $row ["values"]))); $offset = $part ["next_offset"]; } ``` ### Go ``` package main import ( "bytes" "encoding/json" "fmt" "net/http" "os" "strings" ) func call(method, path string, body, out any) error { b, _ := json.Marshal(body) req, _ := http.NewRequest(method, "https://api.publicwww.com"+path, bytes.NewReader(b)) req.Header.Set("Authorization", "Bearer "+os.Getenv("PUBLICWWW_KEY")) req.Header.Set("Content-Type", "application/json") resp, err := http.DefaultClient.Do(req) if err != nil { return err } defer resp.Body.Close() if resp.StatusCode >= 300 { return fmt.Errorf("publicwww: %s", resp.Status) } return json.NewDecoder(resp.Body).Decode(out) } func main() { var cluster struct{ ID int `json:"id"` } if err := call("POST", "/v1/clusters", map[string]any{"query": `"googletagmanager.com/gtm.js"`}, &cluster); err != nil { panic(err) } for offset := 0; ; { var part struct { Rows []struct { Domain string `json:"domain"` Values [][]string `json:"values"` } `json:"rows"` NextOffset *int `json:"next_offset"` } path := fmt.Sprintf("/v1/clusters/%d/extract", cluster.ID) if err := call("POST", path, map[string]any{"presets": []string{"email", "phone"}, "offset": offset}, &part); err != nil { panic(err) } for _, r := range part.Rows { cells := []string{r.Domain} for _, v := range r.Values { cells = append(cells, strings.Join(v, " ")) } fmt.Println(strings.Join(cells, ";")) } if part.NextOffset == nil { break } offset = *part.NextOffset } } ``` ### Ruby ``` require "json" require "net/http" def call(path, body) uri = URI("https://api.publicwww.com" + path) req = Net::HTTP::Post.new(uri, "Authorization" => "Bearer #{ENV.fetch('PUBLICWWW_KEY')}", "Content-Type" => "application/json") req.body = body.to_json res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) } data = JSON.parse(res.body) raise data["error"]["message"] if data["error"] data end cluster = call("/v1/clusters", { query: '"hotjar.com"' }) offset = 0 while offset part = call("/v1/clusters/#{cluster['id']}/extract", { presets: %w[email phone], offset: offset }) part["rows"].each { |r| puts [r["domain"], *r["values"].map { |v| v.join(" ") }].join(";") } offset = part["next_offset"] end ``` ## Errors | Status and code | Meaning | | --- | --- | | `404 cluster_not_found` | No cluster with that id on this account. | | `409 cluster_limit` | The account already keeps 100 clusters. | | `400 invalid_regex` | An expression is not a PCRE in slashes or pipes, up to 200 characters. | | `400 unknown_preset` | No such preset; the answer lists them. | | `400 missing_source`, `ambiguous_source` | Creating needs either `query` or `domains`. | | `429 extract_quota_exceeded` | Today's extraction points are used up. | The full list is on the [errors](https://publicwww.com/docs/api/errors/) page and in the API's own description at [https://api.publicwww.com/](https://api.publicwww.com/). In an AI assistant the same operations are [MCP tools](https://publicwww.com/docs/mcp/tools/). Source: https://publicwww.com/docs/api/clusters/ --- # Code examples The same search in several languages: find sites carrying a given script, page through the results, and back off politely when told to wait. Put your key in an environment variable rather than in the file. The same, packaged as small clients with a command line - standard library only: [Python](https://github.com/publicwww-com/publicwww-api-python), [JavaScript](https://github.com/publicwww-com/publicwww-api-javascript), [PHP](https://github.com/publicwww-com/publicwww-api-php), [Go](https://github.com/publicwww-com/publicwww-api-go), [Ruby](https://github.com/publicwww-com/publicwww-api-ruby). In a spreadsheet: [Google Sheets](https://publicwww.com/docs/api/sheets/). In a prospecting table: [Clay](https://publicwww.com/docs/api/clay/). ## curl ``` export PUBLICWWW_KEY=... # One page of results curl -H "Authorization: Bearer $PUBLICWWW_KEY" \ --get --data-urlencode 'query="angular.min.js"' --data 'per_page=20' \ https://api.publicwww.com/v1/search # Every match, as a plain list of urls curl -H "Authorization: Bearer $PUBLICWWW_KEY" \ --get --data-urlencode 'query="angular.min.js"' \ --data 'format=txt&per_page=100000' \ https://api.publicwww.com/v1/search > sites.txt # A long, multi-line query is easier as a POST curl https://api.publicwww.com/v1/search \ -H "Authorization: Bearer $PUBLICWWW_KEY" \ -H "Content-Type: application/json" \ -d '{"query": ["\"angular.min.js\"", "\"bootstrap.min.css\""], "per_page": 50}' ``` ## Python ``` import os, time, requests KEY = os.environ["PUBLICWWW_KEY"] BASE = "https://api.publicwww.com" def search(query, **params): """One page of results, waiting out the rate limit if asked to.""" while True: r = requests.get(BASE + "/v1/search", headers={"Authorization": "Bearer " + KEY}, params={"query": query, **params}) if r.status_code == 429: body = r.json()["error"] if body["code"] != "too_many_requests": raise RuntimeError(body["message"]) # quota, not pace time.sleep(int(r.headers.get("Retry-After", 30))) continue r.raise_for_status() return r.json() page = search('"angular.min.js"', per_page=20) print(page["total"], "sites match") for row in page["results"]: print(row["rank"], row["domain"], row["url"]) ``` ### Streaming a large result set ``` import json, os, requests r = requests.get("https://api.publicwww.com/v1/search", headers={"Authorization": "Bearer " + os.environ["PUBLICWWW_KEY"]}, params={"query": '"angular.min.js"', "format": "ndjson", "per_page": 1000000}, stream=True) r.raise_for_status() meta = None for line in r.iter_lines(): if not line: continue obj = json.loads(line) if obj.get("object") == "meta": # always the first line meta = obj print("expecting", meta["returned"], "of", meta["total"]) continue print(obj["domain"]) ``` ## PHP ``` '"angular.min.js"', "per_page" => 20, )); $ch = curl_init ($url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ch, CURLOPT_HTTPHEADER, array ("Authorization: Bearer " . $key)); $body = curl_exec ($ch); $status = curl_getinfo ($ch, CURLINFO_HTTP_CODE); curl_close ($ch); $data = json_decode ($body, true); if ($status != 200) { die ($data ["error"] ["code"] . ": " . $data ["error"] ["message"] . "\n"); } echo $data ["total"] . " sites match\n"; foreach ($data ["results"] as $r) { echo $r ["rank"] . "\t" . $r ["domain"] . "\t" . $r ["url"] . "\n"; } ``` ## JavaScript (Node) ``` const KEY = process.env.PUBLICWWW_KEY; const BASE = "https://api.publicwww.com"; async function search (query, params = {}) { const url = new URL (BASE + "/v1/search"); url.searchParams.set ("query", query); for (const [k, v] of Object.entries (params)) url.searchParams.set (k, v); for (;;) { const res = await fetch (url, { headers: { Authorization: `Bearer ${KEY}` } }); const body = await res.json (); if (res.status === 429 && body.error.code === "too_many_requests") { await new Promise (r => setTimeout (r, body.error.retry_after * 1000)); continue; // told to wait, not refused } if (!res.ok) throw new Error (`${body.error.code}: ${body.error.message}`); return body; } } const page = await search ('"angular.min.js"', { per_page: 20 }); console.log (page.total, "sites match"); for (const r of page.results) console.log (r.rank, r.domain, r.url); ``` ## Go ``` package main import ( "encoding/json" "fmt" "net/http" "net/url" "os" ) type Result struct { Domain string `json:"domain"` URL string `json:"url"` Rank *int `json:"rank"` // nil when the site has no rank } type Page struct { Total int `json:"total"` Results []Result `json:"results"` } func main () { q := url.Values{} q.Set ("query", `"angular.min.js"`) q.Set ("per_page", "20") req, _ := http.NewRequest ("GET", "https://api.publicwww.com/v1/search?"+q.Encode (), nil) req.Header.Set ("Authorization", "Bearer "+os.Getenv ("PUBLICWWW_KEY")) res, err := http.DefaultClient.Do (req) if err != nil { panic (err) } defer res.Body.Close () if res.StatusCode != 200 { fmt.Println ("http", res.StatusCode, res.Header.Get ("Retry-After")) os.Exit (1) } var page Page json.NewDecoder (res.Body).Decode (&page) fmt.Println (page.Total, "sites match") for _, r := range page.Results { fmt.Println (r.Domain, r.URL) } } ``` ## Ruby ``` require "json" require "net/http" KEY = ENV.fetch ("PUBLICWWW_KEY") uri = URI ("https://api.publicwww.com/v1/search") uri.query = URI.encode_www_form (query: '"angular.min.js"', per_page: 20) req = Net::HTTP::Get.new (uri) req["Authorization"] = "Bearer #{KEY}" res = Net::HTTP.start (uri.host, uri.port, use_ssl: true) { |http| http.request (req) } body = JSON.parse (res.body) abort "#{body['error']['code']}: #{body['error']['message']}" unless res.code == "200" puts "#{body['total']} sites match" body["results"].each { |r| puts [r["rank"], r["domain"], r["url"]].join ("\t") } ``` ## Loading into a spreadsheet or a shell pipeline ``` # A csv of domain and rank, ready for a spreadsheet curl -H "Authorization: Bearer $PUBLICWWW_KEY" \ --get --data-urlencode 'query="angular.min.js"' \ --data 'format=csv&header=1&delimiter=,&per_page=10000' \ https://api.publicwww.com/v1/search > sites.csv # Just the domains, one per line, into whatever comes next curl -H "Authorization: Bearer $PUBLICWWW_KEY" \ --get --data-urlencode 'query="angular.min.js"' \ --data 'format=csv&columns=domain&per_page=10000' \ https://api.publicwww.com/v1/search | sort -u ``` ## Things worth getting right - **Tell the two 429s apart.** `too_many_requests` means slow down and repeat. `quota_exceeded` means come back tomorrow; retrying in a loop will not help and will look like an attack. - **Honour `Retry-After`** rather than guessing an interval. It is the exact number of seconds until a slot frees. - **Check `truncated`** before treating a result set as complete. - **Expect `rank: null`.** Plenty of indexed sites have no ranking; a language with non-nullable integers needs a pointer or an option type, as the Go example shows. - **Page with `page`** rather than re-running variations of the query to reach further rows. Source: https://publicwww.com/docs/api/examples/ --- # Google Sheets The search in a spreadsheet: a formula that lists the websites whose page source contains a fragment of code, and a menu that exports a whole query to a new sheet. Free to copy, runs with your API token. ``` =PUBLICWWW(A1) websites whose page source contains the query in A1 =PUBLICWWW(A1, 50, "url,rank") 50 rows, only the url and rank columns =PUBLICWWW_COUNT(A1) how many websites match ``` ## Setting it up 1. Open a spreadsheet, then **Extensions > Apps Script**. 2. Replace the contents of `Code.gs` with [Code.gs](https://github.com/publicwww-com/publicwww-google-sheets/blob/main/Code.gs) from [the repository](https://github.com/publicwww-com/publicwww-google-sheets) and save. 3. Reload the spreadsheet. A **PublicWWW** menu appears; choose **Set API token** and paste a token from your [profile page](https://publicwww.com/profile/api). The API needs a paid plan. 4. Google asks once to authorize the script: it reads and writes this spreadsheet only, and connects to `api.publicwww.com`. The token is kept in the script's properties, so anyone who can edit this spreadsheet's script can read it. Share edit access accordingly, or give the spreadsheet a token of its own that you can delete on the profile page. ## Writing the query The query is the same as in the search box - see [query syntax](https://publicwww.com/docs/query-syntax/). Quotes matter: `"angular.min.js"` with the quotes is that exact string, without them it is several words. Inside a formula a quote is written twice, `=PUBLICWWW("""angular.min.js""")`, so it is easier to type the query, quotes included, into a cell and refer to it: `=PUBLICWWW(A1)`. ## The functions - `PUBLICWWW(query, [rows], [columns], [header])` - one website per row, the most popular first. `rows` - 10 by default, up to 1000 in a formula. `columns` - any of `domain`, `url`, `rank`, comma separated; all three by default. `header` - `TRUE` puts the column names on the first row. `rank` is empty for a website without a popularity rank; nothing found gives an empty cell. - `PUBLICWWW_COUNT(query)` - the number of matching websites. A formula runs a search when it is entered or its arguments change, and an answer is kept for six hours, so reopening the sheet does not spend searches again. Each new formula is one search from the plan's daily quota. ## Exporting a whole query **PublicWWW > Export a query to a new sheet** writes every row your plan covers for the query into a new sheet, with the totals in a note on its first cell. A very large export can run into Google's limit of six minutes per script run; for lists of hundreds of thousands of rows, ask the [API](https://publicwww.com/docs/api/requests/) directly - `format=csv` opens in any spreadsheet. ## When a cell says #ERROR! Hover over the cell for the reason. | Reason | What to do | | --- | --- | | `No API token yet` | PublicWWW > Set API token. | | `invalid_key` | The token was deleted; set a new one. | | `plan_required` | The API needs a [paid plan](https://publicwww.com/prices.html). | | `too_many_requests` | More than 10 requests a minute; wait the seconds shown. | | `quota_exceeded` | The day's searches are used up; they reset at midnight UTC. | All codes: [Errors](https://publicwww.com/docs/api/errors/). Source: https://publicwww.com/docs/api/sheets/ --- # Clay In Clay, PublicWWW plugs in through Clay's HTTP API with your token: check each company's site for a piece of code, or build a table of companies from one search. The API needs a paid plan. ## Does this company's site use it? An enrichment column that asks, for every row, whether the company's site contains a code fragment - a tag manager or analytics script, a chat widget, a CMS plugin. Add an **HTTP API** column: | Setting | Value | | --- | --- | | Method | `POST` | | Endpoint | `https://api.publicwww.com/v1/search` | | Headers | `Authorization: Bearer YOUR_TOKEN` `Content-Type: application/json` | | Body | the JSON below, with the row's domain column inserted where it says `DOMAIN` | ``` { "query": "site:DOMAIN \"googletagmanager.com/gtm.js\"", "per_page": 1 } ``` Read `total` from the response: `0` - the code is not on the site, more than `0` - it is, and `results` shows the page it was found on. `site:` with a domain searches the pages of that one site; the rest of the query is the usual [query syntax](https://publicwww.com/docs/query-syntax/). ## A table of companies from one search The other way round: start from the code and get the companies. One request returns up to your plan's rows per query: ``` { "query": "\"static.hotjar.com\" site:de", "per_page": 1000 } ``` Each item of `results` is one site - `domain`, `url` and `rank` (1 is the most popular; empty for a site without a rank). Turn the list into rows, then enrich them with Clay's other sources as usual. ## Searches and speed - Every request is a search from your plan's daily allowance, so a check per row spends one search per row. For thousands of rows the second way is cheaper: one search for the whole list, then match the domains in Clay. - At most 10 requests a minute go through per account. Clay runs rows in parallel, so run a large table in batches; a request over the limit gets `429` with a `Retry-After` header. - Errors and their codes: [Errors](https://publicwww.com/docs/api/errors/). Everything the API takes: [Making requests](https://publicwww.com/docs/api/requests/). Source: https://publicwww.com/docs/api/clay/ --- # The old export urls Before there was an API, results were downloaded by adding `?export=` and a key to an ordinary search url. Those urls still work, exactly as they always have, byte for byte. **They are not going away.** ``` https://publicwww.com/websites/%22angular.min.js%22/?export=csv&key=YOUR_KEY ``` | `export=` | Returns | | --- | --- | | `urls` | One url per line. | | `csv` | `domain;rank` | | `csvu` | `url;rank` | | `csvsnippets` | `domain;rank;snippet` | | `csvsnippetsu` | `url;rank;snippet` | | `cluster` | Saves the results as a [cluster](https://publicwww.com/docs/clusters/) instead of downloading them. | `&delimiterColumns=` and `&delimiterSnippets=` change the separators, and `https://publicwww.com/profile/api_status.xml` reports the day's usage as XML. Pass the key in the `Authorization: Bearer ` header; the older `?key=` form still works but is deprecated, because a key in the address ends up in browser history and server logs. ## Why they are separate These urls are the compatibility layer, and keeping them that way is what lets the API be a normal modern one. Their output is pinned byte for byte by a test that runs on every change, so a script written years ago keeps parsing what it has always parsed. Nothing new is added to them. ## Moving a script over The nearest equivalents: | Old | New | | --- | --- | | `?export=csv` | `format=csv` | | `?export=csvu` | `format=csv&columns=url,rank` | | `?export=urls` | `format=txt` | | `?export=csvsnippets` | `format=csv&snippets=1` | | `?export=csvsnippetsu` | `format=csv&columns=url,rank,snippets&snippets=1` | | `&key=` | `Authorization: Bearer` | | `&delimiterColumns=` | `delimiter=` | | the query in the url path | `query=`, or a JSON body | | `api_status.xml` | `/v1/account` | The columns line up, so a parser usually does not change. What does change is worth having: - A bad key is `401` with a JSON body, not `200` with the words `Wrong API key` in it where the rows should be. - Arriving too fast is `429` straight away with a `Retry-After`, instead of the connection being held open for up to half a minute and then refused. - A spent quota is an error. On the old urls it quietly drops you to free-tier limits and returns fewer rows, with nothing in the response saying so. - A shortened answer is marked - `X-Truncated`. - Paging, so a client need not download everything to look at the first twenty. Source: https://publicwww.com/docs/api/legacy/ --- # MCP Server The same search, for AI assistants and agents. PublicWWW runs a remote MCP (Model Context Protocol) server: connect it to an assistant once, and the assistant can search page source for you, save the sites it finds as clusters and pull data out of their pages, and check what is left of your quota. Server URL `https://api.publicwww.com/mcp` ## What the assistant can do Ten tools. `search` runs a query in the [usual syntax](https://publicwww.com/docs/query-syntax/) and returns the sites, with fragments of their source if asked; `account` tells your plan and how many searches are left today; `read_docs` reads this documentation and the price list; seven more work with [clusters](https://publicwww.com/docs/clusters/) - saved lists of sites the assistant can build, combine and extract data from. Ask in plain words - the assistant writes the query: - "Which sites load angular.min.js? Show the first 20." - "Find sites that load both Bootstrap and Google Tag Manager, and show me the code around the match." - "Save the sites that load static.hotjar.com as a cluster and get their contact emails." - "How many PublicWWW searches do I have left today?" - "What does the Business plan include, and how is it different from Pro?" More on the arguments and the answers - [Tools](https://publicwww.com/docs/mcp/tools/). ## Connecting your client Add a remote MCP server with the URL above, then sign in. Assistants that can do it send you to PublicWWW to press Allow; the rest take a token from your profile in a header - see [Signing in](https://publicwww.com/docs/mcp/connecting/). [**Claude** On the web, in the desktop app and in Claude Code. Signs in with OAuth.](https://publicwww.com/docs/mcp/claude/) [**ChatGPT** Added as a custom MCP server under Plugins. Signs in with OAuth.](https://publicwww.com/docs/mcp/chatgpt/) [**Code editors and CLI agents** VS Code, Cursor, Gemini CLI, Codex CLI, DeepSeek Harness and others. A token in a header.](https://publicwww.com/docs/mcp/editors/) [**Your own code** The protocol as we serve it, and a call with curl.](https://publicwww.com/docs/mcp/developers/) Plugins, ready-made configuration files and an agent skill: [github.com/publicwww-com/publicwww-mcp](https://github.com/publicwww-com/publicwww-mcp). ## Who can use it Accounts with a paid plan. A free account can connect, but its tool calls are refused with `plan_required`, except `read_docs` - this documentation and the prices. The server uses the plan's daily searches, shared with the API and the website. The numbers are in [Limits and errors](https://publicwww.com/docs/mcp/limits/) and on the [pricing page](https://publicwww.com/prices.html). Source: https://publicwww.com/docs/mcp/ --- # Signing in The server needs to know whose account a search is charged to. There are two ways to tell it, and both end in the same kind of token. The MCP server works with a [paid plan](https://publicwww.com/prices.html). A free account can connect, but every tool call except `read_docs` answers `plan_required` - see [Limits and errors](https://publicwww.com/docs/mcp/limits/). ## Sign in with OAuth For Claude, ChatGPT and other assistants that offer it. Nothing to copy: 1. Add the server URL `https://api.publicwww.com/mcp` and choose OAuth if the assistant asks how to authenticate. 2. Leave OAuth client ID and client secret empty, if the form has them: PublicWWW does not register clients, it recognises each assistant by a document the assistant publishes on its own site. 3. The assistant opens PublicWWW. Sign in with the one-time code we email you, if you are not signed in already. 4. You see which application is asking, the site that vouches for it and where you will be sent back. Press **Allow**. The connection then appears on your [profile page](https://publicwww.com/profile/api), tab API / MCP, under **Connected apps**. ## Or use a token For code editors, command-line agents and your own scripts. Issue a token on your [profile page](https://publicwww.com/profile/api) and give the client this header: ``` Authorization: Bearer ``` It is the same token the [API](https://publicwww.com/docs/api/) uses, and up to ten can exist at once, so give each client its own: if one leaks, delete it alone. Keep tokens out of files you commit - most clients can read the token from an environment variable or ask for it once; the [client pages](https://publicwww.com/docs/mcp/editors/) show how. A client that offers OAuth may still fail to sign in here: some register themselves with every server first, or expect to return to an address of their own scheme such as `myapp://`. Neither is supported. Use a token with those. ## How long access lasts Until you take it away. Tokens and connected apps do not expire, so an assistant that works today works tomorrow without signing in again. To cut access, on your [profile page](https://publicwww.com/profile/api): - **Disconnect** an app under Connected apps - it loses access at once and has to ask again; - **Delete** a token - whatever uses it stops working at once. Removing PublicWWW in the assistant itself does not always tell us; if you want to be sure the access is gone, disconnect it here as well. ## What the assistant gets Search and the account summary - the two [tools](https://publicwww.com/docs/mcp/tools/). Both only read: nothing in your account can be changed through them. Its searches count against your plan's daily searches, exactly as if you ran them yourself. Building an application that signs people in? The OAuth flow, the client metadata document and the endpoints are in [OAuth 2.1 for applications](https://publicwww.com/docs/api/authentication/#oauth). Source: https://publicwww.com/docs/mcp/connecting/ --- # Claude PublicWWW is in Claude's connector directory: connect it in two clicks and sign in with OAuth, no token to copy. Claude Code takes the same server from the command line. ## Claude on the web and in the desktop app 1. Open [PublicWWW in the connector directory](https://claude.ai/directory/publicwww), or find it by name under **Customize → Connectors → Browse**, and press **Connect**. 2. PublicWWW opens: sign in with the one-time code from your email and press **Allow** on "Connect Claude to PublicWWW?". You are sent back to Claude. 3. In a chat, turn PublicWWW on in the tools menu of the message box and ask, for example, "Which sites load angular.min.js?". The same server can also be added by hand, as a custom connector: 1. Open **Customize → Connectors** (in some versions **Settings → Connectors**) and press **Add custom connector**. 2. Name: `PublicWWW`. URL: `https://api.publicwww.com/mcp`. If asked how Claude should identify itself, keep **Use Claude's published identity**; leave OAuth client ID and secret empty. 3. Press **Add**, then **Connect**. PublicWWW opens: sign in with the one-time code from your email and press **Allow** on "Connect Claude to PublicWWW?". You are sent back to Claude. 4. In a chat, turn PublicWWW on in the tools menu of the message box and ask, for example, "Which sites load angular.min.js?". A connector added on claude.ai is there in the desktop app too. A free Claude plan allows one custom connector. On Team and Enterprise plans an owner adds it once - Organization settings → Connectors → Add → Custom → Web - and then everyone presses Connect for their own PublicWWW account. Claude now shows under **Connected apps** on your [profile page](https://publicwww.com/profile/api). ## Claude Code As a plugin - the server, signing in with OAuth, and a skill that teaches Claude the query syntax: ``` /plugin marketplace add publicwww-com/publicwww-mcp /plugin install publicwww@publicwww ``` Or just the server: ``` claude mcp add --transport http publicwww https://api.publicwww.com/mcp ``` Then, inside Claude Code, run `/mcp`, pick `publicwww` and choose Authenticate. The browser opens the same Allow screen; after it, `claude mcp list` shows the server as connected. With a token from your [profile page](https://publicwww.com/profile/api) instead of OAuth: ``` claude mcp add --transport http publicwww https://api.publicwww.com/mcp \ --header "Authorization: Bearer YOUR_TOKEN" ``` The server is added to the current project; `--scope user` makes it available in every project. To share it with a team through `.mcp.json` in the repository, keep the token in each person's environment rather than in the file: ``` { "mcpServers": { "publicwww": { "type": "http", "url": "https://api.publicwww.com/mcp", "headers": { "Authorization": "Bearer ${PUBLICWWW_TOKEN}" } } } } ``` Source: https://publicwww.com/docs/mcp/claude/ --- # ChatGPT ChatGPT adds PublicWWW as a custom MCP server and signs in with OAuth: no token to copy. ## Adding the server 1. In the ChatGPT sidebar open **Plugins**, press **Add** at the top right and choose **Add custom MCP server**. 2. Name: `PublicWWW`. Description and icon are optional. 3. Connection: **Server URL**, `https://api.publicwww.com/mcp`. 4. Authentication: **OAuth**. Leave Advanced OAuth settings as ChatGPT finds them - it reads our settings from the server itself, and no client ID or secret is needed. 5. Tick "I understand and want to continue" and press **Create as a plugin**. 6. PublicWWW opens: sign in with the one-time code from your email and press **Allow** on "Connect ChatGPT to PublicWWW?". You are sent back to ChatGPT. ChatGPT now shows under **Connected apps** on your [profile page](https://publicwww.com/profile/api). Custom MCP servers are added in ChatGPT on the web. In a Business or Enterprise workspace an admin may have to allow them first. ChatGPT has no way to send a token in a header, so with ChatGPT it is always OAuth. ## Using it Ask in a new chat and name PublicWWW, so ChatGPT knows which tool you mean: "Search PublicWWW for sites that load angular.min.js". It decides on its own when to call the server; the searches are charged to your PublicWWW plan, not to ChatGPT. ChatGPT warns that custom MCP servers introduce risk. Both PublicWWW tools only read: they search and report your quota, and cannot change anything in your PublicWWW account or anywhere else. Source: https://publicwww.com/docs/mcp/chatgpt/ --- # Code editors and CLI agents Code editors and command-line agents take the server URL and a token in a header. Issue a token on your [profile page](https://publicwww.com/profile/api) - one per tool, so any of them can be cut off alone - and keep it out of files you commit. In the examples the token is read from the environment variable `PUBLICWWW_TOKEN`, or asked for once; where a client cannot do either, `YOUR_TOKEN` stands for the token itself. Claude Code is on the [Claude](https://publicwww.com/docs/mcp/claude/) page. ## VS Code GitHub Copilot's agent mode. Add to `.vscode/mcp.json` in the project, or to the user configuration (command palette: MCP: Open User Configuration): ``` { "inputs": [ { "type": "promptString", "id": "publicwww-token", "description": "PublicWWW token", "password": true } ], "servers": { "publicwww": { "type": "http", "url": "https://api.publicwww.com/mcp", "headers": { "Authorization": "Bearer ${input:publicwww-token}" } } } } ``` VS Code asks for the token the first time the server starts and stores it in its secret storage, not in the file. The same in one click: [Install in VS Code](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522publicwww%2522%252C%2522type%2522%253A%2522http%2522%252C%2522url%2522%253A%2522https%253A%252F%252Fapi.publicwww.com%252Fmcp%2522%252C%2522headers%2522%253A%257B%2522Authorization%2522%253A%2522Bearer%2520%2524%257Binput%253Apublicwww-token%257D%2522%257D%252C%2522inputs%2522%253A%255B%257B%2522type%2522%253A%2522promptString%2522%252C%2522id%2522%253A%2522publicwww-token%2522%252C%2522description%2522%253A%2522PublicWWW%2520token%2522%252C%2522password%2522%253Atrue%257D%255D%257D). ## Cursor `~/.cursor/mcp.json` for every project, or `.cursor/mcp.json` in one: ``` { "mcpServers": { "publicwww": { "url": "https://api.publicwww.com/mcp", "headers": { "Authorization": "Bearer ${env:PUBLICWWW_TOKEN}" } } } } ``` Or in one click: [Add to Cursor](https://cursor.com/install-mcp?name=publicwww&config=eyJ1cmwiOiJodHRwczovL2FwaS5wdWJsaWN3d3cuY29tL21jcCIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciAke2VudjpQVUJMSUNXV1dfVE9LRU59In19) - it reads the token from `PUBLICWWW_TOKEN`. ## Devin Desktop (formerly Windsurf) `~/.config/devin/mcp_config.json`, on Windows `%APPDATA%\devin\mcp_config.json`: ``` { "mcpServers": { "publicwww": { "url": "https://api.publicwww.com/mcp", "headers": { "Authorization": "Bearer YOUR_TOKEN" } } } } ``` Use `url`: the older `serverUrl` is understood only by the previous Cascade agent. ## Gemini CLI As an extension - it asks for the token once, keeps it in the system keychain and brings a skill with the query syntax: ``` gemini extensions install https://github.com/publicwww-com/publicwww-mcp ``` Or by hand in `~/.gemini/settings.json` - the key for a Streamable HTTP server is `httpUrl`: ``` { "mcpServers": { "publicwww": { "httpUrl": "https://api.publicwww.com/mcp", "headers": { "Authorization": "Bearer ${PUBLICWWW_TOKEN}" } } } } ``` `url` instead of `httpUrl` would make Gemini CLI speak the older SSE transport, which this server does not serve. ## Codex CLI ``` codex mcp add publicwww --url https://api.publicwww.com/mcp \ --bearer-token-env-var PUBLICWWW_TOKEN ``` or the same by hand in `~/.codex/config.toml`; Codex reads the token from the variable it is told to: ``` [mcp_servers.publicwww] url = "https://api.publicwww.com/mcp" bearer_token_env_var = "PUBLICWWW_TOKEN" ``` Codex can also sign in with OAuth instead of a token: ``` codex mcp add publicwww --url https://api.publicwww.com/mcp codex mcp login publicwww ``` **Codex on a server over SSH.** After you press Allow, the browser is sent to `http://127.0.0.1:/callback?code=…` - an address only Codex itself listens on, on the server, so your browser shows a connection error. Copy that whole address from the address bar and, while `codex mcp login` is still waiting, open it on the server: ``` curl "http://127.0.0.1:/callback?code=...&state=..." ``` Codex reports the sign-in as done. The code works once and for ten minutes, and the address has to come from the same `codex mcp login` run. ## DeepSeek Harness ``` dsh plugin --profile web add github:publicwww-com/dsh-publicwww ``` The plugin connects the server through DeepSeek Harness's own MCP client and reads the token from `PUBLICWWW_TOKEN` - see [the plugin page](https://github.com/publicwww-com/dsh-publicwww). ## Anything else Any client that can add a remote MCP server over Streamable HTTP and set a request header will work with the URL and the `Authorization: Bearer` header. A client that only starts local servers can reach this one through the `mcp-remote` bridge (needs Node.js): ``` { "mcpServers": { "publicwww": { "command": "npx", "args": ["-y", "mcp-remote", "https://api.publicwww.com/mcp", "--header", "Authorization:${AUTH_HEADER}"], "env": { "AUTH_HEADER": "Bearer YOUR_TOKEN" } } } } ``` Ready-made files for all of these, an agent skill with the query syntax and the install buttons are on [GitHub](https://github.com/publicwww-com/publicwww-mcp). No space after `Authorization:` on purpose: some clients pass arguments with spaces in them incorrectly, so the part with the space lives in `env`. Source: https://publicwww.com/docs/mcp/editors/ --- # n8n, Make and Zapier Automation platforms can call the PublicWWW tools as steps of a workflow - run a search on a schedule, put the sites into a spreadsheet or a CRM, or let an AI step decide what to search for. They connect to the same server with a token. Issue a token for each platform on your [profile page](https://publicwww.com/profile/api), so that any of them can be cut off alone. The MCP server needs a paid plan - see [Limits and errors](https://publicwww.com/docs/mcp/limits/). For a plain scheduled export without a tool step, the [REST API](https://publicwww.com/docs/api/) is simpler: every platform has an HTTP step, and the API is described in [OpenAPI](https://api.publicwww.com/openapi.json). ## n8n Two nodes speak MCP. **MCP Client** runs one tool as an ordinary step; **MCP Client Tool** hands the tools to an AI Agent node, which picks and calls them itself. Both take the same settings: | Setting | Value | | --- | --- | | Endpoint | `https://api.publicwww.com/mcp` | | Server Transport | HTTP Streamable | | Authentication | Bearer Auth, with a credential holding your token | In **MCP Client** choose the tool - `search` or `account` - and fill in its parameters, or switch Input Mode to JSON: ``` { "query": "\"angular.min.js\"", "rows": 100 } ``` The node returns one item with the tool's answer in `structuredContent`: the sites in `results` (domain, url, rank), and `total`, `returned`, `truncated` next to them. To get one item per site, follow it with a **Split Out** node on `structuredContent.results`. ## Make Add the **MCP Client** app to a scenario. In its connection choose **+ New MCP Server**, enter `https://api.publicwww.com/mcp` as the URL and paste your token into **API Key / Access token**. Then use **Call a tool** with `search` to run a search as a step, or **Execute an action with AI** to let the AI choose the calls. **Call a tool** lists the tool's arguments - `query`, `rows`, `page`, `snippets`. Its output carries the answer twice: **Result** as JSON text and **Parsed Result** as fields - `results` with the sites, `total`, `returned`, `truncated` and the rest. To handle the sites one at a time, add an **Iterator** over Parsed Result > results. ## Zapier Connect the **MCP Client** app: server URL `https://api.publicwww.com/mcp`, transport Streamable HTTP, OAuth off, and your token in the bearer token field. Zapier reads the tool list right away - `search` and `account` with their parameters. For a search use the action **Run Read-Only Tool** with `search`; the trigger **New Tool** only reports tools added to the server. ## Into a CRM: HubSpot, Pipedrive, Salesforce The common case is a list of prospects: every site that loads a certain script, widget or tracking code, put into the CRM as companies. All three platforms above have steps for HubSpot, Pipedrive and Salesforce, so the workflow is the same everywhere: 1. A trigger - a schedule, or a button you press. 2. The PublicWWW `search` tool with your query, for example `"googletagmanager.com/gtm.js" site:de`, and as many rows as you want to import. 3. A loop over `results`: one site per pass, with its `domain`, `url` and `rank`. 4. Look the company up in the CRM by its domain, and create it only if it is not there - running the workflow again then adds the new sites and leaves the rest alone. | CRM | Record | Match on | | --- | --- | --- | | HubSpot | Company | Domain name | | Pipedrive | Organization | A website field on the organization | | Salesforce | Account | Website | It helps to note on the record why it is there - the query in a custom field or a note - so a later search for something else does not mix the lists. The `rank` sorts the list by popularity: 1 is the most popular site, and an empty rank means the site has no popularity rank. ## What to watch - Each run of a search is one search from the account's daily allowance, and at most 10 requests a minute go through per account - a loop that calls the tool for every row of a sheet runs into both. Ask for more rows in one search instead. - Refusals come back as tool errors with a code - `quota_exceeded`, `too_many_requests` with `retry_after` - which the platforms show as a failed step. The codes are in [Limits and errors](https://publicwww.com/docs/mcp/limits/). Source: https://publicwww.com/docs/mcp/automation/ --- # Tools Ten tools: search, the account, this documentation, and seven for clusters - saved lists of websites the assistant can build, combine and extract data from. The assistant chooses the arguments from what you ask; this page is what it can choose from and what comes back. | Tool | Arguments | What it does | | --- | --- | --- | | `search` | `query` (required), `rows`, `page`, `snippets` | Searches page source with the [usual query syntax](https://publicwww.com/docs/query-syntax/). `rows` is 20 by default, up to your plan's rows per query. `snippets: true` adds up to three fragments of source (up to 300 characters) around the match for each site. | | `account` | none | Plan, searches used and left today, rows per query, clusters and extraction points, the rate limit. Spends nothing. | | `read_docs` | `page`, `lang` | This documentation and the [price list](https://publicwww.com/prices.html) in Markdown. Without `page` - the table of contents with page ids (`query-syntax/regex`, `api/limits`, `prices`...); with it - one page. `lang` is a site language code (`de`, `ja`...), English by default. Spends nothing. | | `list_clusters` | none | The account's clusters, newest first. Spends nothing. | | `get_cluster` | `cluster` (required), `page`, `rows` | A page of the domains in a cluster, up to 1000 at a time. Spends nothing. | | `create_cluster` | `query` or `domains`, `name` | Saves the results of a search as a cluster (costs one search), or a list of domains (costs nothing; only sites in the index are kept). | | `combine_clusters` | `operation` and, or or diff, `clusters` (ids), `name` | A new cluster: domains in every cluster, in any, or in the first but not the second. Spends nothing. | | `extract_from_cluster` | `cluster` (required), `presets`, `regex`, `offset`, `limit`, `include_empty` | Pulls values out of the page source of the sites in a cluster, up to 100 sites per call. Spends extraction points. See below. | | `rename_cluster` | `cluster`, `name` | Gives a cluster a new name. | | `delete_cluster` | `cluster` | Deletes a cluster for good. Marked as destructive, so the assistant asks you before it runs. | `search`, `account`, `read_docs`, `list_clusters` and `get_cluster` only read. A result comes back twice in the same answer: as structured data for the assistant's code and as JSON text for the model. `read_docs` is the exception: its page comes back once, as Markdown text. The same pages are also MCP resources: `publicwww://docs` is the table of contents, `publicwww://docs/` a page, and `?lang=de` at the end asks for another language. A client that shows resources lets you attach a page to the conversation yourself. ## A search result ``` { "query": "\"angular.min.js\"", "total": 73665, "page": 1, "rows": 3, "returned": 3, "truncated": false, "index_complete": true, "took_ms": 6, "results": [ { "domain": "imgbox.com", "url": "https://imgbox.com/", "rank": 4229 }, { "domain": "uc.edu", "url": "https://www.uc.edu/", "rank": 5861 }, { "domain": "sharemods.com", "url": "https://sharemods.com/", "rank": 10962 } ] } ``` The fields mean what they mean in the [API](https://publicwww.com/docs/api/formats/): - `truncated` - the plan cut the page short; - `index_complete: false` - part of the index did not answer in time, so `total` may be low; - `rank: null` - the site has no rank; - `query_note` - appears when the query was read differently from how it was written; - `sites` - only with `depth:`: then `total` counts pages, several per site, and `sites` counts the distinct websites among them. With `snippets: true` every result also carries `snippets`, a list of up to three strings of source around the match. They are other people's code, passed on as data. ## Getting more than one page `page` and `rows` walk through the results: `page: 2, rows: 20` is results 21 to 40. `page` times `rows` cannot go past your plan's rows per query - see [Limits and errors](https://publicwww.com/docs/mcp/limits/). ## Clusters and extraction Ask in plain words and the assistant chains the tools: *"Find sites that use Hotjar, save them as a cluster and get their contact emails and phones"* becomes `create_cluster` with a query, then `extract_from_cluster` with the `email` and `phone` presets, part after part. Presets are ready-made expressions, chosen by name: `email`, `phone`, `whatsapp`, `telegram`, `viber`, `line`, `facebook`, `instagram`, `x`, `linkedin`, `youtube`, `tiktok`, `pinterest`, `threads`, `bluesky`, `discord`, `github`, `google_play`, `app_store`. Anything else takes a regular expression in slashes (or pipes), whose first capturing group is the value - up to ten expressions in all. ``` { "cluster": 7, "name": "\"hotjar.com\"", "size": 100, "offset": 0, "scanned": 100, "in_index": 100, "with_matches": 87, "next_offset": null, "regex": ["/mailto:(...)/i", "/hjid['\"]?\\s*[:=]\\s*([0-9]{4,10})/"], "points_used": 131.4, "points_left": 0, "rows": [ { "domain": "example.com", "values": [["hello@example.com"], ["1234567"]], "matches": 2 } ] } ``` `next_offset` is where the next call starts; `null` means the whole cluster is done. Each site found in the index costs as many extraction points as values were found on it, 0.1 if none. An account keeps up to 100 clusters; past that `create_cluster` answers `cluster_limit` and deletes nothing. The same operations from code are in the [API](https://publicwww.com/docs/api/clusters/). Source: https://publicwww.com/docs/mcp/tools/ --- # Limits and errors The MCP server spends the same quota as the API and the website, and when it refuses, it says why in words the assistant can pass on to you. ## Limits The MCP server needs a paid plan. A free account can connect, but every tool call except `read_docs` answers `plan_required`. | | Paid plan | | --- | --- | | Searches per day | your plan's daily searches, shared with the API and the website | | Rows per query | your plan's limit | | Rows per query with snippets | your plan's limit; spends a search and a snippet search | | Domains per cluster | your plan's limit | | Extraction points per day | your plan's allowance, shared with the website | | Clusters per account | 100 | | Rate | ten calls a minute per account, shared with the API - see [Quotas and rate limits](https://publicwww.com/docs/api/limits/) | Ask the assistant to call `account` to see the exact numbers for your account. `page` times `rows` cannot go past the rows per query. Searches reset at midnight UTC. ## Errors A refused search is not a protocol error: the tool answers with `isError: true`, a message the assistant can pass on to you, and a code in the structured data. | Code | Meaning | | --- | --- | | `plan_required` | The account has no paid plan, and the MCP server needs one - see the [pricing page](https://publicwww.com/prices.html). | | `empty_query` | No `query`. | | `page_too_deep` | `page` times `rows` goes past the rows per query of the plan. | | `too_many_requests` | More than ten calls in a minute; `retry_after` says how many seconds to wait. | | `quota_exceeded` | The day's searches are used up; `resets_at` says when they return (midnight UTC). | | `snippet_quota_exceeded` | The day's snippet searches are used up; searching without snippets still works. | | `cluster_not_found` | No cluster with that id on the account; `list_clusters` shows them. | | `cluster_limit` | The account already keeps 100 clusters; delete some first. Nothing was deleted. | | `invalid_regex` | An expression is not a regular expression in slashes or pipes, up to 200 characters. | | `unknown_preset` | No preset with that name; the message lists them. | | `extract_quota_exceeded` | The day's extraction points are used up; `resets_at` says when they return. | ## When the assistant cannot connect | What you see | What it means | | --- | --- | | The assistant asks to sign in again, or reports 401 | No token, or one that was deleted or disconnected on your [profile page](https://publicwww.com/profile/api). Connect again, or issue a new token. | | OAuth fails before the PublicWWW sign-in page | The client wants to register itself first, which PublicWWW does not support - use a [token](https://publicwww.com/docs/mcp/connecting/) with it. | | An error page on PublicWWW instead of the Allow screen | The client's identity document could not be read, or its return address is not in it. Nothing was granted; try again later or use a token. | Source: https://publicwww.com/docs/mcp/limits/ --- # For developers What a client needs to know about the server, and how to call it without an assistant in between. ## The protocol as we serve it - Streamable HTTP at `https://api.publicwww.com/mcp`: one JSON-RPC message per `POST` (a batch is accepted too), answers are plain `application/json`. No server-sent events, no sessions - every request carries its token. `GET` is `405`. - Both generations of the protocol are served at the same URL: the revisions with the `initialize` handshake (2024-11-05 to 2025-11-25) and 2026-07-28 with `server/discover`, where the version and client capabilities travel in `params._meta` of every request and `Mcp-Method` / `Mcp-Name` must match the body. - No token, or one that was deleted, is `401` on any request, with a `WWW-Authenticate` header naming the protected resource metadata (RFC 9728), from which an OAuth client finds the authorization server. The flow is in [OAuth 2.1 for applications](https://publicwww.com/docs/api/authentication/#oauth). - Tools: `search`, `account`, `read_docs` and seven for clusters, described in [Tools](https://publicwww.com/docs/mcp/tools/). Resources: this documentation and the price list in Markdown - `publicwww://docs` and `publicwww://docs/`, optionally with `?lang=`. No prompts, and the lists do not change between calls. - Without a token, the [server card](https://api.publicwww.com/mcp/server-card) describes the server: name, address, protocol versions and links. It is listed in `https://publicwww.com/.well-known/ai-catalog.json`. The tool list is not part of the card; it comes from `tools/list` once the client has a token. - Outside MCP, every page of this documentation is also Markdown at its address plus `index.md` (`/docs/api/limits/index.md`), the prices at `/prices.md`, everything in one file at `'/llms-full.txt'` (https://publicwww.com/llms-full.txt), and the map at `'/llms.txt'` (https://publicwww.com/llms.txt). ## Calling it with curl The server keeps no state between calls, so a tool can be called straight away, without the handshake: ``` curl https://api.publicwww.com/mcp \ -H "Authorization: Bearer $KEY" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call", "params":{"name":"search","arguments":{"query":"\"angular.min.js\"","rows":3}}}' ``` The list of tools with their input schemas: ``` curl https://api.publicwww.com/mcp \ -H "Authorization: Bearer $KEY" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' ``` These calls and an account check, as one script: [mcp-curl.sh](https://github.com/publicwww-com/publicwww-mcp/blob/main/examples/mcp-curl.sh). For a script that only needs search results, the [REST API](https://publicwww.com/docs/api/) is the simpler road: the same search and token, with CSV, NDJSON and the other formats. Source: https://publicwww.com/docs/mcp/developers/ --- # Use Cases Where PublicWWW has been put to work: studies that measured the web with it, security researchers who counted the sites hit by an attack, marketers and investigators, and videos that show it in use. - [Academic papers](https://publicwww.com/docs/use-cases/papers/) - studies that used PublicWWW to find the websites they examined. - [Marketing, sales & SEO](https://publicwww.com/docs/use-cases/marketing/) - finding prospects, competitors and live examples of a setup. - [OSINT & investigations](https://publicwww.com/docs/use-cases/osint/) - guides and toolkits for investigators. - [Security research](https://publicwww.com/docs/use-cases/security/) - malware campaigns, card skimmers and supply-chain attacks, and how many sites they reached. - [Cryptojacking](https://publicwww.com/docs/use-cases/cryptojacking/) - hidden cryptocurrency miners planted on websites. - [Videos & courses](https://publicwww.com/docs/use-cases/videos/) - PublicWWW shown in use. Titles are given in the language of the original. Every link leads to another site. Source: https://publicwww.com/docs/use-cases/ --- # Academic papers - [Your Space is My Zone: Demystifying the Security Risks of AI-Powered Applications on Pre-Trained Model Hubs](https://arxiv.org/abs/2606.30373) - arXiv, 2026 - [Breaking the Shield: Analyzing and Attacking Canvas Fingerprinting Defenses in the Wild](https://doi.org/10.1145/3696410.3714713) - WWW, 2025 - [From Obfuscated to Obvious: A Comprehensive JavaScript Deobfuscation Tool for Security Analysis](https://arxiv.org/html/2512.14070v1) - arXiv, 2025 - [The Role of OSINT Technologies in Polygraph Examinations: Possibilities, Limitations and Prospects of Application](https://doi.org/10.32782/pdu.2025.4.56) - Law and Public Administration, 2025 - [WAFFLED: Exploiting Parsing Discrepancies to Bypass Web Application Firewalls](https://arxiv.org/html/2503.10846v3) - arXiv, 2025 - [Localhost detour from public to private networks: Vulnerabilities and mitigations](https://doi.org/10.1007/s12095-024-00750-x) - Cryptography and Communications, 2024 - [SENet: Visual Detection of Online Social Engineering Attack Campaigns](https://arxiv.org/html/2401.05569v1) - arXiv, 2024 - [A Real-Time Hybrid Approach to Combat In-Browser Cryptojacking Malware](https://doi.org/10.3390/app13042039) - Applied Sciences, 2023 - [JABBERWOCK: A Tool for WebAssembly Dataset Generation and Its Application to Malicious Website Detection](https://arxiv.org/pdf/2306.05698) - arXiv, 2023 - [Overcoming the Pitfalls of HPC-based Cryptojacking Detection in Presence of GPUs](https://doi.org/10.1145/3577923.3583655) - ACM CODASPY, 2023 - [The Time is Ticking: The Effect of Limited Time Discounts on Consumers' Buying Behavior and Experience](https://doi.org/10.1145/3544549.3585735) - CHI, 2023 - [DNS based In-Browser Cryptojacking Detection](https://arxiv.org/pdf/2205.04685) - arXiv, 2022 - [JSRehab: Weaning Common Web Interface Components from JavaScript Addiction](https://arxiv.org/pdf/2203.06955) - arXiv, 2022 - [Leveraging Google’s Publisher-specific IDs to Detect Website Administration](https://arxiv.org/pdf/2202.05074) - arXiv, 2022 - [MinerAlert: an hybrid approach for web mining detection](https://doi.org/10.1007/s11416-022-00420-7) - Journal of Computer Virology and Hacking Techniques, 2022 - [MinerGuard: A Solution to Detect Browser-Based Cryptocurrency Mining through Machine Learning](https://doi.org/10.3390/app12199838) - Applied Sciences, 2022 - [Stealthy Peers: Understanding Security Risks of WebRTC-Based Peer-Assisted Video Streaming](https://arxiv.org/pdf/2212.02740) - arXiv, 2022 - [Detection of illicit cryptomining using network metadata](https://doi.org/10.1186/s13635-021-00126-1) - EURASIP Journal on Information Security, 2021 - [MINOS: A Lightweight Real-Time Cryptojacking Detection System](https://doi.org/10.14722/ndss.2021.24444) - NDSS, 2021 - [SoK: Cryptojacking Malware](https://arxiv.org/pdf/2103.03851) - arXiv, 2021 - [Browser-based Crypto Mining and EU Data Protection and Privacy Law: A Critical Assessment and Possible Opportunities for the Monetisation of Web Services](https://doi.org/10.31585/jbba-3-2-(1%292020) - The Journal of the British Blockchain Association, 2020 - [Browser-Based Deep Behavioral Detection of Web Cryptomining with CoinSpy](https://doi.org/10.14722/madweb.2020.23002) - MADWeb, 2020 - [CoinPolice: Detecting Hidden Cryptojacking Attacks with Neural Networks](https://arxiv.org/pdf/2006.10861) - arXiv, 2020 - [Is Cryptojacking Dead after Coinhive Shutdown?](https://www.arxiv.org/pdf/2001.02975v1) - arXiv, 2020 - [Measuring Abuse in Web Push Advertising](https://arxiv.org/pdf/2002.06448) - arXiv, 2020 - [DISSECTING ANDROID CRYPTOCURRENCY MINERS](https://arxiv.org/pdf/1905.02602) - arXiv, 2019 - [Keeping out the Masses: Understanding the Popularity and Implications of Internet Paywalls](https://arxiv.org/pdf/1903.01406) - arXiv, 2019 - [MANiC: Multi-step Assessment for Crypto-miners](https://doi.org/10.1109/cybersecpods.2019.8885003) - IEEE Cyber Security, 2019 - [Recent Advances in Cryptovirology: State-of-the-Art Crypto Mining and Crypto Ransomware Attacks](https://doi.org/10.3837/tiis.2019.06.027) - KSII Transactions on Internet and Information Systems, 2019 - [THE RISKS OF WEBGL: ANALYSIS, EVALUATION AND DETECTION](https://arxiv.org/pdf/1904.13071) - arXiv, 2019 - [A first look at browser-based cryptojacking](https://arxiv.org/pdf/1803.02887) - arXiv, 2018 - [Betrayed by Your Dashboard: Discovering Malicious Campaigns via Web Analytics](https://doi.org/10.1145/3178876.3186089) - WWW, 2018 - [Game of Missuggestions: Semantic Analysis of Search-Autocomplete Manipulations](https://doi.org/10.14722/ndss.2018.23036) - NDSS, 2018 - [MineSweeper: An In-depth Look into Drive-by Cryptocurrency Mining and Its Defense](https://doi.org/10.1145/3243734.3243858) - ACM CCS, 2018 - [Session Fingerprinting in Android via Web-to-App Intercommunication](https://doi.org/10.1155/2018/7352030) - Security and Communication Networks, 2018 - [There's a Hole in that Bucket! A Large-scale Analysis of Misconfigured S3 Buckets](https://doi.org/10.1145/3274694.3274736) - ACSAC, 2018 - [Truth in Web Mining: Measuring the Profitability and Cost of Cryptominers as a Web Monetization Model](https://arxiv.org/pdf/1806.01994) - arXiv, 2018 Source: https://publicwww.com/docs/use-cases/papers/ --- # Marketing, sales & SEO - [SEO Tools for Assessing Used Domain Names](https://www.practicalecommerce.com/seo-tools-for-assessing-used-domain-names) - practicalecommerce.com, 2022 - [Manual Spying](https://lonewolfaffiliate.com/index.php/2019/05/21/manual-spying/) - lonewolfaffiliate.com, 2019 - [Publicwww - searching for interesting Episerver CMS use patterns](https://www.codeart.dk/blog/2019/5/publicwww---searching-for-interesting-cms-use-patterns/) - codeart.dk, 2019 - [3 hyper-useful services to growth hack SaaS](https://medium.com/free-machines-blog/3-hyper-useful-services-to-growth-hack-saas-32b5ad574b21) - medium.com, 2017 - [3 Strategies used to gain thousands of users](https://medium.com/@mackan.s/3-strategies-one-b2b-growth-hacker-used-to-gain-thousands-of-subscribers-for-one-of-swedens-ba8b7285e5d4) - medium.com Source: https://publicwww.com/docs/use-cases/marketing/ --- # OSINT & investigations - [30 Cybersecurity Search Engines Every Researcher Should Bookmark](https://securityboulevard.com/2026/05/30-cybersecurity-search-engines-every-researcher-should-bookmark/) - securityboulevard.com, 2026 - [Simple ways to find exposed sensitive information](https://www.trickster.dev/post/simple-ways-to-find-exposed-sensitive-information/) - trickster.dev, 2024 - [PW3Query is a serverless query agent and repository for PublicWWW](https://github.com/ciscocsirt/PW3Query) - github.com, 2019 - [Source Code Search Engine Adds Internal Page Indexing](https://www.i-programmer.info/news/81-web-general/12064-source-code-search-engine-adds-internal-page-indexing.html) - i-programmer.info, 2018 - [Code Search](https://infoepi.org/tools/code-search) - InfoEpi Lab - `PublicWWW | Bellingcat's Online Investigation Toolkit` (https://bellingcat.gitbook.io/toolkit/more/all-tools/publicwww) - bellingcat.gitbook.io - [Top 10 Search Engines for Pentesters and Bug Bounty Hunters](https://socradar.io/blog/top-10-search-engines-for-pentesters-and-bug-bounty-hunters/) - socradar.io Source: https://publicwww.com/docs/use-cases/osint/ --- # Security research - [10,000 WordPress Websites Found Delivering MacOS and Windows Malware](https://cside.dev/blog/10-000-wordpress-websites-found-delivering-macos-and-microsoft-malware) - cside.dev, 2025 - [Client-Side Attack Report Q2 2025](https://cside.com/blog/client-side-attack-report-q2-2025) - cside.com, 2025 - [If you're using Polyfill.io code on your site – like 100,000+ are – remove it immediately](https://www.theregister.com/2024/06/25/polyfillio_china_crisis/) - theregister.com, 2024 - [Malicious Script Injection on WordPress Sites](https://blog.sucuri.net/2024/12/malicious-script-injection-on-wordpress-sites.html) - blog.sucuri.net, 2024 - [Over 110,000 Websites Affected by Hijacked Polyfill Supply Chain Attack](https://thehackernews.com/2024/06/over-110000-websites-affected-by.html) - thehackernews.com, 2024 - [Polyfill supply chain attack hits 100K+ sites](https://sansec.io/research/polyfill-supply-chain-attack) - sansec.io, 2024 - [Thousands of WordPress sites facing malware infection following major plugin hack](https://www.techradar.com/pro/security/thousands-of-wordpress-sites-facing-malware-infection-following-major-plugin-hack) - techradar.com, 2024 - [Embedded Secrets in Webpage DOMs](https://securityboulevard.com/2022/09/embedded-secrets-in-webpage-doms/) - securityboulevard.com, 2022 - [Crafty Web Skimming Domain Spoofs “https”](https://krebsonsecurity.com/2020/03/crafty-web-skimming-domain-spoofs-https/) - krebsonsecurity.com, 2020 - [A popular WordPress plugin leaked access tokens capable of hijacking Twitter accounts](https://techcrunch.com/2019/01/17/wordpress-plugin-leaked-twitter-account-access-tokens/) - techcrunch.com, 2019 - [Breaking news: Bank-card-slurping malware sneaks into Forbes' mag subscription website](https://www.theregister.co.uk/2019/05/16/forbes_magecart_infection/) - theregister.co.uk, 2019 - [Correos y otras 4.600 webs, infectadas para robar contraseñas y datos de pago](https://www.adslzone.net/2019/05/13/correos-picreel-cloud-cms-hack/) - adslzone.net, 2019 - [Criminelen onderscheppen wachtwoorden en betaaldata via 'formjacking'](https://tweakers.net/nieuws/152712/criminelen-onderscheppen-wachtwoorden-en-betaaldata-via-formjacking.html) - tweakers.net, 2019 - [DataSpii: The catastrophic data leak via browser extensions](https://securitywithsam.com/2019/07/dataspii-leak-via-browser-extensions/) - securitywithsam.com, 2019 - [Fake jquery campaign leads to malvertising and ad fraud schemes](https://blog.malwarebytes.com/threat-analysis/2019/06/fake-jquery-campaign-leads-to-malvertising-and-ad-fraud-schemes/) - blog.malwarebytes.com, 2019 - [Falha que deixa conta do Twitter vulnerável é encontrada em plugin do Wordpress](https://canaltech.com.br/seguranca/falha-que-deixa-conta-do-twitter-vulneravel-e-encontrada-em-plugin-do-wordpress-130977/) - canaltech.com.br, 2019 - [H steht für Hack: E-Commerce-Anbieter Volusion liefert Kreditkarten-Malware aus](https://www.heise.de/security/meldung/H-steht-fuer-Hack-E-Commerce-Anbieter-Volusion-liefert-Kreditkarten-Malware-aus-4551016.html) - heise.de, 2019 - [Hackers están recopilando contraseñas y datos de pago de 4.600 webs, incluida Correos](https://www.genbeta.com/actualidad/hackers-estan-recopilando-contrasenas-datos-pago-4-600-webs-incluida-correos) - genbeta.com, 2019 - [Infectan más de 4.000 webs para recopilar todo tipo de información, métodos de pago y contraseñas de los usuarios](https://www.redeszone.net/2019/05/13/paginas-web-infectadas-robar-informacion-contrasenas/) - redeszone.net, 2019 - [Les coordonnées de paiement de 5.000 sites piratées](https://www.futura-sciences.com/tech/actualites/securite-coordonnees-paiement-5000-sites-piratees-76063/) - futura-sciences.com, 2019 - [Tens of thousands of customers may have had their credit card information stolen](https://www.dailymail.co.uk/sciencetech/article-7552153/Thousands-customers-credit-card-data-stolen-hack-6-500-online-stores.html) - dailymail.co.uk, 2019 - [Card stealing malware hits +100 Aussie e-stores](https://www.itnews.com.au/news/card-stealing-malware-hits-100-aussie-e-stores-511807) - itnews.com.au, 2018 - [Card-stealing code that pwned British Airways, Ticketmaster pops up on more sites via hacked JS](https://www.theregister.co.uk/2018/09/12/feedify_magecart_javascript_library_hacked/) - theregister.co.uk, 2018 - [Clever SEO Spam Injection](https://blog.sucuri.net/2018/12/clever-seo-spam-injection.html) - blog.sucuri.net, 2018 - [Feedify becomes latest victim of the Magecart malware campaign](https://www.zdnet.com/article/feedify-becomes-latest-victim-of-the-magecart-malware-campaign/) - zdnet.com, 2018 - [Feedify-script voor webwinkels voorzien van creditcardskimmer](https://www.security.nl/posting/576929/Feedify-script+voor+webwinkels+voorzien+van+creditcardskimmer) - security.nl, 2018 - [Gehackte WordPress-sites gebruikt voor helpdeskfraude](https://www.security.nl/posting/578088/Gehackte+WordPress-sites+gebruikt+voor+helpdeskfraude) - security.nl, 2018 - [Hackers breach StatCounter to hijack Bitcoin transactions on Gate.io exchange](https://www.zdnet.com/article/hackers-breach-statcounter-to-hijack-bitcoin-transactions-on-gate-io-exchange/) - zdnet.com, 2018 - [Magento-webshops massaal gepakt door skimming-script](https://www.agconnect.nl/artikel/magento-webshops-massaal-gepakt-door-skimming-script) - agconnect.nl, 2018 - [Magento: Tausende Online-Shops von permanentem Bezahldatenklau betroffen](https://www.shopanbieter.de/13973-magento-tausende-online-shops-von-permanentem-kreditkartenklau-betroffen) - shopanbieter.de, 2018 - [MagentoCore Malware Found on 7,339 Magento Stores](https://www.bleepingcomputer.com/news/security/magentocore-malware-found-on-7-339-magento-stores/) - bleepingcomputer.com, 2018 - [MagentoCore Malware That Steals Payment Card Details While You Shop Online](https://gbhackers.com/magentocore-malware-steals-payment-card/) - gbhackers.com, 2018 - [MagentoCore Payment Card Data Stealer Uncovered on 7,339 Magento-based Websites](https://www.trendmicro.com/vinfo/hk-en/security/news/cybercrime-and-digital-threats/magentocore-payment-card-data-stealer-uncovered-on-7339-magento-based-websites) - trendmicro.com, 2018 - [MagentoCore: il codice che ha infettato 7mila ecommerce e cattura i dati delle carte di credito](https://cybersecurity.startupitalia.eu/61640-20180907-magentocore-codice-infettato-7mila-ecommerce-cattura-dati-delle-carte-credito) - cybersecurity.startupitalia.eu, 2018 - `Massive localstorage[.]tk Drupal Infection` (https://blog.sucuri.net/2018/05/massive-localstorage-tk-drupal-infection.html) - blog.sucuri.net, 2018 - [Massive WordPress Redirect Campaign Targets Vulnerable tagDiv Themes and Ultimate Member Plugins](https://blog.sucuri.net/2018/08/massive-wordpress-redirect-campaign-targets-vulnerable-tagdiv-themes-and-ultimate-member-plugins.html) - blog.sucuri.net, 2018 - [More than 2,000 WordPress websites are infected with a keylogger](https://arstechnica.com/information-technology/2018/01/more-than-2000-wordpress-websites-are-infected-with-a-keylogger/) - arstechnica.com, 2018 - [Statcounter: Schadcode in Webseite hijackt Krypto-Börse](https://www.borncity.com/blog/2018/11/07/statcounter-schadcode-in-webseite-hijackt-krypto-brse/) - borncity.com, 2018 - [Vulnerabilitate: Mii de magazine online folosesc scriptul care a permis atacul informatic de la British Airways](https://www.startupcafe.ro/afaceri/vulnerabilitate-magazine-online-british-aiways-atac-informatic.htm) - startupcafe.ro, 2018 - [Who’s In Your Online Shopping Cart?](https://krebsonsecurity.com/2018/11/whos-in-your-online-shopping-cart/) - krebsonsecurity.com, 2018 - [WordPress redirection campaign uses .js file, fake plug-ins to send victims to scam sites](https://www.scmagazine.com/wordpress-redirection-campaign-uses-js-file-fake-plug-ins-to-send-victims-to-scam-sites/article/789809/) - scmagazine.com, 2018 - `Cloudflare[.]Solutions Keylogger on Thousands of Infected WordPress Sites` (https://blog.sucuri.net/2017/12/cloudflare-solutions-keylogger-on-thousands-of-infected-wordpress-sites.html) - blog.sucuri.net, 2017 - [Keylogger Found on Nearly 5,500 Infected WordPress Sites](https://www.bleepingcomputer.com/news/security/keylogger-found-on-nearly-5-500-infected-wordpress-sites/) - bleepingcomputer.com, 2017 - [Keylogger Found On Nearly 5,500 WordPress Sites](https://yro.slashdot.org/story/17/12/07/1317249/keylogger-found-on-nearly-5500-wordpress-sites) - yro.slashdot.org, 2017 - [Thousands of WordPress sites infected with a Keylogger and cryptocurrency miner scripts](http://securityaffairs.co/wordpress/66432/hacking/keylogger.html) - securityaffairs.co, 2017 - [キーロガー&マイニング用スクリプト入りのマルウェアがWordPressで流行中、5500近いサイトに感染](https://gigazine.net/news/20171208-wordpress-keylogger/) - gigazine.net, 2017 Source: https://publicwww.com/docs/use-cases/security/ --- # Cryptojacking - [Hackers Still Favor Cryptojacking Malware Despite Bearish Cryptocurrency Market Conditions](https://coincentral.com/hackers-still-favor-cryptojacking-malware/) - coincentral.com, 2019 - [Popular ‘cryptojacking’ service Coinhive will shut down next week](https://www.theverge.com/2019/2/28/18244636/coinhive-cryptojacking-cryptocurrency-mining-shut-down-monero-date) - theverge.com, 2019 - [4000以上の政府系サイトで閲覧者に対して仮想通貨マイニングを行わせるスクリプトが埋め込まれていたことが判明](https://gigazine.net/news/20180213-government-websites-hacked-for-mining/) - gigazine.net, 2018 - [Australian govt sites hijacked by crypto coin miner](https://www.itnews.com.au/news/australian-govt-sites-hijacked-by-crypto-miner-484951) - itnews.com.au, 2018 - [Cryptocurrency News: Hackers Infect Indian State Government Websites With Mining Tool](https://www.ibtimes.com/cryptocurrency-news-hackers-infect-indian-state-government-websites-mining-tool-2717767) - ibtimes.com, 2018 - [Cryptojacking On The Rise: WebCobra Malware Uses Victims' Computers To Mine Cryptocurrency](https://www.forbes.com/sites/rachelwolfson/2018/11/13/cryptojacking-on-the-rise-webcobra-malware-uses-victims-computers-to-mine-cryptocurrency/) - forbes.com, 2018 - [Cryptojacking: Attackers Hijack Indian Government Websites to Mine Cryptocurrency](https://www.ccn.com/cryptojacking-attackers-hijack-indian-government-websites-to-mine-cryptocurrency/) - ccn.com, 2018 - [Cryptojacking: hackers secuestraron sitios web del gobierno indio para minar criptomonedas](https://www.diariobitcoin.com/index.php/2018/09/19/cryptojacking-hackers-secuestraron-sitios-web-del-gobierno-indio-para-minar-criptomonedas/) - diariobitcoin.com, 2018 - [Des milliers de sites gouvernementaux piratés](https://www.lesnumeriques.com/vie-du-net/milliers-sites-gouvernementaux-pirates-n71477.html) - lesnumeriques.com, 2018 - [Duizenden overheidswebsites wereldwijd gehackt door cryptominers](http://datanews.knack.be/ict/nieuws/duizenden-overheidswebsites-wereldwijd-gehackt-door-cryptominers/article-normal-963439.html) - datanews.knack.be, 2018 - [Government websites, including uscourts.gov, pulled into cryptomining scheme](https://www.cyberscoop.com/cryptomining-government-websites-browsealoud-us-courts-wmata/) - cyberscoop.com, 2018 - [Hackers mined a fortune from Indian websites](https://economictimes.indiatimes.com/small-biz/startups/newsbuzz/hackers-mined-a-fortune-from-indian-websites/articleshow/65836088.cms) - economictimes.indiatimes.com, 2018 - [Hackers mined a fortune from Indian websites](https://www.gadgetsnow.com/tech-news/hackers-mined-a-fortune-from-indian-websites/articleshow/65840607.cms) - gadgetsnow.com, 2018 - [Hackers used Australian government websites to mine cryptocurrency, security researcher says](http://www.abc.net.au/news/science/2018-02-12/hackers-use-australian-govt-websites-to-mine-cryptocurrency/9421906) - abc.net.au, 2018 - [How hackers earned millions courtesy these Indian websites](https://www.gadgetsnow.com/tech-news/how-hackers-earned-millions-courtesy-these-indian-websites/articleshow/65869491.cms) - gadgetsnow.com, 2018 - [How many websites are mining cryptocurrency? We analyzed 175M+ domains to find out.](https://ahrefs.com/blog/cryptomining-study/) - ahrefs.com, 2018 - [How Scammers Steal Your Computing Power to Mine Cryptocurrencies](https://slate.com/technology/2018/02/what-is-cryptojacking-the-bitcoin-and-monero-mining-process-that-steals-your-computing-power-explained.html?via=gdpr-consent) - slate.com, 2018 - [Hundreds of Websites Infected with Coinhive Software, Visitors Mine Monero Unawares](https://coincentral.com/hundreds-of-websites-infected-with-coinhive-software-visitors-mine-monero-unawares/) - coincentral.com, 2018 - [Indian Govt Websites Targeted by Hackers: Cryptojacking on the Rise in India](https://www.cryptoground.com/a/indian-govt-websites-cryptojacking) - cryptoground.com, 2018 - [Mais de 4.200 sites foram infetados com script para minerar criptomoedas](https://tek.sapo.pt/noticias/computadores/artigos/mais-de-4-200-sites-foram-infetados-com-script-para-minerar-criptomoedas) - tek.sapo.pt, 2018 - [Más de 4 mil sitios fueron “secuestrados” para minar criptomonedas](https://www.infobae.com/america/tecno/2018/02/12/mas-de-4-mil-sitios-fueron-secuestrados-para-minar-criptomonedas/) - infobae.com, 2018 - [NSA Tools Used to Unleash Crypto Mining Malware by Hackers](https://coincentral.com/nsa-tools-used-to-unleash-crypto-mining-malware-by-hackers/) - coincentral.com, 2018 - [Overheidssites VS en VK draaiden cryptominer via populaire plug-in](https://tweakers.net/nieuws/135121/overheidssites-vs-en-vk-draaiden-cryptominer-via-populaire-plug-in.html) - tweakers.net, 2018 - [Plus de 4.000 sites gouvernementaux hackés pour miner la cryptomonnaie Monero](http://www.clubic.com/antivirus-securite-informatique/virus-hacker-piratage/malware-logiciel-malveillant/actualite-842637-4-000-sites-gouvernementaux-hackes-miner-cryptomonnaie-monero.html) - clubic.com, 2018 - [Public service websites among those affected by 'coin-jacking' attack](https://www.rte.ie/news/2018/0212/940101-hack-cryptocurrency/) - rte.ie, 2018 - [Thousands of websites worldwide hijacked by cryptocurrency mining code due Browsealoud plugin hack](http://securityaffairs.co/wordpress/68966/hacking/browsealoud-plugin-hack.html) - securityaffairs.co, 2018 - [Tusenvis av offentlig eide nettsteder kan ha utvunnet kryptovaluta for kriminelle](https://www.digi.no/artikler/tusenvis-av-offentlig-eide-nettsteder-kan-ha-utvunnet-kryptovaluta-for-kriminelle/430257) - digi.no, 2018 - [U.K. and U.S. Government Websites Among Thousands Infected by Cryptocurrency Miner](https://threatpost.com/u-k-and-u-s-government-websites-among-thousands-infected-by-cryptocurrency-miner/129886/) - threatpost.com, 2018 - [U.S. & UK Govt Sites Injected With Miners After Popular Script Was Hacked](https://www.bleepingcomputer.com/news/security/u-s-and-uk-govt-sites-injected-with-miners-after-popular-script-was-hacked/) - bleepingcomputer.com, 2018 - [UK ICO, USCourts.gov... Thousands of websites hijacked by hidden crypto-mining code after popular plugin pwned](https://www.theregister.co.uk/2018/02/11/browsealoud_compromised_coinhive/) - theregister.co.uk, 2018 - [Who and What Is Coinhive?](https://krebsonsecurity.com/2018/03/who-and-what-is-coinhive/) - krebsonsecurity.com, 2018 - [Cookie Consent Script Drops In-Browser Cryptocurrency Miner](https://www.bleepingcomputer.com/news/security/cookie-consent-script-drops-in-browser-cryptocurrency-miner/) - bleepingcomputer.com, 2017 - [Cryptojackers Found on Starbucks WiFi Network, GitHub, Pirate Streaming Sites](https://www.bleepingcomputer.com/news/security/cryptojackers-found-on-starbucks-wifi-network-github-pirate-streaming-sites/) - bleepingcomputer.com, 2017 - [Cryptojacking Script Found in Live Help Widget, Impacts Around 1,500 Sites](https://www.bleepingcomputer.com/news/security/cryptojacking-script-found-in-live-help-widget-impacts-around-1-500-sites/) - bleepingcomputer.com, 2017 - [Sprawdź, czy Twoja gmina nie kopie kryptowalut. To się może zdarzyć](https://niebezpiecznik.pl/post/sprawdz-czy-twoja-gmina-nie-kopie-kryptowalut-to-sie-moze-zdarzyc/) - niebezpiecznik.pl, 2017 - [Unauthorized Coin Mining in the Browser](https://researchcenter.paloaltonetworks.com/2017/10/unit42-unauthorized-coin-mining-browser/) - researchcenter.paloaltonetworks.com, 2017 - [Wordpress, infezione da cryptojacking con contorno di keylogger](http://punto-informatico.it/4417080/PI/News/wordpress-infezione-cryptojacking-contorno-keylogger.aspx) - punto-informatico.it, 2017 Source: https://publicwww.com/docs/use-cases/cryptojacking/ --- # Videos & courses - [Find 1000+ Website Examples Of Your Favourite Theme(s)](https://www.youtube.com/watch?v=A-YKPVVIhgM) - Ferdy Korpershoek, 2022 - [Break And Enter Dropbox - Amazon Key Gets Hacked - ThreatWire](https://www.youtube.com/watch?v=YFgKJ2liAUs&t=394s) - Hak5, 2018 - [Publicwww est un moteur de recherche de code source](https://www.facebook.com/390653564684603/videos/498108477272444/) - Facebook, 2018 - [Spy on competitors, behavioural psychology, research tools & more](https://www.youtube.com/watch?v=f52LRxm05VQ&t=337s) - Growth Tribe, 2018 - [Using PublicWWW for SEO Purposes](https://www.youtube.com/watch?v=ZLrFH96Nk3E) - CJ Rooney, 2018 - [Advanced search functions to GET even more Business](https://www.youtube.com/watch?v=kdVnomB4kUI) - Abbas Ravji, 2016 Source: https://publicwww.com/docs/use-cases/videos/ --- # Languages PublicWWW is available in thirteen languages. Search works the same in all of them: it matches Latin letters, digits and the underscore. ## The site in your language Every language has its own address. The pages, the documentation and the sign-in email are the same everywhere; your account, plan and searches work on all of them. - [English](https://publicwww.com/) publicwww.com ✓ - [Deutsch](https://de.publicwww.com/) de.publicwww.com - [Español](https://es.publicwww.com/) es.publicwww.com - [Français](https://fr.publicwww.com/) fr.publicwww.com - [Português](https://pt.publicwww.com/) pt.publicwww.com - [Italiano](https://it.publicwww.com/) it.publicwww.com - [Türkçe](https://tr.publicwww.com/) tr.publicwww.com - [Русский](https://ru.publicwww.com/) ru.publicwww.com - [Українська](https://ua.publicwww.com/) ua.publicwww.com - [日本語](https://ja.publicwww.com/) ja.publicwww.com - [한국어](https://ko.publicwww.com/) ko.publicwww.com - [简体中文](https://zh.publicwww.com/) zh.publicwww.com - [繁體中文](https://hk.publicwww.com/) hk.publicwww.com ## What a search matches The index splits the source code of a page into words made of the Latin letters `a-z`, the digits `0-9` and the underscore `_`. Upper and lower case are the same. Every other character works like a space: punctuation, accented letters such as é, ü, ñ or ç, and the letters of other alphabets - Cyrillic, Greek, Arabic, Hebrew, Chinese, Japanese, Korean. - A query written only in other alphabets finds nothing: those characters are not in the index. - A word with an accented letter breaks at it: `café` is searched as `caf`. - Everything written in Latin characters is found as usual - script addresses, tracking IDs, class names, domain names, HTTP headers. In source code that is nearly everything worth searching for. ## Finding sites in a language or a country Look for the Latin markers a page carries about itself: the language in the `` tag, the character set, the country domain, or a service popular in that market. ### Language of the page `" # Plans and Pricing It's free to get started. You only pay for advanced access to the full database. ## Free Open **Top 3M** websites (Most popular of 977M pages) [Sign Up](https://publicwww.com/profile/enter.html) ## Pro Open **All** websites (977M+ pages now) **100** searches/day up to **100K** rows $49/day or $79/week $109/month or $1090/year [Sign Up](https://publicwww.com/profile/enter.html) ## Business Open **All** websites (977M+ pages now) **200** searches/day up to **300K** rows $199/month or $1990/year [Sign Up](https://publicwww.com/profile/enter.html) ## Enterprise Open **All** websites (977M+ pages now) **300** searches/day up to **1M** rows $499/month or $4990/year [Sign Up](https://publicwww.com/profile/enter.html) ## Compare Plans | | Free | Pro | Business | Enterprise | | --- | --- | --- | --- | --- | | Open webpages | from top 3M | whole index | whole index | whole index | | API access | - | yes | yes | yes | | MCP access | - | yes | yes | yes | | Maximum search size (rows) | 1 000 | 100 000 | 300 000 | 1 000 000 | | Searches / day | - | 100 | 200 | 300 | | Max cluster size (rows) | 100 | 100 000 | 300 000 | 1 000 000 | | Extract cluster (records / day) | 100 | 100 000 | 300 000 | 1 000 000 | | Download with snippets (rows) | 20 | 1 000 | 3 000 | 10 000 | | Download with snippets / day | - | 30 | 50 | 100 | ## Frequently Asked Questions **Are prices shown in USD?** Yes. All plan prices are in USD. **How long are these contracts?** We support one-month purchases, as well as month-to-month subscriptions which can be cancelled any time. **Is there a free trial or demo?** There's no free trial, but you are able to test out what PublicWWW has to offer for free. That way you can be sure before you buy. Source: https://publicwww.com/prices.html