Methodology
How Adsup.ai collects ads, what each metric means, and the known limits of the data.
Last updated: 2026-11-07
What we collect
Adsup.ai loads public web pages in real browsers and records the ads those pages show. Each time we see an ad we store one observation: when and where it appeared, which ad networks served it, the creative itself (an image, video or an element screenshot), and where a click leads.
We never log in, fill in forms or click ads on a person's behalf. We collect only what any visitor to the page would see.
Where we look
- Sites. We crawl a tiered list based on the Tranco top-1M ranking. Sites with more advertising are visited more often. Signed-in users can also ask for a specific site with an on-demand crawl.
- Locations and devices. Pages are loaded from several countries and with desktop and mobile browser profiles, because ads differ by location and device.
- Consent. Where a site shows a consent banner, we record whether consent was accepted, rejected or not required. This affects which ads appear.
How we recognise ads
We combine several independent signals: ad-server and header-bidding requests (for example Google Ad Manager and Prebid), known ad-slot markup, "Sponsored" labels, VAST video tags, and visual checks. The signals used for each observation are listed on the ad's detail page under Detected by.
Repeated sightings of the same creative are merged into one ad, and near-duplicates (the same ad in different sizes or with small edits) are grouped as similar creatives.
What the numbers mean
| Metric | Definition | | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Discoveries | How many times our crawlers observed the ad. This is not the number of real impressions the ad received. Use it to compare ads with each other, not as an audience estimate. | | First seen / Last seen | The first and most recent observation, in UTC. An ad may have run before we first saw it. | | Days seen | The number of distinct days with at least one observation. Ads that run for many days are usually performing. | | Publishers | The number of distinct sites where we observed the ad. | | Networks | The ad platforms identified in the delivery chain (ad server, exchange, bidder, DSP). The first one listed is the platform we attribute the placement to. |
Coverage ledger
The coverage ledger lists every combination of network, ad format and country we observed in the last 7 days, with the number of observations in that window and in the last 24 hours and the time of the most recent observation. It is computed from the raw observations and refreshed at least every 15 minutes. Country Unknown means the crawler's exit country could not be determined for that visit.
If a network or format is missing from the ledger, we did not observe it in that window. Its absence is a gap in our coverage, not a sign that the network stopped running ads.
How fresh the data is
New observations normally appear in search within a few minutes of the page visit. Profile pages and trends are built from daily rollups. Their charts are day-based in UTC.
Known limitations
- Personalised and targeted ads. Ads depend on location, device, time and browsing history. Our crawlers have no personal history, so retargeting and highly personalised campaigns are under-represented.
- Advertiser identity. Advertisers are resolved from landing pages, bid data and ad labels. Some ads cannot be attributed yet and appear without an advertiser.
- Media. Where we could not download the original creative, we show an element screenshot taken in the browser.
- Text search works best for Latin-script languages for now.
- Opt-out. Site owners can ask us to stop crawling their domain. Opted-out domains are not crawled and get no public pages.
Questions about the data or this page? Contact us through the support page.