The searches around Grammarly are mostly about AI. I wanted to see whether its ads use the same word, so I ran one regular expression over what my collector kept on October 30, 2026: Meta and LinkedIn ad texts, decoded Google headlines and Google Trends queries.
The split is sharp. 27 of 30 LinkedIn ad texts mention AI. 0 of 30 Meta ad texts do. On the search side, 7 of the 10 rising queries are about AI humanizers or AI detectors.
Sources and what the collector keeps
Four public sources, one run each:
- Meta Ad Library, the Grammarly Facebook page: 150 ads, all 150 active.
- LinkedIn Ad Library, company name "Grammarly", capped at 50 ads. All 50 come from the Grammarly page.
-
Google Ads Transparency Center, domain
grammarly.com: 150 ads, every one of them from an advertiser entity named Superhuman Platform Inc. - Google Trends, the term "Grammarly" over 12 months: top and rising related queries.
Aggregates (formats, CTAs) cover all ads. For text, the collector keeps 30 Meta bodies, 30 LinkedIn texts (cut at 300 characters) and 30 decoded Google headlines.
The script
A text counts as an AI mention if it contains "AI", humanizer, detector, GPTZero or Authorship (Grammarly's feature for showing how a text was written).
import json
import re
with open("promo/data/2026-10-30-grammarly.json", encoding="utf-8") as f:
d = json.load(f)
AI = re.compile(r"\bAI\b|humaniz|detector|gptzero|authorship", re.I)
INTEGRITY = re.compile(r"integrity|authorship", re.I)
EXISTING = re.compile(r"already", re.I)
def count(texts, rx):
return sum(1 for t in texts if rx.search(t))
meta = d["facebook"]["bodies"]
google = d["google"]["headlines"]
li = d["linkedin"]["texts"]
rising = [q for q, _ in d["trends"]["risingQueries"]]
top = d["trends"]["topQueries"]
print(f"Trends top queries: {count(top, AI)} of {len(top)} mention AI/detection")
print(f"Trends rising queries: {count(rising, AI)} of {len(rising)} mention AI/detection")
print(f" ...about cancelling/subscription: {count(rising, re.compile('subscription'))}")
print(f"Google headlines kept: {count(google, AI)} of {len(google)} mention AI")
print(f"Meta bodies kept: {count(meta, AI)} of {len(meta)} mention AI ({len(set(meta))} distinct)")
print(f"LinkedIn texts kept: {count(li, AI)} of {len(li)} mention AI")
print(f" ...integrity/Authorship: {count(li, INTEGRITY)}")
print(f" ...'already' (existing customers): {count(li, EXISTING)}")
print(f" ...Message Ads (%FIRSTNAME%): {count(li, re.compile('%FIRSTNAME%'))}")
print("Google advertisers:", d["google"]["advertisers"])
Output, pasted as-is:
Trends top queries: 5 of 10 mention AI/detection
Trends rising queries: 7 of 10 mention AI/detection
...about cancelling/subscription: 3
Google headlines kept: 6 of 30 mention AI
Meta bodies kept: 0 of 30 mention AI (4 distinct)
LinkedIn texts kept: 27 of 30 mention AI
...integrity/Authorship: 16
...'already' (existing customers): 16
...Message Ads (%FIRSTNAME%): 8
Google advertisers: [['Superhuman Platform Inc.', 150]]
The search side
The rising queries, as Trends returns them, include "grammarly humanizer" (+190%), "ai humanizer grammarly" (+160%), "turnitin ai detector" (+90%) and "is grammarly ai" (+70%). Half of the top queries are AI-related too, starting with "grammarly ai" and "ai detector grammarly".
The other three rising queries are about money: "cancel grammarly subscription" (+190%), "how to cancel grammarly subscription" (+140%) and "grammarly subscription" (+130%). Interest in "Grammarly" averaged 64.6 over the year, peaked at 100 on November 2, 2025, and sits at 64 now, -25.6% over the period. Trends gives no volumes, so these are relative shifts in what people type.
The Meta side: four lines, no AI
The 30 Meta bodies boil down to 4 distinct texts, and none of them uses the word. The most repeated one is in Spanish:
"Revisión en tiempo real de todo lo que escribes."
(Real-time review of everything you write.)
The most repeated English one sells the mobile keyboard:
"Don’t let incorrect word usage and grammar mistakes send mixed messages. Get writing suggestions for correctness, clarity, and vocabulary in every app as you type!"
Another frames it as a work problem:
"Keep getting pinged? With Grammarly, you write clearer messages that cut through the clutter."
The buttons match the install pitch: across all 150 Meta ads, "Download" appears on 74 and "Install now" on 70. Formats split 78 image, 72 video.
The LinkedIn side: campuses and academic integrity
The LinkedIn copy speaks to university IT and academic leaders, and AI sits in almost every text. 16 of the 30 mention academic integrity or Authorship, and 16 contain "already", meaning they address institutions that use Grammarly today:
"You’re already supporting your institution with Grammarly. See how Rowan-Cabarrus took the next step with Authorship, reducing academic integrity violations by 96% in one semester while improving developmental English pass rates."
"How do you embrace AI without compromising academic integrity? Get a practical framework for setting expectations, building transparent policies, and aligning AI use with learning objectives."
The 96% is the ad's own claim; I haven't checked it. 8 of the 30 texts are Message Ads opening with "Hi %FIRSTNAME%"; across all 50 ads the formats are 23 single image, 15 message and 11 document. Two texts name "Superhuman Go for Higher Ed", which fits the advertiser name on Google.
So search and LinkedIn meet on one topic from opposite directions: searches rise for tools that make AI text pass detectors, while the ads sell schools a way to see how a text was written.
What this data can't tell you
- Small, truncated slices. Each count comes from 30 texts (10 for Trends), not from all ads. The 30 Meta bodies repeat only 4 lines, so the Meta result rests on very little copy.
- Google is mostly dark. All eight longest-shown Google ads have empty headline and description fields and share a first-shown date of March 28, 2023, which looks like the edge of the library's history. I count AI mentions in the 30 decoded headlines (6 of 30) and draw nothing else from Google copy.
- No spend, no results, no EU details. LinkedIn published dates, impressions and targeting for 0 of the 50 ads, so I can't say where or how long they ran. Nothing here shows budgets or which message works.
Running it on another brand
I built these scrapers. The LinkedIn Ad Library Scraper takes a company name and returns ad text, format, CTA and advertiser, and the Google Trends Scraper returns interest over time with top and rising queries, both as JSON or CSV you can feed to a script like the one above. They're free to try on the Apify free plan, and a run of a few hundred ads costs well under a dollar.
Not affiliated with Grammarly; all data is from public ad libraries.
My regex counts "AI" as one topic, but "AI that writes for you" and "AI that checks who wrote it" are opposite pitches. How would you split them with a rule you could still audit, without hand-labelling?
Top comments (4)
Channel comparisons are most informative when the sampling frame is explicit. Audience, format, campaign objective, and time window can all explain a creative difference before the word “AI” does. Publishing those boundaries turns an interesting count into evidence another analyst can challenge or reproduce.
Fair point, and the post is thin on exactly that. The frame, explicitly:
So the 27 vs 0 compares a consumer install campaign with a B2B higher-ed campaign as much as it compares two channels. Audience and objective probably explain more of the gap than the platform does. Next time I'll put the frame in a short table at the top and compare like with like where the data allows. Thanks for pushing on it.
That framing makes the result much more useful. A small stratified follow-up—same objective, audience, language, and creative format across both libraries—would turn it from an interesting snapshot into a comparison someone can reproduce. Thanks for making the limitations explicit.
Agreed. The catch is that the two libraries don't expose the same fields: neither shows campaign objective directly, and audience data only exists for ads shown in the EU (Meta's EU reach and demographics, LinkedIn's targeting). So the closest match I can build is same language, same format and EU-shown ads only, with the CTA as a rough stand-in for objective. I'll try that stratification in a future teardown and publish the strata counts alongside the result.