Every window replacement company we could verify advertising on Meta in the United States. We asked each page directly on 4 September 2026: 76 companies, 80 pages, 3,227 live creatives. What they say, what they promise, how much they run, how long it lasts.
Meta's public ad library. We ask every advertiser page by its own id. We never search a phrase to find one, because a phrase cannot count an advertiser. This week the keyword sweep returned 13 live creatives for the busiest page. Asking that page directly returned 231 the same day. We count only the pages we verified as in this trade.
Every figure below says which unit it counted. A creative is one ad. A page is what Meta returns. A company is what you would call one business. One company here runs 3 of them. We name no company anywhere on this page. The census is about the trade, not about anyone in it.
The roster held 144 verified pages when we published this edition. This run queried 80 of them. 80 returned creatives. We verified the other 64 after the run. They count from the next edition.
How we found the roster. We run 58 keyword queries each week. 46 of them turn up a page in this trade. Each query returns a median of 14 pages, most of them outside the trade. Of the 144 verified pages, one query alone found 92 this week, and two or more found 52. No query found 0. We picked those up in an earlier week, or by hand. The largest overlap between any two queries is 22 pages. So this counts the verified roster, not every advertiser in the trade. A page a different query would find is not in it.
| Counted | Companies | Pages | Live creatives |
|---|---|---|---|
| Everyone verified | 76 | 80 | 3,227 |
| Under a franchise system (3 systems) | 35 | 37 | 1,775 |
| Not a franchise | 41 | 43 | 1,452 |
The product in this trade is an in-home visit. The ad's button is where that visit is or is not asked for.
| Button | Creatives | Share | Pages using it | Companies using it |
|---|---|---|---|---|
| Learn more | 1,636 | 51% | 36 | 32 |
| Get quote | 529 | 16% | 26 | 26 |
| Get offer | 390 | 12% | 5 | 5 |
| See details | 304 | 9% | 22 | 20 |
| Apply now | 62 | 2% | 5 | 5 |
| Book now | 61 | 2% | 8 | 8 |
| Sign up | 28 | 1% | 5 | 5 |
| Contact us | 13 | 0% | 8 | 8 |
| Visit Instagram profile | 6 | 0% | 2 | 2 |
| Call now | 4 | 0% | 4 | 4 |
| Send message | 3 | 0% | 3 | 3 |
| Get in touch | 2 | 0% | 1 | 1 |
| Request time | 2 | 0% | 2 | 2 |
| No button | 1 | 0% | 1 | 1 |
8 of 76 companies use "Book now" on any creative at all. "Learn more" is on 51% of everything live.
We read these from the ad text by pattern. The patterns sit under the table, so you can see what matched. A company counts once, however many creatives carry the line.
| Promise | Companies | Pages | Creatives |
|---|---|---|---|
| free consultation, estimate or quote | 35 | 37 | 363 |
| a percentage off | 22 | 24 | 1,269 |
| financing, no interest or no payments | 15 | 15 | 248 |
| one-day install | 7 | 7 | 105 |
| a dollar amount off | 6 | 6 | 23 |
| a lifetime warranty | 6 | 6 | 162 |
| "looking for N homeowners" | 4 | 6 | 922 |
| Promise | Pattern (case-insensitive, over title and body) |
|---|---|
| free consultation, estimate or quote | \bfree\b[^.!?\n]{0,25}\b(consultation|estimate|quote|design) |
| one-day install | \b(one|1)[- ]day\b |
| a percentage off | \b(\d{2})\s?%\s*off\b |
| a dollar amount off | \$\s?\d{1,2}?,?\d{3}\s*(off|savings|instant|in savings)|\b(save|savings of)\s*\$\s?\d{1,2}?,?\d{3}\b |
| financing, no interest or no payments | \bno (interest|payments?)\b|\bfinancing\b|\b0\s?%\s*(apr|interest|financing) |
| "looking for N homeowners" | \blooking for \d+ homeowners\b |
| a lifetime warranty | \blifetime warranty\b |
The split that matters is not size. It is whether the page sits under a franchise agreement. No franchise agreement for this trade has been read. The split is reported and not explained. Pages under a system and companies outside one run different volumes; why is not claimed here.
| Group | Unit | Median live creatives | Top quarter | Most | n |
|---|---|---|---|---|---|
| Not a franchise | company | 6 | 22 | 252 | 41 |
| Not a franchise | page | 6 | 26 | 218 | 43 |
| Under franchise system A | page | 16.5 | 44.2 | 231 | 26 |
| Under franchise system B | page | 21.5 | 23.8 | 140 | 10 |
"Not a franchise" means just that. It does not mean small: the four busiest run 252, 218, 210 and 168 live creatives each. A one-truck independent is not in this group. We found none advertising at a scale the roster could verify.
Put your own number against these at the volume tool.
Age is days since the ad's reported start, for creatives live on the capture date. This is not a survival rate. A creative that runs long is live on more days, so any one day's count over-represents it. We measure survival below, from the same pages on two weeks running.
Median 25 days. A quarter of what is live is under 8 days old; one in ten is past 113. The oldest live creative is 2,653 days. 121 of 3,227 have been running over six months. 92 of 3,227 have run over a year; the oldest is 2,653 days.
Weighted by company instead, one median per company across 76 companies, the median is 50.5 days. The figure above leans on the few companies that run the most creatives. Both are printed because they differ.
Place your own creative on this at the age tool.
The opening line of the ad body, and the oldest live creative carrying it. Running long means somebody kept paying for it. It does not say the line converts, and it cannot: spend and results are not public.
| Line | Days | Creatives | Companies |
|---|---|---|---|
| Roofing, Siding, Windows, Gutters and more. Insurance Restoration, Renovation, or New Construction. Give us a call today! | 2,653 | 1 | 1 |
| Family Owned Window and Door Sales, Installation, and Service Company. | 2,327 | 1 | 1 |
| [brand] Carpentry & Roofing provides roofing, siding and gutter services to New England ( MA, RI, CT, NH, ME, VT) Year Established 2013 | 2,038 | 4 | 1 |
| We are proud of our products and services. Like our page to find out how [brand] is Improving Homes and Changing Lives. | 1,030 | 21 | 6 |
| [brand], Venango, Armstrong, Indiana, Clarion, and Forest installs energy-efficient windows, doors, siding, and more for | 898 | 3 | 1 |
| [brand] Company was founded with a single purpose - to provide the homeowners of | 864 | 1 | 1 |
| 🚨 Protect Your Home with [brand] Roofing! Get a Free Quote Today +1 (855)-588-1497 | 854 | 1 | 1 |
| Experience the ultimate protection for your home with [brand] Roofing! | 854 | 1 | 1 |
| Replacement windows from [brand] provide substantial energy efficiency and savings for your home. | 822 | 26 | 5 |
| Upgrade Your Entry Doors Today! 🚪✨ Get a Free Quote Now & Improve Your Home's Security and Curb Appeal. | 820 | 3 | 1 |
Some lines are one shape run in many places. The same sentence with a number or a place name swapped:
| Shape, one example | Versions live | Oldest | Creatives | Companies |
|---|---|---|---|---|
| We're looking for 150 homeowners in DES MOINES for a Window & Door Transformation! | 58 | 151d | 329 | 3 |
| We're looking for 150 homeowners in ULSTER COUNTY for a WINDOW & DOOR Transformation! | 37 | 44d | 561 | 2 |
| 😍These Affordable ‘Everlasting' Windows Hit Nearly Every Household in 2025. | 2 | 86d | 44 | 2 |
The full list, and a place to check a line of your own, is at the line tool.
4 of 76 companies have a job ad live: 34 creatives whose text is hiring, not selling. We count them in the totals above and keep them out of the line ranking.
| The pattern we matched |
|---|
\b(now hiring|we'?re hiring|hiring|join our team|join the team|careers?\b|job position|apply today|apply now|open positions?|we are looking for (installers|sales reps|technicians))\b |
41 of 76 companies send every live creative to one domain. 23 use two or more. 12 have no link off Meta on any creative. Of 3,227 creatives, 191 have no link at all.
| Format | Creatives | Share |
|---|---|---|
| Dynamic (DCO) | 1,068 | 33% |
| Video | 1,058 | 33% |
| Image | 849 | 26% |
| Not stated | 172 | 5% |
| Carousel | 68 | 2% |
| Page like | 9 | 0% |
| Multiple images | 2 | 0% |
| Multiple videos | 1 | 0% |
The roster grows as we verify pages, so you cannot compare the totals in this table between weeks. The pages column says how many we counted each time. The rate below you can compare, because it counts only the pages that answered in both weeks.
| Week | Pages | Live creatives | Median age |
|---|---|---|---|
| 2026-W36 | 80 | 3,227 | 25d |
One roster week on record. A survival rate needs two. It is the share of creatives live this week that are still live next week, on the same pages. It prints here the day the second week lands.
Every creative behind these numbers, as the library returned it, with its group and the role of its page: windows-2026-W36.json.gz, 3,227 rows of gzipped JSON. We withhold page ids, ad ids, names, links and domains. Brand tokens in ad text read [brand], and a person's name reads [name]. Check any figure on this page against it.
We publish the rows under CC BY 4.0. Use them, and cite the edition: Expenety, the window ad census, edition 2026-W36.
data/record/census.py rebuilds this edition from the record, and this page
renders from its output. Nobody typed a number here.