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
allnot_read_robots_unreachableNot read: robots.txt did not answer (an error or no response), so we did not crawlsites33820.00792026-10-012026-10-02
allnot_read_disallowedNot read: robots.txt disallows our crawlersites13820.00262026-10-012026-10-02
allhome_okHomepage loadedsites whose homepage we requested3613780.9552026-10-012026-10-02
allsample_beyond_homeAt least one page beyond the homepage readsites whose homepage loaded3183610.88092026-10-012026-10-02
allhttpsServed over HTTPSsites whose homepage loaded36136112026-10-012026-10-02
allno_answer_engine_blockedTest 1: robots.txt blocks none of GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extendedsites whose robots.txt answered3773790.99472026-10-012026-10-02
allllms_validTest 2: has an llms.txt that starts with a title line, as the llmstxt.org format askssites where we checked /llms.txt1083780.28572026-10-012026-10-02
alllocal_business_napTest 3: homepage has a LocalBusiness (or subtype) node with the business's name, phone, and addresssites whose homepage loaded1563610.43212026-10-012026-10-02
allpws_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)1803610.49862026-10-012026-10-02
allcitableTest 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)2153610.59562026-10-012026-10-02
allall_fivePasses all five testssites whose robots.txt, llms.txt, and homepage were all read433610.11912026-10-012026-10-02
alltests_passed_0Passes exactly 0 of the five testssites whose robots.txt, llms.txt, and homepage were all read036102026-10-012026-10-02
alltests_passed_1Passes exactly 1 of the five testssites whose robots.txt, llms.txt, and homepage were all read813610.22442026-10-012026-10-02
alltests_passed_2Passes exactly 2 of the five testssites whose robots.txt, llms.txt, and homepage were all read693610.19112026-10-012026-10-02
alltests_passed_3Passes exactly 3 of the five testssites whose robots.txt, llms.txt, and homepage were all read873610.2412026-10-012026-10-02
alltests_passed_4Passes exactly 4 of the five testssites whose robots.txt, llms.txt, and homepage were all read813610.22442026-10-012026-10-02
alltests_passed_5Passes exactly 5 of the five testssites whose robots.txt, llms.txt, and homepage were all read433610.11912026-10-012026-10-02
allprice_structuredA price in structured data (an Offer price, or a priceRange with a number)sites whose homepage loaded (up to 8 pages read each)103610.02772026-10-012026-10-02
allprice_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)953610.26322026-10-012026-10-02
allwarranty_structuredA warranty in structured datasites whose homepage loaded (up to 8 pages read each)23610.00552026-10-012026-10-02
allwarranty_anyA warranty term with its length (years or lifetime), in structured data or page textsites whose homepage loaded (up to 8 pages read each)1393610.3852026-10-012026-10-02
allspec_structuredA product spec in structured data (additionalProperty on a Product or Service)sites whose homepage loaded (up to 8 pages read each)13610.00282026-10-012026-10-02
allspec_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)443610.12192026-10-012026-10-02
allpws_structuredA price, warranty, or product spec in structured datasites whose homepage loaded (up to 8 pages read each)133610.0362026-10-012026-10-02
allfaq_structuredFAQPage structured datasites whose homepage loaded (up to 8 pages read each)1073610.29642026-10-012026-10-02
allfaq_anyFAQ content: FAQPage schema, or an FAQ page or section with three or more questionssites whose homepage loaded (up to 8 pages read each)1833610.50692026-10-012026-10-02
alldatasetA published dataset (Dataset schema, a /data/ section, or a CSV, JSON, or spreadsheet download)sites whose homepage loaded (up to 8 pages read each)036102026-10-012026-10-02
allnumeric_tableAn HTML table with numbers in itsites whose homepage loaded (up to 8 pages read each)333610.09142026-10-012026-10-02
allservice_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)1803610.49862026-10-012026-10-02
alllicense_on_siteA contractor license number (Arizona ROC format) on the sitesites whose homepage loaded (up to 8 pages read each)1763610.48752026-10-012026-10-02
allyears_in_businessYears in business stated ("since 1998", "25 years of experience", or foundingDate)sites whose homepage loaded (up to 8 pages read each)2163610.59832026-10-012026-10-02
alljsonldHomepage has JSON-LD structured datasites whose homepage loaded2693610.74522026-10-012026-10-02
alllocal_businessHomepage has a LocalBusiness (or subtype) nodesites whose homepage loaded1833610.50692026-10-012026-10-02
allnap_in_schemaHomepage schema gives the business's name, phone, and address together (any business node)sites whose homepage loaded1573610.43492026-10-012026-10-02
allduplicate_business_nodesHomepage has more than one separate business nodesites whose homepage loaded873610.2412026-10-012026-10-02
allconflicting_napBusiness schema gives more than one phone or street address across the pages readsites whose homepage loaded (up to 8 pages read each)253610.06932026-10-012026-10-02
alljsonld_errorsHomepage has a JSON-LD block that does not parsesites whose homepage loaded63610.01662026-10-012026-10-02
allreview_markupReview or aggregateRating markup on a page readsites whose homepage loaded (up to 8 pages read each)673610.18562026-10-012026-10-02
allsame_asHomepage business node lists sameAs profilessites whose homepage loaded (up to 8 pages read each)1443610.39892026-10-012026-10-02
allheavy_homepageHomepage is over 150 KB of HTMLsites whose homepage loaded (up to 8 pages read each)2233610.61772026-10-012026-10-02
allgeneric_titleA page read has a template title ("Complete Guide", "Everything You Need")sites whose homepage loaded (up to 8 pages read each)33610.00832026-10-012026-10-02
allpost_bylineThe blog post read names a person as its authorsites where we read a blog post661990.33172026-10-012026-10-02
allpost_datedThe blog post read shows a datesites where we read a blog post951990.47742026-10-012026-10-02
allllms_presentHas an llms.txt filesites where we checked /llms.txt1283780.33862026-10-012026-10-02
allrobots_readHas a robots.txt with rulessites whose robots.txt answered3133790.82592026-10-012026-10-02
allblocks_gptbotrobots.txt blocks GPTBot from the homepagesites whose robots.txt answered23790.00532026-10-012026-10-02
allblocks_oai-searchbotrobots.txt blocks OAI-SearchBot from the homepagesites whose robots.txt answered13790.00262026-10-012026-10-02
allblocks_claudebotrobots.txt blocks ClaudeBot from the homepagesites whose robots.txt answered13790.00262026-10-012026-10-02
allblocks_perplexitybotrobots.txt blocks PerplexityBot from the homepagesites whose robots.txt answered13790.00262026-10-012026-10-02
allblocks_google-extendedrobots.txt blocks Google-Extended from the homepagesites whose robots.txt answered23790.00532026-10-012026-10-02
allblocks_ccbotrobots.txt blocks CCBot from the homepagesites whose robots.txt answered23790.00532026-10-012026-10-02
allblocks_any_answer_enginerobots.txt blocks at least one of GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extendedsites whose robots.txt answered23790.00532026-10-012026-10-02
allblocks_any_ai_crawlerBlocks any AI crawler in robots.txtsites whose robots.txt answered23790.00532026-10-012026-10-02
allnames_gptbotrobots.txt has a rule group naming GPTBotsites with a robots.txt file323130.10222026-10-012026-10-02
allnames_any_ai_agentrobots.txt has a rule group naming any of the six AI agentssites with a robots.txt file353130.11182026-10-012026-10-02
allplatform_wordpressWordPresssites whose homepage loaded1853610.51252026-10-012026-10-02
allplatform_wixWixsites whose homepage loaded153610.04162026-10-012026-10-02
allplatform_squarespaceSquarespacesites whose homepage loaded83610.02222026-10-012026-10-02
allplatform_godaddyGoDaddy Website Buildersites whose homepage loaded123610.03322026-10-012026-10-02
allplatform_dudaDudasites whose homepage loaded143610.03882026-10-012026-10-02
allplatform_webflowWebflowsites whose homepage loaded63610.01662026-10-012026-10-02
allplatform_shopifyShopifysites whose homepage loaded13610.00282026-10-012026-10-02
allplatform_hubspotHubSpotsites whose homepage loaded036102026-10-012026-10-02
allplatform_weeblyWeeblysites whose homepage loaded23610.00552026-10-012026-10-02
allplatform_otherOther or not detectedsites whose homepage loaded1183610.32692026-10-012026-10-02
hvacnot_read_robots_unreachableNot read: robots.txt did not answer (an error or no response), so we did not crawlsites11470.00682026-10-012026-10-02
hvacnot_read_disallowedNot read: robots.txt disallows our crawlersites11470.00682026-10-012026-10-02
hvachome_okHomepage loadedsites whose homepage we requested1351450.9312026-10-012026-10-02
hvacsample_beyond_homeAt least one page beyond the homepage readsites whose homepage loaded1201350.88892026-10-012026-10-02
hvachttpsServed over HTTPSsites whose homepage loaded13513512026-10-012026-10-02
hvacno_answer_engine_blockedTest 1: robots.txt blocks none of GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extendedsites whose robots.txt answered1451460.99322026-10-012026-10-02
hvacllms_validTest 2: has an llms.txt that starts with a title line, as the llmstxt.org format askssites where we checked /llms.txt371450.25522026-10-012026-10-02
hvaclocal_business_napTest 3: homepage has a LocalBusiness (or subtype) node with the business's name, phone, and addresssites whose homepage loaded671350.49632026-10-012026-10-02
hvacpws_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)721350.53332026-10-012026-10-02
hvaccitableTest 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)911350.67412026-10-012026-10-02
hvacall_fivePasses all five testssites whose robots.txt, llms.txt, and homepage were all read201350.14812026-10-012026-10-02
hvactests_passed_0Passes exactly 0 of the five testssites whose robots.txt, llms.txt, and homepage were all read013502026-10-012026-10-02
hvactests_passed_1Passes exactly 1 of the five testssites whose robots.txt, llms.txt, and homepage were all read241350.17782026-10-012026-10-02
hvactests_passed_2Passes exactly 2 of the five testssites whose robots.txt, llms.txt, and homepage were all read261350.19262026-10-012026-10-02
hvactests_passed_3Passes exactly 3 of the five testssites whose robots.txt, llms.txt, and homepage were all read341350.25192026-10-012026-10-02
hvactests_passed_4Passes exactly 4 of the five testssites whose robots.txt, llms.txt, and homepage were all read311350.22962026-10-012026-10-02
hvactests_passed_5Passes exactly 5 of the five testssites whose robots.txt, llms.txt, and homepage were all read201350.14812026-10-012026-10-02
hvacprice_structuredA price in structured data (an Offer price, or a priceRange with a number)sites whose homepage loaded (up to 8 pages read each)61350.04442026-10-012026-10-02
hvacprice_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)471350.34812026-10-012026-10-02
hvacwarranty_structuredA warranty in structured datasites whose homepage loaded (up to 8 pages read each)11350.00742026-10-012026-10-02
hvacwarranty_anyA warranty term with its length (years or lifetime), in structured data or page textsites whose homepage loaded (up to 8 pages read each)491350.3632026-10-012026-10-02
hvacspec_structuredA product spec in structured data (additionalProperty on a Product or Service)sites whose homepage loaded (up to 8 pages read each)11350.00742026-10-012026-10-02
hvacspec_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)321350.2372026-10-012026-10-02
hvacpws_structuredA price, warranty, or product spec in structured datasites whose homepage loaded (up to 8 pages read each)81350.05932026-10-012026-10-02
hvacfaq_structuredFAQPage structured datasites whose homepage loaded (up to 8 pages read each)481350.35562026-10-012026-10-02
hvacfaq_anyFAQ content: FAQPage schema, or an FAQ page or section with three or more questionssites whose homepage loaded (up to 8 pages read each)751350.55562026-10-012026-10-02
hvacdatasetA published dataset (Dataset schema, a /data/ section, or a CSV, JSON, or spreadsheet download)sites whose homepage loaded (up to 8 pages read each)013502026-10-012026-10-02
hvacnumeric_tableAn HTML table with numbers in itsites whose homepage loaded (up to 8 pages read each)91350.06672026-10-012026-10-02
hvacservice_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)861350.6372026-10-012026-10-02
hvaclicense_on_siteA contractor license number (Arizona ROC format) on the sitesites whose homepage loaded (up to 8 pages read each)711350.52592026-10-012026-10-02
hvacyears_in_businessYears in business stated ("since 1998", "25 years of experience", or foundingDate)sites whose homepage loaded (up to 8 pages read each)831350.61482026-10-012026-10-02
hvacjsonldHomepage has JSON-LD structured datasites whose homepage loaded1071350.79262026-10-012026-10-02
hvaclocal_businessHomepage has a LocalBusiness (or subtype) nodesites whose homepage loaded781350.57782026-10-012026-10-02
hvacnap_in_schemaHomepage schema gives the business's name, phone, and address together (any business node)sites whose homepage loaded671350.49632026-10-012026-10-02
hvacduplicate_business_nodesHomepage has more than one separate business nodesites whose homepage loaded401350.29632026-10-012026-10-02
hvacconflicting_napBusiness schema gives more than one phone or street address across the pages readsites whose homepage loaded (up to 8 pages read each)131350.09632026-10-012026-10-02
hvacjsonld_errorsHomepage has a JSON-LD block that does not parsesites whose homepage loaded31350.02222026-10-012026-10-02
hvacreview_markupReview or aggregateRating markup on a page readsites whose homepage loaded (up to 8 pages read each)391350.28892026-10-012026-10-02
hvacsame_asHomepage business node lists sameAs profilessites whose homepage loaded (up to 8 pages read each)621350.45932026-10-012026-10-02
hvacheavy_homepageHomepage is over 150 KB of HTMLsites whose homepage loaded (up to 8 pages read each)761350.5632026-10-012026-10-02
hvacgeneric_titleA page read has a template title ("Complete Guide", "Everything You Need")sites whose homepage loaded (up to 8 pages read each)013502026-10-012026-10-02
hvacpost_bylineThe blog post read names a person as its authorsites where we read a blog post23820.28052026-10-012026-10-02
hvacpost_datedThe blog post read shows a datesites where we read a blog post41820.52026-10-012026-10-02
hvacllms_presentHas an llms.txt filesites where we checked /llms.txt511450.35172026-10-012026-10-02
hvacrobots_readHas a robots.txt with rulessites whose robots.txt answered1201460.82192026-10-012026-10-02
hvacblocks_gptbotrobots.txt blocks GPTBot from the homepagesites whose robots.txt answered11460.00682026-10-012026-10-02
hvacblocks_oai-searchbotrobots.txt blocks OAI-SearchBot from the homepagesites whose robots.txt answered11460.00682026-10-012026-10-02
hvacblocks_claudebotrobots.txt blocks ClaudeBot from the homepagesites whose robots.txt answered11460.00682026-10-012026-10-02
hvacblocks_perplexitybotrobots.txt blocks PerplexityBot from the homepagesites whose robots.txt answered11460.00682026-10-012026-10-02
hvacblocks_google-extendedrobots.txt blocks Google-Extended from the homepagesites whose robots.txt answered11460.00682026-10-012026-10-02
hvacblocks_ccbotrobots.txt blocks CCBot from the homepagesites whose robots.txt answered11460.00682026-10-012026-10-02
hvacblocks_any_answer_enginerobots.txt blocks at least one of GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extendedsites whose robots.txt answered11460.00682026-10-012026-10-02
hvacblocks_any_ai_crawlerBlocks any AI crawler in robots.txtsites whose robots.txt answered11460.00682026-10-012026-10-02
hvacnames_gptbotrobots.txt has a rule group naming GPTBotsites with a robots.txt file131200.10832026-10-012026-10-02
hvacnames_any_ai_agentrobots.txt has a rule group naming any of the six AI agentssites with a robots.txt file131200.10832026-10-012026-10-02
hvacplatform_wordpressWordPresssites whose homepage loaded751350.55562026-10-012026-10-02
hvacplatform_wixWixsites whose homepage loaded41350.02962026-10-012026-10-02
hvacplatform_squarespaceSquarespacesites whose homepage loaded21350.01482026-10-012026-10-02
hvacplatform_godaddyGoDaddy Website Buildersites whose homepage loaded11350.00742026-10-012026-10-02
hvacplatform_dudaDudasites whose homepage loaded21350.01482026-10-012026-10-02
hvacplatform_webflowWebflowsites whose homepage loaded21350.01482026-10-012026-10-02
hvacplatform_shopifyShopifysites whose homepage loaded11350.00742026-10-012026-10-02
hvacplatform_hubspotHubSpotsites whose homepage loaded013502026-10-012026-10-02
hvacplatform_weeblyWeeblysites whose homepage loaded11350.00742026-10-012026-10-02
hvacplatform_otherOther or not detectedsites whose homepage loaded471350.34812026-10-012026-10-02
roofingnot_read_robots_unreachableNot read: robots.txt did not answer (an error or no response), so we did not crawlsites11250.0082026-10-012026-10-02
roofingnot_read_disallowedNot read: robots.txt disallows our crawlersites012502026-10-012026-10-02
roofinghome_okHomepage loadedsites whose homepage we requested1211240.97582026-10-012026-10-02
roofingsample_beyond_homeAt least one page beyond the homepage readsites whose homepage loaded1061210.8762026-10-012026-10-02
roofinghttpsServed over HTTPSsites whose homepage loaded12112112026-10-012026-10-02
roofingno_answer_engine_blockedTest 1: robots.txt blocks none of GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extendedsites whose robots.txt answered1231240.99192026-10-012026-10-02
roofingllms_validTest 2: has an llms.txt that starts with a title line, as the llmstxt.org format askssites where we checked /llms.txt401240.32262026-10-012026-10-02
roofinglocal_business_napTest 3: homepage has a LocalBusiness (or subtype) node with the business's name, phone, and addresssites whose homepage loaded561210.46282026-10-012026-10-02
roofingpws_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)581210.47932026-10-012026-10-02
roofingcitableTest 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)711210.58682026-10-012026-10-02
roofingall_fivePasses all five testssites whose robots.txt, llms.txt, and homepage were all read141210.11572026-10-012026-10-02
roofingtests_passed_0Passes exactly 0 of the five testssites whose robots.txt, llms.txt, and homepage were all read012102026-10-012026-10-02
roofingtests_passed_1Passes exactly 1 of the five testssites whose robots.txt, llms.txt, and homepage were all read291210.23972026-10-012026-10-02
roofingtests_passed_2Passes exactly 2 of the five testssites whose robots.txt, llms.txt, and homepage were all read211210.17362026-10-012026-10-02
roofingtests_passed_3Passes exactly 3 of the five testssites whose robots.txt, llms.txt, and homepage were all read241210.19832026-10-012026-10-02
roofingtests_passed_4Passes exactly 4 of the five testssites whose robots.txt, llms.txt, and homepage were all read331210.27272026-10-012026-10-02
roofingtests_passed_5Passes exactly 5 of the five testssites whose robots.txt, llms.txt, and homepage were all read141210.11572026-10-012026-10-02
roofingprice_structuredA price in structured data (an Offer price, or a priceRange with a number)sites whose homepage loaded (up to 8 pages read each)21210.01652026-10-012026-10-02
roofingprice_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)281210.23142026-10-012026-10-02
roofingwarranty_structuredA warranty in structured datasites whose homepage loaded (up to 8 pages read each)11210.00832026-10-012026-10-02
roofingwarranty_anyA warranty term with its length (years or lifetime), in structured data or page textsites whose homepage loaded (up to 8 pages read each)461210.38022026-10-012026-10-02
roofingspec_structuredA product spec in structured data (additionalProperty on a Product or Service)sites whose homepage loaded (up to 8 pages read each)012102026-10-012026-10-02
roofingspec_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)91210.07442026-10-012026-10-02
roofingpws_structuredA price, warranty, or product spec in structured datasites whose homepage loaded (up to 8 pages read each)31210.02482026-10-012026-10-02
roofingfaq_structuredFAQPage structured datasites whose homepage loaded (up to 8 pages read each)381210.3142026-10-012026-10-02
roofingfaq_anyFAQ content: FAQPage schema, or an FAQ page or section with three or more questionssites whose homepage loaded (up to 8 pages read each)631210.52072026-10-012026-10-02
roofingdatasetA published dataset (Dataset schema, a /data/ section, or a CSV, JSON, or spreadsheet download)sites whose homepage loaded (up to 8 pages read each)012102026-10-012026-10-02
roofingnumeric_tableAn HTML table with numbers in itsites whose homepage loaded (up to 8 pages read each)161210.13222026-10-012026-10-02
roofingservice_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)561210.46282026-10-012026-10-02
roofinglicense_on_siteA contractor license number (Arizona ROC format) on the sitesites whose homepage loaded (up to 8 pages read each)621210.51242026-10-012026-10-02
roofingyears_in_businessYears in business stated ("since 1998", "25 years of experience", or foundingDate)sites whose homepage loaded (up to 8 pages read each)731210.60332026-10-012026-10-02
roofingjsonldHomepage has JSON-LD structured datasites whose homepage loaded891210.73552026-10-012026-10-02
roofinglocal_businessHomepage has a LocalBusiness (or subtype) nodesites whose homepage loaded641210.52892026-10-012026-10-02
roofingnap_in_schemaHomepage schema gives the business's name, phone, and address together (any business node)sites whose homepage loaded561210.46282026-10-012026-10-02
roofingduplicate_business_nodesHomepage has more than one separate business nodesites whose homepage loaded301210.24792026-10-012026-10-02
roofingconflicting_napBusiness schema gives more than one phone or street address across the pages readsites whose homepage loaded (up to 8 pages read each)81210.06612026-10-012026-10-02
roofingjsonld_errorsHomepage has a JSON-LD block that does not parsesites whose homepage loaded11210.00832026-10-012026-10-02
roofingreview_markupReview or aggregateRating markup on a page readsites whose homepage loaded (up to 8 pages read each)191210.1572026-10-012026-10-02
roofingsame_asHomepage business node lists sameAs profilessites whose homepage loaded (up to 8 pages read each)521210.42982026-10-012026-10-02
roofingheavy_homepageHomepage is over 150 KB of HTMLsites whose homepage loaded (up to 8 pages read each)801210.66122026-10-012026-10-02
roofinggeneric_titleA page read has a template title ("Complete Guide", "Everything You Need")sites whose homepage loaded (up to 8 pages read each)21210.01652026-10-012026-10-02
roofingpost_bylineThe blog post read names a person as its authorsites where we read a blog post26680.38242026-10-012026-10-02
roofingpost_datedThe blog post read shows a datesites where we read a blog post33680.48532026-10-012026-10-02
roofingllms_presentHas an llms.txt filesites where we checked /llms.txt431240.34682026-10-012026-10-02
roofingrobots_readHas a robots.txt with rulessites whose robots.txt answered1041240.83872026-10-012026-10-02
roofingblocks_gptbotrobots.txt blocks GPTBot from the homepagesites whose robots.txt answered11240.00812026-10-012026-10-02
roofingblocks_oai-searchbotrobots.txt blocks OAI-SearchBot from the homepagesites whose robots.txt answered012402026-10-012026-10-02
roofingblocks_claudebotrobots.txt blocks ClaudeBot from the homepagesites whose robots.txt answered012402026-10-012026-10-02
roofingblocks_perplexitybotrobots.txt blocks PerplexityBot from the homepagesites whose robots.txt answered012402026-10-012026-10-02
roofingblocks_google-extendedrobots.txt blocks Google-Extended from the homepagesites whose robots.txt answered11240.00812026-10-012026-10-02
roofingblocks_ccbotrobots.txt blocks CCBot from the homepagesites whose robots.txt answered11240.00812026-10-012026-10-02
roofingblocks_any_answer_enginerobots.txt blocks at least one of GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extendedsites whose robots.txt answered11240.00812026-10-012026-10-02
roofingblocks_any_ai_crawlerBlocks any AI crawler in robots.txtsites whose robots.txt answered11240.00812026-10-012026-10-02
roofingnames_gptbotrobots.txt has a rule group naming GPTBotsites with a robots.txt file101040.09622026-10-012026-10-02
roofingnames_any_ai_agentrobots.txt has a rule group naming any of the six AI agentssites with a robots.txt file101040.09622026-10-012026-10-02
roofingplatform_wordpressWordPresssites whose homepage loaded641210.52892026-10-012026-10-02
roofingplatform_wixWixsites whose homepage loaded41210.03312026-10-012026-10-02
roofingplatform_squarespaceSquarespacesites whose homepage loaded21210.01652026-10-012026-10-02
roofingplatform_godaddyGoDaddy Website Buildersites whose homepage loaded41210.03312026-10-012026-10-02
roofingplatform_dudaDudasites whose homepage loaded81210.06612026-10-012026-10-02
roofingplatform_webflowWebflowsites whose homepage loaded21210.01652026-10-012026-10-02
roofingplatform_shopifyShopifysites whose homepage loaded012102026-10-012026-10-02
roofingplatform_hubspotHubSpotsites whose homepage loaded012102026-10-012026-10-02
roofingplatform_weeblyWeeblysites whose homepage loaded012102026-10-012026-10-02
roofingplatform_otherOther or not detectedsites whose homepage loaded371210.30582026-10-012026-10-02
windowsnot_read_robots_unreachableNot read: robots.txt did not answer (an error or no response), so we did not crawlsites11100.00912026-10-012026-10-02
windowsnot_read_disallowedNot read: robots.txt disallows our crawlersites011002026-10-012026-10-02
windowshome_okHomepage loadedsites whose homepage we requested1051090.96332026-10-012026-10-02
windowssample_beyond_homeAt least one page beyond the homepage readsites whose homepage loaded921050.87622026-10-012026-10-02
windowshttpsServed over HTTPSsites whose homepage loaded10510512026-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.