I pulled HubSpot's ads from the LinkedIn Ad Library. 40 ads, and 23 of them came back with no impressions, no targeting and no run dates.
Then I ran the same search with the country set to Germany. 40 of 40 had run dates, impressions and targeting.
Nothing broke. LinkedIn only publishes those fields for ads shown in the European Union, and this is the bit people keep filing bugs about.
The problem
The LinkedIn Ad Library at linkedin.com/ad-library shows the ads a company runs, with no login. For each ad you get the copy, the image or video and who paid. The good stuff, impressions, the country split, the targeting groups and the run dates, only exists for ads shown in the EU.
So an advertiser running mostly outside Europe looks half empty, and it's easy to assume your scraper is broken. It also changes week to week. When I first tested this search in September, 28 of 40 came back with the EU fields. Today it was 17.
Limits first. No spend. Impressions are ranges like "5k-10k", never exact numbers. Targeting tells you which groups were used (job, company, audience and so on), not the actual job titles or companies picked.
Two searches, same company
Both runs: company HubSpot, max 40 ads, details on, the default date window, the last 30 days. One with no country, one with countries: ["DE"]. Both started 2026-10-03 around 16:07 UTC and took about a minute each.
| No country filter | Germany | |
|---|---|---|
| Ads | 40 | 40 |
| With run dates | 17 | 40 |
| With an impressions range | 17 | 40 |
| With targeting | 17 | 40 |
| With the impressions split by country | 10 | 33 |
| Video ads | 14 | 14 |
Only 5 ads were in both runs.
Here's the part I didn't expect. Searching "HubSpot" doesn't only return HubSpot. It also returns partner agencies with HubSpot in their page name, things like "HubSpot Platinum Partner" and "MAN Digital: HubSpot & RevOps Agency". In the unfiltered run, 26 ads were paid for by HubSpot, Inc. and 14 by partners or individuals.
| Unfiltered run | Ads | With EU fields |
|---|---|---|
| Paid by HubSpot, Inc. | 26 | 3 |
| Paid by partners or individuals | 14 | 14 |
So all 23 empty rows were HubSpot's own ads, with headlines like "CRM slowing you down?", "A CRM Built To Scale." and "Finish every quarter on a high note.". None of them has run dates at all, and none showed up in the Germany run. LinkedIn has no EU data for them, and the usual reason is that the ad never ran in the EU.
The partner ads all had EU data: a Finnish partner targeting Finland, a Polish agency targeting the US and EMEA, and the rest targeting Germany and the Netherlands.
What the Germany run gives you instead:
- Impressions ranges from "1k-5k" up to "100k-150k". Three of HubSpot's DE ads were in the top band.
- Country splits that go past Germany. Ads shown in Germany also listed Switzerland and Austria (11 ads each), and some listed the US, the UK, Canada and Ireland.
- Targeting like this, from one of HubSpot's own DACH ads (trimmed to three of its six groups):
{
"language": { "includes": ["English"], "excludes": [] },
"location": { "includes": ["DACH"], "excludes": [] },
"parameters": [
{ "parameter": "Company", "targeted": true, "excluded": true },
{ "parameter": "Job", "targeted": true, "excluded": true },
{ "parameter": "Audience", "targeted": false, "excluded": false }
]
}
That ad's impressions split was Germany 68%, Switzerland 20%, Austria 12%. Seven ads in the Germany run had a total impressions range but no country split, so don't count on that one being there.
The solution
I use my own LinkedIn Ad Library Scraper on Apify. Give it company names, keywords, payers or a pasted Ad Library URL. Each ad comes back as one row with the copy, image and video links, who paid, the format, and the EU fields wherever LinkedIn publishes them: run dates, impressions range, impressions by country and targeting.
Two input notes from this test. Countries take ISO codes like DE or FR, not "EU". And if you only want the company's own ads, filter on payer afterwards, because the search matches page names.
Quick start (3 minutes)
- Open the LinkedIn Ad Library Scraper and click Try for free.
- Type a company in Companies, for example
HubSpot. Add an EU country your competitor sells in, like DE. Set max ads to 40. - Click Start, then open the Ads table or download CSV or JSON.
Code example
Runs both searches and compares how many rows came back with impressions:
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
actor = client.actor("agnes.developer.queen/linkedin-ad-library-scraper")
for countries in ([], ["DE"]):
run = actor.call(run_input={"companies": ["HubSpot"], "countries": countries,
"maxAdsPerSearch": 40, "withDetails": True})
ads = client.dataset(run["defaultDatasetId"]).list_items().items
own = [a for a in ads if a["payer"] == "HubSpot, Inc."]
with_eu = sum(1 for a in ads if a["totalImpressions"])
print(countries or "no filter", len(ads), "ads,", with_eu, "with impressions,",
len(own), "paid by HubSpot")
Use cases
- See what a competitor runs in Europe, with impressions ranges and the country split.
- Check how they target. Job, company, audience, interests, or a mix.
- Find partners and resellers advertising on a brand name. The
payerfield tells you who paid. - Watch them weekly with
onlyNewSinceLastRun, so later runs only return new ads.
Pricing
$0.003 per ad, plus $0.00005 per run. 100 ads cost $0.30. My two runs, 80 ads, cost $0.24.
Rows without usable content are free. Apify's $5 of free monthly credit covers about 1,600 ads.
FAQ
Why do some ads have no impressions or targeting?
LinkedIn only publishes them for ads shown in the EU. Filter to an EU country to get ads that have them.
Can I get exact impression numbers?
No. LinkedIn publishes ranges like "5k-10k".
Does it show which job titles or companies were targeted?
No. LinkedIn shows which groups were used and whether anything was excluded, not the values.
Do I need a LinkedIn account?
No. The Ad Library is public and nothing logs in.
Get started
Open the LinkedIn Ad Library Scraper, click Try for free and run a competitor with and without an EU country.
For B2B research, what do you look at first: the copy or the targeting?

Top comments (0)