Black Friday Ads on Meta: What Last Year's Campaigns Show, and When to Start
Black Friday ads start much earlier than the sale. In Meta's Ad Library, about 30,000 ads that mentioned "Black Friday" were live in the UK in the week of 20 October 2025, and more than 50,000 from the week after. Black Friday itself was 28 November.
We pulled last year's campaigns to see when they started, what they offered and how brands scaled up. This year Black Friday is 27 November and Cyber Monday is 30 November, so the window to plan is now.
The short version
- Ads ramp up in October. At least 4,400 "Black Friday" ads were already live in the first week of October 2025. By the week of 20 October there were about 30,000, and more than 50,000 every week from 27 October.
- Cyber Monday comes late. Ads mentioning it stayed in the hundreds until late October, then jumped to 41,280 in the week of 1 December.
- Half off is the anchor. Among ads that named a percentage, the median top discount was 50%. The middle half offered 40% to 60%.
- Most ads lead with a percentage. 59% named one. Money off, buy one get one and free gifts each showed up in under 4% of ads.
- 37% gave no concrete offer at all. Just "Black Friday sale" and a product.
- Most brands doubled their ads or more from late October. Myprotein went furthest, at 3.6 times. Peak weeks ranged from 27 October to 8 December, depending on the brand.
First, why this data comes from the UK library
Meta's Ad Library keeps a different history in each region. In the US, commercial ads leave the library once they stop running. Ads that ran in the EU stay for a year, as the EU's Digital Services Act requires, and we found the same for ads shown in the UK.
That makes a big difference for research. For Gymshark, the US library returned 6 stopped ads. The UK library returned 2,566 stopped ads from November 2025 alone.
So everything below comes from ads that reached people in the UK. That still includes plenty of global brands, and the timing and offer patterns are a fair guide for any market. If you want a competitor's past Black Friday ads, check whether they advertise in the UK or EU. If they do, the last year of their ads is there.
How fast Black Friday ads ramp up
We counted how many ads mentioning "Black Friday" were live in each week of autumn 2025.
The first two bars are minimums. The library drops an ad about a year after it last ran, and we pulled this data on 19 October 2026, so many early-October ads that ran briefly had already gone. Ads come and go fast: this year, only about a third of the Black Friday ads live in the week of 5 October were still running on 20 October. The real early-October counts were well above what the library shows now.
From 20 October the counts are complete: about 30,000 that week, then more than 50,000, the highest number the library's counter shows. From 27 October onward, all we can say is "more than 50,000." The real peak was higher.
The takeaway is the timing. By the time most shoppers think about Black Friday, tens of thousands of advertisers are already a month into their campaigns, and the auction is crowded.
Cyber Monday comes later
Cyber Monday ads followed a different curve. They stayed small through October and only took off in the last two weeks.
| Week starting | "Cyber Monday" ads live |
|---|---|
| 6 October | At least 224 |
| 20 October | 470 |
| 3 November | 3,180 |
| 17 November | 6,732 |
| 24 November | 16,784 |
| 1 December | 41,280 |
| 8 December | 13,052 |
Most brands treat Cyber Monday as an extension, not a separate campaign. If you want Cyber Monday creative that stands apart, it needs to be ready by mid-November, when the volume starts to climb.
What the offers looked like
We read 170 ads from 110 advertisers that were live during Black Friday fortnight (17 November to 1 December 2025) and sorted their offers.
| Offer type | Share of ads |
|---|---|
| A percentage off | 59% |
| "Up to" a percentage | 31% |
| Urgency ("ends tonight", "last chance") | 19% |
| Free delivery | 12% |
| "Lowest price" or "biggest sale" | 6% |
| Buy one get one, or multi-buy | 4% |
| Money off (£20 off) | 2% |
| Free gift | 2% |
| No concrete offer | 37% |
The percentage dominates. When an ad named one, this is how deep the biggest discount went:
Two things stand out. First, 50% is the most common number by a wide margin, so a 20% offer reads as small next to everything else in the feed. Second, money-off offers, gifts and bundles are rare. If your margins can't stretch to 50%, a gift with purchase or a bundle is a way to look different without competing on the same number as everyone else.
Formats, placements and calls to action
| What we looked at | Result |
|---|---|
| Dynamic creative (Meta mixes headlines and images) | 28% |
| Video | 24% |
| Single image | 24% |
| Catalog ads (products pulled from a feed) | 21% |
| Ran on both Facebook and Instagram | 95% |
| Also ran on Threads | 62% |
| Median number of placements | 5 |
| "Shop now" button | 70% |
| More than one version of the ad | 27% |
Almost nobody picks one platform. The median Black Friday ad ran on five placements: Facebook, Instagram, Messenger, the Audience Network and Threads.
We also checked when these ads launched. Of the ads live during Black Friday fortnight, 44% had started before 15 November, and 30% launched in Black Friday week itself. Brands keep a base of earlier ads running and add a wave of new ones in the final week.
When individual brands scaled up
Totals hide what each brand did, so we tracked ten UK-active brands week by week. For each, we compared its busiest week with the week of 20 October, the first week we have in full.
There's no single playbook:
- Early movers. ASOS and Argos peaked in the week of 27 October, a full month before Black Friday. Both had already ramped up by 20 October, so their growth from that week looks small.
- The week before. Gymshark went from 316 live ads in the week of 20 October to 981 in the week of 17 November.
- Black Friday week. boohoo, John Lewis and Charlotte Tilbury peaked in the week of 24 November.
- Cyber week. Simba, Myprotein and Lounge Underwear peaked in the week of 1 December.
- The odd one out. The Ordinary peaked in December. It's known for stepping back from Black Friday, and its ads show it.
If you're watching a competitor, their curve from last year is the best guess at this year's. Brands repeat what worked.
What this means for Black Friday 2026
- Have Black Friday creative live by late October. Last year the count reached about 30,000 in the week of 20 October. Waiting until November means testing creative in the most expensive weeks.
- Decide how you'll compete with 50% off. Either match the anchor, or step away from percentages with a bundle, a gift or a guarantee. Very few ads do the second, which is the point.
- Say the offer. 37% of ads named no offer at all. An ad with a clear number gives people a reason to click.
- Prepare Cyber Monday separately, by mid-November. The volume climbs fast in the last two weeks, and most brands reuse their Black Friday creative.
- Plan versions. About a quarter of ads ran several variants, and dynamic creative was the single most common format. Give the system more than one headline and image to work with.
How to track it yourself
The counts above come from the Ad Library's search, run one week at a time. This counts how many "Black Friday" ads are live each week right now, so you can watch this year's ramp as it happens. In JavaScript (Node 18 or later, as an .mjs file):
const API = "https://api.sociavault.com/v1/scrape";
const HEADERS = { "x-api-key": process.env.SOCIAVAULT_API_KEY };
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
async function liveAds(query, start, end, country = "GB") {
const params = new URLSearchParams({
query,
search_type: "keyword_exact_phrase",
country,
status: "ALL",
start_date: start,
end_date: end,
});
const res = await fetch(`${API}/facebook-ad-library/search?${params}`, {
headers: HEADERS,
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
return (await res.json()).data?.searchResultsCount;
}
const weeks = [
["2026-10-05", "2026-10-11"],
["2026-10-12", "2026-10-18"],
["2026-10-19", "2026-10-25"],
];
for (const [start, end] of weeks) {
console.log(start, await liveAds("black friday", start, end));
await sleep(1000);
}
And in Python:
import os
import time
import requests
API = "https://api.sociavault.com/v1/scrape"
HEADERS = {"x-api-key": os.environ["SOCIAVAULT_API_KEY"]}
def live_ads(query, start, end, country="GB"):
r = requests.get(
f"{API}/facebook-ad-library/search",
headers=HEADERS,
params={
"query": query,
"search_type": "keyword_exact_phrase",
"country": country,
"status": "ALL",
"start_date": start,
"end_date": end,
},
timeout=60,
)
r.raise_for_status()
return (r.json().get("data") or {}).get("searchResultsCount")
weeks = [("2026-10-05", "2026-10-11"), ("2026-10-12", "2026-10-18"), ("2026-10-19", "2026-10-25")]
for start, end in weeks:
print(start, live_ads("black friday", start, end))
time.sleep(1)
To follow one brand, look up its page with search-companies, then count its ads per week with company-ads. Add this to the JavaScript above:
// Lists can come back as arrays or as objects with numbered keys
const asList = (x) => (Array.isArray(x) ? x : Object.values(x ?? {}));
async function adLibrary(path, params) {
const res = await fetch(
`${API}/facebook-ad-library/${path}?${new URLSearchParams(params)}`,
{ headers: HEADERS },
);
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
return (await res.json()).data ?? {};
}
async function pageId(brand) {
const data = await adLibrary("search-companies", { query: brand });
return asList(data.searchResults)[0]?.page_id;
}
async function brandAds(id, start, end, country = "GB") {
const data = await adLibrary("company-ads", {
pageId: id,
country,
status: "ALL",
start_date: start,
end_date: end,
});
return data.searchResultsCount;
}
const gymshark = await pageId("Gymshark");
console.log(await brandAds(gymshark, "2026-10-12", "2026-10-18"));
And to the Python:
def as_list(x):
# Lists can come back as lists or as dicts with numbered keys
return list(x.values()) if isinstance(x, dict) else (x or [])
def page_id(brand):
r = requests.get(f"{API}/facebook-ad-library/search-companies",
headers=HEADERS, params={"query": brand}, timeout=60)
r.raise_for_status()
results = as_list((r.json().get("data") or {}).get("searchResults"))
return results[0].get("page_id") if results else None
def brand_ads(pid, start, end, country="GB"):
r = requests.get(f"{API}/facebook-ad-library/company-ads", headers=HEADERS, timeout=60,
params={"pageId": pid, "country": country, "status": "ALL",
"start_date": start, "end_date": end})
r.raise_for_status()
return (r.json().get("data") or {}).get("searchResultsCount")
gymshark = page_id("Gymshark")
print(brand_ads(gymshark, "2026-10-12", "2026-10-18"))
Each call costs 1 credit. A ten-week curve for one brand is 10 credits. For a full prep checklist, see how to prep for Black Friday with competitor ad data, and to read what video ads actually say, see Meta ad transcripts.
How we did it
- Source: Meta Ad Library, country set to the UK, active and stopped ads, pulled on 19 October 2026 through SociaVault's Ad Library search and company ads endpoints.
- Weekly counts: exact-phrase searches for "black friday" and "cyber monday", one Monday-to-Sunday week at a time, from 6 October to 14 December 2025. An ad counts in a week if it was live at any point in that week.
- Offer sample: 170 ads from 110 advertisers that mentioned "black friday" and were live between 17 November and 1 December 2025. We sorted offers with simple text rules, such as a number followed by "% off".
- Brands: ten consumer brands that advertise in the UK, each compared with its own count in the week of 20 October. We dropped two brands whose page matches were unreliable.
- Cost: about 180 credits in total.
Limits. The Ad Library's counter shows up to 50,000 results, so the peak weeks are a floor, not a total. The library also drops ads about a year after they last ran, so the weeks of 6 and 13 October are minimums too, and we compare brands with 20 October instead of early October. Keyword search only finds ads that say "Black Friday" in their text. The offer sample is the first pages of search results, not a random draw, and it includes some advertisers based outside the UK whose ads reached UK users. Treat the percentages as a picture of the market, not a census.
The weekly counts, offer shares, discount depths and brand curves are in the CSV download. You're free to reuse them with a link back to this page.
Frequently Asked Questions
When do Black Friday ads start on Facebook and Instagram?
Early October. Last year at least 4,400 ads mentioning Black Friday were already live in the first week of October, about 30,000 in the week of 20 October and more than 50,000 from 27 October. Brands' busiest weeks ranged from late October to Cyber week.
Can I see a competitor's Black Friday ads from last year?
Only if they ran in the EU or UK. Meta keeps stopped ads from those regions for a year, so last year's Black Friday ads stay visible until about this year's Black Friday. Ads that only ran in the US leave the library once they stop running.
What discount do most Black Friday ads offer?
When an ad names a percentage, 50% off is the most common, followed by 40% and 60%. The median top discount in our sample was 50%.
Should Black Friday ads run on Facebook or Instagram?
Both. 95% of the ads we sampled ran on Facebook and Instagram together, and the median ad ran on five placements, including Messenger, the Audience Network and Threads.
When should Cyber Monday ads start?
Mid-November. Cyber Monday ad volume more than doubled in each of the last two weeks and peaked in Cyber Monday week, at more than 41,000 live ads.
Want to watch your competitors' Black Friday ads as they launch? Sign up for 50 free credits and run the weekly count above on the brands you care about.
Found this helpful?
Share it with others who might benefit
Ready to Try SociaVault?
Start extracting social media data with our powerful API. No credit card required.