Competitive intel
Read the ads your competitors are actually running
Your competitors publish their positioning every day and pay to distribute it. For competitor ad intelligence, OXYGEN reads their public ad libraries into a table, one cell per competitor and network.
A competitor's ad library shows what they think their buyer cares about this quarter. It holds the headline they keep paying for, the proof they lead with and the objection they answer first. In a table, it sits beside what you know about that account.
Each read is one paid request. A dry run shows it and its price first, and a cap bounds the spend. Each network's answer lands as one cell with the advertiser, creative and media. Nothing is bought or published from here.
Example searches
Ask for it the way you'd say it
Each example is a request in plain words, with what it returns underneath.
One competitor, three networks
list the ads competitor.com is running on linkedin, meta and google with their start dates
Each network returns a page of creatives with advertiser and media. LinkedIn shows run dates only for ads served in the EU, and its advertiser can be a person.
Find the angle they repeat
group this competitor's ads by headline and tell me which offer they keep buying
An AI column reads the creatives in the table, so the summary rests on real ads, not a model's memory.
Watch a category, not a company
read the ads my six closest competitors are running again each month
A full refresh reads each competitor again once its stored page is over 30 days old. Each read replaces the cell, and nothing flags a new creative.
Plays
Three motions you can run this week
Each one is a chain of OXYGEN primitives: the same hosted objects your workspace already has, composed.
Build the competitor board
One table holds the first page of each close competitor's ads, per network.
- 1Search the catalog for linkedin ads or facebook ads and read the Adyntel operation's schema first.
- 2Add it as a column on a table of competitor domains, read the free dry-run quote, then run one row before the rest.
- 3On LinkedIn, set live_ads to true, and on Google check each ad's last-seen date. Meta returns only running ads by default.
oxygen tools searchTurn creatives into positioning
The offers a competitor keeps paying to show become a cited page instead of a hunch.
- 1Add an AI column that summarizes the offer, angle, and proof in each competitor's ad cell.
- 2File the synthesis as a cited wiki page, so the finding is still there when you write the next brief.
oxygen columns addWatch the category on a cadence
New competitors are read on the next run, and tracked ones again about once a month.
- 1Schedule the ad-library column with a per-run credit ceiling; each run also bills a workflow step. Without --force, a run reads only rows with no ads cell yet.
- 2With --force, a competitor read in the last 30 days returns its stored page instead of a new paid read. Each is read fresh about once a month.
oxygen tables schedule set
Capabilities
What you get
Creatives as data, not screenshots
Each read lands as one cell with the request, response, and provenance. A free formula column pulls out the fields you sort on.
A dry run before you spend
A dry run shows the request and the estimate for free. A live read runs under a credit ceiling. A call from the command line, or from an AI assistant over MCP, must also carry an approval flag.
Context around the campaign
Web search and page extraction sit next to the library read. The landing page an ad points at can be pulled alongside the creative that sells it.
Findings that outlive the tab
Synthesis files into the workspace wiki as a cited page. An AI column reads it once you map the page in.
Boundaries
What Ads does not own
Ads only reads other companies' public ads: there is no campaign building, no audience push and no report on your own ad spend. A post you publish yourself belongs to Posts and Publishing, and the competitor itself is a company record.
Data sources
Data sources and CRM connections
AdyntelReads the Meta, LinkedIn and Google ad libraries by company domain, and Meta, LinkedIn and TikTok by keyword, one page per paid request.
ExaWeb search for the context around a campaign: the launch, pricing change or hire that explains it.
FirecrawlPulls the landing page an ad points at, so the offer and the creative can be read together in one row.
- BrBright Data
Reads a competitor's public LinkedIn posts from its company page link: the organic side that an ad library does not show.
Use managed credits where available, or connect a supported provider key on an eligible paid plan. Your provider bills its calls; OXYGEN adds a per-call platform fee. Signed-in CRM connections such as HubSpot have no per-call fee. Connected sending accounts reserve monthly credits. See pricing and supported integrations.
Limits
Where this stops
- Four networks are covered: Meta, LinkedIn and Google by company domain, and TikTok only by keyword, which returns any advertiser's ads. A competitor advertising elsewhere will not appear, and an empty result does not prove nobody is spending.
FAQ
Questions people ask first
Is there a dedicated ads command yet?
What does one read cost?
Can I activate audiences from my CRM?
How do I keep the board current?
Where should the findings actually live?
Can I link creatives to my account list?
Try Ads in your own workspace
Sign up free with a one-time credit grant, and an in-app AI agent researches your company and proposes your first plays. Pick a plan to run one from the web app, the command line, or an AI assistant you link over MCP.