One-off study, October 2026, updated , by Ben Hinton

Phoenix contractor websites: AI readiness, October 2026

How ready 382 contractor websites in Phoenix (roofing, HVAC, windows and doors) are for AI search, from up to 8 pages each, read Oct 1, 2026 to Oct 2, 2026: five tests (AI crawler access in robots.txt, llms.txt, LocalBusiness structured data, published prices, warranties, and specs, and other citable data) with the score distribution, plus FAQ, dataset, table, license, review markup, and platform measures and per-crawler robots.txt rules. Aggregate counts only, by trade, each with its sample size.

Download

CSV · JSON · 260 rows · CC BY 4.0

The data

groupmeasurelabelbasecountofshareread_fromread_to
windowsno_answer_engine_blockedTest 1: robots.txt blocks none of GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extendedsites whose robots.txt answered10910912026-10-012026-10-02
windowsllms_validTest 2: has an llms.txt that starts with a title line, as the llmstxt.org format askssites where we checked /llms.txt311090.28442026-10-012026-10-02
windowslocal_business_napTest 3: homepage has a LocalBusiness (or subtype) node with the business's name, phone, and addresssites whose homepage loaded331050.31432026-10-012026-10-02
windowspws_anyTest 4: publishes a price, a warranty term, or a product spec, in structured data or in page textsites whose homepage loaded (up to 8 pages read each)501050.47622026-10-012026-10-02
windowscitableTest 5: publishes two or more of five kinds of other citable data (FAQ, dataset, table of numbers, service-area cities, license number or years in business)sites whose homepage loaded (up to 8 pages read each)531050.50482026-10-012026-10-02
windowsall_fivePasses all five testssites whose robots.txt, llms.txt, and homepage were all read91050.08572026-10-012026-10-02
windowstests_passed_0Passes exactly 0 of the five testssites whose robots.txt, llms.txt, and homepage were all read010502026-10-012026-10-02
windowstests_passed_1Passes exactly 1 of the five testssites whose robots.txt, llms.txt, and homepage were all read281050.26672026-10-012026-10-02
windowstests_passed_2Passes exactly 2 of the five testssites whose robots.txt, llms.txt, and homepage were all read221050.20952026-10-012026-10-02
windowstests_passed_3Passes exactly 3 of the five testssites whose robots.txt, llms.txt, and homepage were all read291050.27622026-10-012026-10-02
windowstests_passed_4Passes exactly 4 of the five testssites whose robots.txt, llms.txt, and homepage were all read171050.16192026-10-012026-10-02
windowstests_passed_5Passes exactly 5 of the five testssites whose robots.txt, llms.txt, and homepage were all read91050.08572026-10-012026-10-02
windowsprice_structuredA price in structured data (an Offer price, or a priceRange with a number)sites whose homepage loaded (up to 8 pages read each)21050.0192026-10-012026-10-02
windowsprice_anyA price, in structured data or page text (a range, per unit, installed, or starting at)sites whose homepage loaded (up to 8 pages read each)201050.19052026-10-012026-10-02
windowswarranty_structuredA warranty in structured datasites whose homepage loaded (up to 8 pages read each)010502026-10-012026-10-02
windowswarranty_anyA warranty term with its length (years or lifetime), in structured data or page textsites whose homepage loaded (up to 8 pages read each)441050.4192026-10-012026-10-02
windowsspec_structuredA product spec in structured data (additionalProperty on a Product or Service)sites whose homepage loaded (up to 8 pages read each)010502026-10-012026-10-02
windowsspec_anyA product spec with its value (U-factor, SEER2, impact class, and the like), in structured data or page textsites whose homepage loaded (up to 8 pages read each)31050.02862026-10-012026-10-02
windowspws_structuredA price, warranty, or product spec in structured datasites whose homepage loaded (up to 8 pages read each)21050.0192026-10-012026-10-02
windowsfaq_structuredFAQPage structured datasites whose homepage loaded (up to 8 pages read each)211050.22026-10-012026-10-02
windowsfaq_anyFAQ content: FAQPage schema, or an FAQ page or section with three or more questionssites whose homepage loaded (up to 8 pages read each)451050.42862026-10-012026-10-02
windowsdatasetA published dataset (Dataset schema, a /data/ section, or a CSV, JSON, or spreadsheet download)sites whose homepage loaded (up to 8 pages read each)010502026-10-012026-10-02
windowsnumeric_tableAn HTML table with numbers in itsites whose homepage loaded (up to 8 pages read each)81050.07622026-10-012026-10-02
windowsservice_areaService-area cities: city location pages, or a service-area page naming three or more metro citiessites whose homepage loaded (up to 8 pages read each)381050.36192026-10-012026-10-02
windowslicense_on_siteA contractor license number (Arizona ROC format) on the sitesites whose homepage loaded (up to 8 pages read each)431050.40952026-10-012026-10-02
windowsyears_in_businessYears in business stated ("since 1998", "25 years of experience", or foundingDate)sites whose homepage loaded (up to 8 pages read each)601050.57142026-10-012026-10-02
windowsjsonldHomepage has JSON-LD structured datasites whose homepage loaded731050.69522026-10-012026-10-02
windowslocal_businessHomepage has a LocalBusiness (or subtype) nodesites whose homepage loaded411050.39052026-10-012026-10-02
windowsnap_in_schemaHomepage schema gives the business's name, phone, and address together (any business node)sites whose homepage loaded341050.32382026-10-012026-10-02
windowsduplicate_business_nodesHomepage has more than one separate business nodesites whose homepage loaded171050.16192026-10-012026-10-02
windowsconflicting_napBusiness schema gives more than one phone or street address across the pages readsites whose homepage loaded (up to 8 pages read each)41050.03812026-10-012026-10-02
windowsjsonld_errorsHomepage has a JSON-LD block that does not parsesites whose homepage loaded21050.0192026-10-012026-10-02
windowsreview_markupReview or aggregateRating markup on a page readsites whose homepage loaded (up to 8 pages read each)91050.08572026-10-012026-10-02
windowssame_asHomepage business node lists sameAs profilessites whose homepage loaded (up to 8 pages read each)301050.28572026-10-012026-10-02
windowsheavy_homepageHomepage is over 150 KB of HTMLsites whose homepage loaded (up to 8 pages read each)671050.63812026-10-012026-10-02
windowsgeneric_titleA page read has a template title ("Complete Guide", "Everything You Need")sites whose homepage loaded (up to 8 pages read each)11050.00952026-10-012026-10-02
windowspost_bylineThe blog post read names a person as its authorsites where we read a blog post17490.34692026-10-012026-10-02
windowspost_datedThe blog post read shows a datesites where we read a blog post21490.42862026-10-012026-10-02
windowsllms_presentHas an llms.txt filesites where we checked /llms.txt341090.31192026-10-012026-10-02
windowsrobots_readHas a robots.txt with rulessites whose robots.txt answered891090.81652026-10-012026-10-02
windowsblocks_gptbotrobots.txt blocks GPTBot from the homepagesites whose robots.txt answered010902026-10-012026-10-02
windowsblocks_oai-searchbotrobots.txt blocks OAI-SearchBot from the homepagesites whose robots.txt answered010902026-10-012026-10-02
windowsblocks_claudebotrobots.txt blocks ClaudeBot from the homepagesites whose robots.txt answered010902026-10-012026-10-02
windowsblocks_perplexitybotrobots.txt blocks PerplexityBot from the homepagesites whose robots.txt answered010902026-10-012026-10-02
windowsblocks_google-extendedrobots.txt blocks Google-Extended from the homepagesites whose robots.txt answered010902026-10-012026-10-02
windowsblocks_ccbotrobots.txt blocks CCBot from the homepagesites whose robots.txt answered010902026-10-012026-10-02
windowsblocks_any_answer_enginerobots.txt blocks at least one of GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extendedsites whose robots.txt answered010902026-10-012026-10-02
windowsblocks_any_ai_crawlerBlocks any AI crawler in robots.txtsites whose robots.txt answered010902026-10-012026-10-02
windowsnames_gptbotrobots.txt has a rule group naming GPTBotsites with a robots.txt file9890.10112026-10-012026-10-02
windowsnames_any_ai_agentrobots.txt has a rule group naming any of the six AI agentssites with a robots.txt file12890.13482026-10-012026-10-02
windowsplatform_wordpressWordPresssites whose homepage loaded461050.43812026-10-012026-10-02
windowsplatform_wixWixsites whose homepage loaded71050.06672026-10-012026-10-02
windowsplatform_squarespaceSquarespacesites whose homepage loaded41050.03812026-10-012026-10-02
windowsplatform_godaddyGoDaddy Website Buildersites whose homepage loaded71050.06672026-10-012026-10-02
windowsplatform_dudaDudasites whose homepage loaded41050.03812026-10-012026-10-02
windowsplatform_webflowWebflowsites whose homepage loaded21050.0192026-10-012026-10-02
windowsplatform_shopifyShopifysites whose homepage loaded010502026-10-012026-10-02
windowsplatform_hubspotHubSpotsites whose homepage loaded010502026-10-012026-10-02
windowsplatform_weeblyWeeblysites whose homepage loaded11050.00952026-10-012026-10-02
windowsplatform_otherOther or not detectedsites whose homepage loaded341050.32382026-10-012026-10-02

Method

The sample is every business we track in Phoenix's roofing, heating and air conditioning, and window and door trades that is active (confirmed as the trade) and has a website: 382 sites after removing duplicate listings of the same domain. Each site was read once, Oct 1, 2026 to Oct 2, 2026, by our crawler (CiteMyResearch/1.0 (+https://citemy.ai/research/phoenix-contractor-ai-readiness; contact https://citemy.ai/contact)), one request at a time per site, a second apart, at most four sites at once, with a 15-second timeout, and only at public addresses. We read robots.txt first and obeyed it for our own crawler: a site whose robots.txt disallows us, or does not answer (a server error or no response, which RFC 9309 says to treat as a full disallow), was not read further and is counted apart. Then /llms.txt, the homepage, the sitemap (the file robots.txt names or /sitemap.xml, and up to two files of a sitemap index), and up to 7 more pages from the sitemap and the homepage's links, 8 pages at most: pricing, warranty, FAQ, service, product, about, service-area, one blog post, and financing pages first, only pages robots.txt allows us. Crawler access is what robots.txt says for each AI agent's token at the homepage path, using the same robots.txt parser as our audit; we did not send requests as those agents, so a firewall that blocks them is not measured here. llms.txt counts as present when /llms.txt returns a non-HTML file, and valid when its first line is a "# " title, as the llmstxt.org format asks. Structured data is the pages' JSON-LD, read with our audit's parser. Prices, warranties, specs, license numbers, location pages, datasets, and duplicate or conflicting business nodes are judged with our audit's own checks and patterns; FAQ sections and tables are read from the page markup. The five tests: (1) AI answer-engine crawlers allowed: robots.txt does not block GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, or Google-Extended from the homepage (no robots.txt at all passes). (2) A valid llms.txt: /llms.txt is a text file whose first line is a "# " title, as the llmstxt.org format asks. (3) Business details in schema: The homepage's JSON-LD has a LocalBusiness node (or a subtype, such as RoofingContractor or HVACBusiness) that itself carries the business's name, a phone number, and an address. (4) Prices, warranties, or specs published: On any page we read, a price (an Offer price, a priceRange with a number, or a dollar figure stated as a range, per unit, installed, or "starting at"), a warranty with its length (in years, or lifetime), or a product spec with its value (U-factor, SHGC, SEER2, AFUE, impact class, wind rating, and the like), in structured data or in the page text. (5) Other citable data: At least two of five kinds, on the pages we read: FAQ content (FAQPage schema, or an FAQ page or section with three or more questions); a published dataset (Dataset schema, a /data/ section, or a CSV, JSON, or spreadsheet download); an HTML table with numbers in it (business hours do not count); service-area cities (city location pages, or a service-area page naming three or more of the metro's cities); and a business fact (a contractor license number, or years in business). A site is scored on the tests only when its robots.txt, llms.txt, and homepage were all read. Platform is detected from markers in the homepage HTML (theme and asset paths, generator tags), as in our audit. Every share is over the sites the measure could be read on, stated beside it. A share is stated only from 20 sites up. No business or website is named in this study or its data. Results describe what was measured, not a promise of ranking.

Sources

License: CC BY 4.0. Cite as: Phoenix contractor websites: AI readiness, October 2026, CiteMy (Ben Hinton), 2026-10-02, https://citemy.ai/data/phoenix-contractor-ai-readiness-2026-10

Want data like this for your business?

We build first-party datasets from your own jobs and publish them where the engines read. Start with a free audit: a score out of 100 and the three findings that matter most.