# Track competitor ads for online course businesses

10 rivals on 2 ad libraries, 80 pulls a month, every landing page read.

Family: [Competitor ads](https://www.routergrowth.com/workflows/competitor-ads.md) · HTML page: https://www.routergrowth.com/workflows/ads-online-courses

## Give this to your agent

```text
Using RouterGrowth, run this workflow: Track competitor ads on Meta and Google for 10 rivals selling online courses, weekly, with their landing pages.
Show me the price before every call, and stop after each stage with a sample of the results so I can adjust.

1. Resolve the competitors: company.search x 1 searches, company.enrich x 10 companies. Turn names into domains and firmographics once; skip this stage if you already hold the list.
2. Pull the creatives: ads.search x 80 (10 rivals x 2 platforms x 4 runs). Every live ad per competitor and platform, with copy, media and first-seen dates.
3. Read the landing pages: web.scrape x 80 pages, social.posts x 100 organic posts. Where the ads send people, as markdown your agent can diff week over week.

Budget for one run: about $1.42. Run routergrowth inspect on any capability before the first call to confirm the quote.
```

## Why this works

Course sellers run long-form ads that spell out the promise and the audience. Their library is a list of angles that already have spend behind them.

What the run hands back:

> The hooks and promises in each rival's live ads, grouped by angle, with the oldest still running at the top.

## The workflow, stage by stage

Resolve the competitors → Pull the creatives → Read the landing pages

| # | Stage | Calls | Cost |
|---|---|---|---:|
| 1 | Resolve the competitors | `company.search` x 1, `company.enrich` x 10 | $0.07 |
| 2 | Pull the creatives | `ads.search` x 80 | $0.70 |
| 3 | Read the landing pages | `web.scrape` x 80, `social.posts` x 100 | $0.65 |

One run: $1.42 for 271 calls. Assumptions: 2 contacts per account unless the brief says otherwise, 70% email find rate, 90% verification pass, 3 emails per contact, 30% LinkedIn accept rate. Prices are the catalog's at the time this page was built; `routergrowth inspect` returns the exact quote before a call.

### Resolve the competitors

Turn names into domains and firmographics once; skip this stage if you already hold the list.

### Pull the creatives

Every live ad per competitor and platform, with copy, media and first-seen dates.

### Read the landing pages

Where the ads send people, as markdown your agent can diff week over week.

Not in the plan yet, coming soon in the catalog: ads.spend_estimate. Nothing here depends on it.

## Run it from the command line

```bash
# RouterGrowth workflow: Track competitor ads on Meta and Google for 10 rivals selling online courses, weekly, with
npm install -g routergrowth && routergrowth setup

# 01 Resolve the competitors  (company.search x 1, company.enrich x 10)
routergrowth run -c company.search -i '{"query":"<query>"}'
routergrowth run -c company.enrich -i '{"domain":"<domain>"}'

# 02 Pull the creatives  (ads.search x 80)
routergrowth run -c ads.search -i '{"query":"<query>"}'

# 03 Read the landing pages  (web.scrape x 80, social.posts x 100)
routergrowth run -c web.scrape -i '{"url":"<url>"}'
routergrowth run -c social.posts -i '{"platform":"<platform>","handle":"<handle>"}'
```

## Questions

### How do I see the ads a competitor is running?

ads.search reads the Meta Ad Library by advertiser or keyword and the Google Ads Transparency Center by advertiser domain. It returns each live creative with its copy, media and the date it first ran.

### Which ad platforms are covered?

Meta, which includes Facebook and Instagram placements, and Google. Other libraries can be reached through a provider's raw endpoint with the same key when a workflow needs them.

### Can I see how much a competitor spends?

No library publishes spend for commercial ads. What you can read is how long a creative has been running and how many variants exist, which is the best public sign that it works.

### Why run it weekly?

One pull is a snapshot. The second pull shows what was added, what was stopped and what is still running, and that change is what tells you where a competitor is putting money.

### What does this workflow cost to run?

About $1.42 for one run of 271 calls. Each call is quoted before it runs and a lookup that finds nothing is not charged, so the figure is a ceiling. There is no subscription: the run is paid from a prepaid balance.

## Related

- [Track competitor ads for HR software](https://www.routergrowth.com/workflows/ads-hr-software.md)
- [Track competitor ads for real estate brokerages](https://www.routergrowth.com/workflows/ads-real-estate.md)
- [Track competitor ads for fitness apps](https://www.routergrowth.com/workflows/ads-fitness-apps.md)
- [Track competitor ads for insurance brands](https://www.routergrowth.com/workflows/ads-insurance.md)
- Guide: [Competitor ads: track every creative on Meta and Google](https://www.routergrowth.com/use-cases/competitor-ad-intelligence.md)
- Guide: [AI ad creative: images, edits and video from one API](https://www.routergrowth.com/use-cases/ad-creative-production.md)

Adjust the volumes and assumptions: https://www.routergrowth.com/free-gtm-tools/workflow-generator#q=Track%20competitor%20ads%20on%20Meta%20and%20Google%20for%2010%20rivals%20selling%20online%20courses%2C%20weekly%2C%20with%20their%20landing%20pages.
