How to Identify the Ad Network Behind Any Ad
Every native ad leaves fingerprints in its click URL, loader script, and tracker domains that name the network serving it, and here's how to read them by hand or at scale.

Every ad you see in a content recommendation widget was placed by a specific network, and that network left fingerprints. The serving domain in the click URL. The loader script that built the widget. The tracker domains that fire on impression. Each one names the marketplace that brokered the placement. Once you know what to look for, identifying the network behind a native ad takes about fifteen seconds with browser dev tools. The same logic, run continuously, scales to millions of placements.
I'll cover the manual method first, because understanding the signals makes the automated approach make sense. Then I'll show how we classify networks (and the rest of the supply chain) across the 589,000+ creatives in our index.
The short answer#
To identify the ad network behind a native ad, inspect the click URL and the script that loaded the widget. The serving domain gives it away. trc.taboola.com means Taboola. outbrain.com or zemanta.com means Outbrain (now Teads). jsc.mgid.com means MGID. trends.revcontent.com means Revcontent. The unclicked href and the loader <script> are the two most reliable fingerprints, and neither requires clicking the live ad.
That covers the common case. Now the why, and the part that actually matters for research.
Three parties, easy to confuse#
When you look at a sponsored recommendation, three different parties are involved. People mix them up constantly.
The ad network is the marketplace that matched the placement and gets paid per click. The publisher is the site hosting the widget. The advertiser is the brand whose offer the ad promotes. When someone says "this is a Taboola ad," they usually mean "this is an ad served through Taboola for some advertiser I haven't identified yet."
The distinction is practical. If you're a media buyer scouting where to launch, the network tells you which platform to open an account on. If you're running competitive research, the network is just the first hop in a chain that ends at the advertiser's landing page. And the network is deliberately obscured. The visible click destination is almost always a tracking redirect, not the advertiser's domain. Untangling that chain is the core of ad intelligence, and it starts with naming the network.
The creative tells you what is being sold. The network tells you how it reached you. Only the click destination tells you who is actually selling it. You need all three to have a signal rather than a screenshot.

That ad above is a perfect example. The headline screams a tax offer. But "Fresh Start Information" is a lead-gen brand sitting in front of a tax-relief advertiser, served through Taboola, with the real destination hidden behind a redirect. The network was the easy part to read. The advertiser took a server-side trace.
The manual method: read the fingerprints#
Open any content site with a recommendation widget at the bottom of an article. Right-click a sponsored unit and choose Inspect. You're hunting for four signals, in roughly this order of reliability.
1. The click URL (the strongest signal)#
Hover over the ad or find its anchor tag in the DOM. The href is rarely the advertiser's URL. It's a redirect through the network's click-tracking server, and the host of that redirect names the network outright. You don't need to follow the link to read the host, which means you can identify the network without generating a billable click.
2. The loader script#
Every widget is built by a JavaScript loader fetched from the network's CDN. Search the page source for the script src. These are stable and hard to disguise, because the network's own infrastructure has to serve them.
3. The widget container and class names#
Networks render into containers with recognizable IDs and class prefixes. taboola and trc_ for Taboola. ob- and OUTBRAIN for Outbrain. mgbox and M_ for MGID. Publishers can theme these, but the structural prefixes usually survive.
4. Impression and pixel domains (Network tab)#
Open the Network tab, filter to the widget, and watch what fires on load. The reporting and pixel domains corroborate the network and often reveal additional supply-chain partners (exchanges, verification vendors, data brokers) layered on top.
Here are the fingerprints for the networks you'll hit most often:
| Network | Click / serving domain | Loader script host | DOM tell |
|---|---|---|---|
| Taboola | trc.taboola.com |
cdn.taboola.com |
trc_ IDs, taboola containers |
| Outbrain / Teads | outbrain.com, zemanta.com |
widgets.outbrain.com |
ob- classes, OUTBRAIN |
| MGID | jsc.mgid.com, cdn.mgid.com |
jsc.mgid.com |
mgbox, M_ prefixes |
| Revcontent | trends.revcontent.com |
assets.revcontent.com |
rc- containers |
| Yahoo native | trc.taboola.com (powered by Taboola) |
cdn.taboola.com |
Taboola tells |
That last row trips up manual analysts constantly. Yahoo's native inventory has been powered exclusively by Taboola since their 30-year commercial agreement went live, so a "Yahoo" placement fingerprints as Taboola. Same story with Outbrain: it completed its Teads acquisition in early 2025 and now operates under the Teads name, so Outbrain and Teads infrastructure increasingly overlap. Network identification is not static. Ownership and partnerships rewrite the map, and any method worth using has to track that.
It also helps to know where each network actually plays. Taboola is the giant: 157,727 creatives in our index, skewing heavily toward health (6,048), finance (5,558) and insurance (4,303). Outbrain runs leaner at 84,252 creatives and leads with finance and insurance. MGID looks different from both, with 49,689 creatives dominated by entertainment (8,904 creatives, mostly those quizzy "what's your IQ" and gaming units). When a fingerprint and a vertical line up the way you'd expect, your read is probably right. When they don't, you've found something interesting (figures from the OpenAdLibrary index, June 2026).

Where the manual method breaks down#
The fingerprint approach is reliable for one ad on one page at one moment. It does not survive contact with real research questions, which sound like "which networks is this advertiser running on this month?" or "who else is buying native traffic in the cardiovascular-supplement vertical?" Manual inspection collapses under three pressures.
- Scale. You cannot inspect ten thousand placements by hand, and a single advertiser may run the same creative across four networks at once. Network identification has to happen per placement, not per creative.
- Rotation. Widgets reshuffle on every page load. The ad you inspected is gone on refresh, and so is the evidence. There's no archive unless you build one.
- The redirect chain. Reading the network is step one. Following the click through the network's redirect, any affiliate hop, and on to the real landing page is where the actual intelligence lives, and you can't do that safely or repeatably by clicking live ads. (Affiliate hops are why the affiliate network often sits between the ad network and the advertiser.)
This is exactly the gap a purpose-built native ad library closes, and it's why a general-purpose ad transparency tool built for social platforms doesn't help here. Native inventory lives outside the walled gardens, in the open web's recommendation widgets, and nobody published a library for it until recently.
How auto-classification works at scale#
The automated version of the manual method does the same fingerprint reading, continuously, on captured copies of live ads rather than on the live ads themselves. The capture is API-driven and never clicks the live unit, which keeps it clean and non-billable. From each captured placement, a classifier extracts the signals you'd read by hand and resolves them into structured fields.
We run this pipeline across native ad networks including Taboola, Outbrain, MGID, Revcontent, Teads, MediaGo, Yahoo and MSN: 42 networks in all, feeding an index of 25,933 advertisers and more than 5.4 million ad observations. For every captured ad it records three things.
- The serving network, derived from the click domain, loader script, and DOM structure, with partnerships like Yahoo-Taboola resolved so the label reflects the real operator.
- The full supply chain: the exchanges, trackers, and verification vendors layered on the placement, classified from the impression-time requests. This is the same chain you can read in the Network tab, captured and labeled automatically. Our deeper walkthrough of the native ad supply chain with real traces shows what these chains actually look like.
- The advertiser behind the ad, recovered by following the click server-side through every redirect and affiliate hop to the final landing page, without ever touching the live ad. We've resolved more than 926,000 landing-page captures this way. This is the answer to the question most people are really asking, and it's the basis for figuring out who is buying ads on a given website.

Because every placement is timestamped and stored, you also get the signals a single inspection can never give you: how long a creative has run, how many networks an advertiser spreads across, and which placements keep reappearing. The hearing-aid ad above logged 26 days of continuous observation. The longest-running creatives in our index right now sit at 28 days, the full width of our current observation window: an Outbrain pet-content ad ("Dog licks aren't kisses. Here's what your dog really means"), a SmartAsset finance unit about IRA taxes, and a cluster of those Microsoft Audience Network IQ quizzes.
A note on that 28-day figure. It's what we've directly observed, not the creative's full lifespan. The industry lore about "90-day winners" you keep paying to run is a separate, general claim, and it's plausible, but it's not our measurement. What we can say is that longevity and spread are the closest thing native has to a public performance signal. Nobody keeps a losing creative live for four straight weeks. Reading network plus longevity plus spread together is what separates intelligence from a screenshot.

A practical workflow#
Put the two methods in their proper place. Use manual inspection when you have one ad in front of you and need a fast answer. Use a native ad spy tool when the question involves more than one placement, more than one moment, or the advertiser hidden behind the redirect.
A typical competitive pass looks like this. Identify the networks active in your vertical. Pull every advertiser running on each. Sort by how long their creatives have survived. Then trace the long-running winners to their landing pages and pre-landers. Finance is the busiest vertical in our index (17,232 creatives), with insurance (15,629) and health (14,895) right behind, so those three are where you'll find the most to chew on. The network identification you just learned to do by hand is step one of that loop, automated and run continuously so the evidence doesn't vanish on refresh. This all sits inside the broader practice of ad transparency: using public ad data to understand who is advertising what, where, and how.
If you want to skip straight to the structured output, start free and browse 200 captured native ads with their network, supply chain, and resolved advertiser already classified. No card required.
Key takeaways#
- The ad network is encoded in the click URL, loader script, container markup, and pixel domains. The serving domain is the single most reliable fingerprint.
- You can identify the network without clicking the live ad. The signal lives in the unclicked
hrefand the page markup. - Distinguish the network (who placed it) from the advertiser (who's selling). Remember that partnerships like Yahoo-Taboola and the Outbrain-Teads merger change what a fingerprint means.
- Manual inspection works for a single ad. Scale, rotation, and the redirect chain force you to an automated, captured-copy approach for real research.
- Network identification is step one. The intelligence comes from pairing it with the resolved advertiser, plus longevity and cross-network spread.





