SyncGTM now works inside Claude and ChatGPT. Learn more
All GTM agents

Meta Ads Analysis

/meta-ads-analysis

Pulls the ads a Facebook or Meta page is running right now — headline, body copy and start date for up to 20 live ads, across all countries.

Download Skillmeta-ads-analysis.zip · free

Overview

meta-ads-analysis calls the SyncGTM MCP meta_ads_analysis tool to return the ads a Facebook/Meta page is currently running — the headline, the body copy and the start date of each one, in a single sweep across all countries. It takes either a numeric Page ID or a full page URL, so you can run it straight from a link you copied out of the browser. It is built for competitor ad intelligence: what a rival is promoting today, and in what wording.

What it does

  1. 1

    Takes page_id — a numeric Facebook Page ID or a full page URL. Both are accepted directly, so there is no lookup step to pay for.

  2. 2

    Returns each active ad as three fields: headline, body and started_at. The sweep covers all countries in one call; there is no country filter and no per-market breakdown in the response.

  3. 3

    max_results is capped at 20 (range 10–20, default 10). Most SyncGTM tools go to 100. This one does not, and asking for 50 is the most common error on it.

  4. 4

    ad_type filters to one regulated category: "all ads" (default), "issues politics or elections", "properties", "employment", "financial products and services".

  5. 5

    Returns no spend, impressions, reach, audience size, contacts, emails or phone numbers. It is creative and timing, not an ad platform report.

  6. 6

    0.5 credits per call, billed per page and not per ad. An empty result means no active ads today, not that the page never advertises.

How to use it

  1. 1

    Download the skill file — it saves as meta-ads-analysis.zip.

  2. 2

    In Claude, open Settings → Capabilities → Skills and upload the .zip (or unzip the meta-ads-analysis/ folder into .claude/skills/ for Claude Code).

  3. 3

    Connect the SyncGTM MCP server — browser sign-in, no API key — then run check_credits (free) to confirm your balance.

  4. 4

    Collect the Facebook page URLs for the accounts you want to watch. One page per call: the skill will not bundle two pages into a single call.

  5. 5

    Trigger it by typing /meta-ads-analysis with the page URL and max_results 20. That one setting matters most — the default is 10 and the ceiling is 20.

Use cases

Competitor ad teardown

See what a rival is promoting this week and the exact wording they lead with. Use it to refresh a battlecard before a competitive deal cycle.

Hiring-ad signals

Set ad_type to "employment" to see which roles a company is paying to advertise. Work the hiring manager sitting above those roles while the req is still open.

Pre-call positioning read

Pull a prospect's own Meta ads before discovery so you can open on their current promise instead of guessing at their priorities.

Message-cadence tracking

Re-run the same page weekly and log started_at dates to date the moment a competitor changed positioning or launched a campaign.

GTM workflow examples

Competitive battlecard refresh

  1. 1Call `meta_ads_analysis` once per competitor Facebook page URL with max_results 20 and ad_type left at "all ads" — three competitors is 1.5 credits — producing the headline, body and started_at of every live ad.
  2. 2Call `b2b_ads_search` with each competitor's company_domain to pull the B2B creative and targeting that never appears on their Facebook page — 0.5 credits per domain.
  3. 3Call `similarweb_insights` once with all three domains in the domains array (2 credits, it takes an array) to get the traffic channel mix and see whether paid is carrying volume or is a small side bet.
  4. 4Call `company_product_launch` on each domain (1 credit each) to check whether the new creative maps to a feature they just shipped or is a repositioning of the old one.
  5. 5Write one battlecard page per competitor: current paid promise, channel weighting, and the two claims reps should pre-empt on a call.

Outcome: A three-page competitor battlecard dated to this week, each page listing the live ad promise, the paid-versus-organic traffic split, and two pre-emption lines for reps — about 7.5 credits for the set.

Hiring-spend signal to contact list

  1. 1Call `meta_ads_analysis` with ad_type "employment" and max_results 20 on the target's Facebook page URL (0.5 credits) to see the roles they are paying to advertise.
  2. 2Call `company_job_listings` with that company_domain (1.5 credits) to confirm the push is real and get the full open-req list — `company_job_openings` costs 5 credits and is only worth it when a LinkedIn company URL is all you have.
  3. 3Call `head_count_growth_rate` with the company's LinkedIn URL or name (2 credits) to see whether that function is actually being built out or just backfilled — `headcount_by_department` answers how big it is now, not whether it is growing.
  4. 4Call `find_people_within_company` on the domain with job_title set to the manager and VP titles above those roles and max_profiles 10 — flat 1.5 credits, not per profile.
  5. 5Call `find_work_email` on each of the 10 LinkedIn URLs (1 credit each, 10 credits) to get verified business emails.

Outcome: A 10-contact list at a company visibly paying to staff one team, with the exact advertised roles as the cold-email opener, for about 15.5 credits.

Weekly competitor message log

  1. 1Call `meta_ads_analysis` on the competitor page URL with max_results 20 every Monday (0.5 credits), recording each ad's headline and started_at.
  2. 2Call `linkedin_page_posts` with the same company_url and max_posts 10 (0.3 credits) to capture the organic message running alongside the paid one.
  3. 3Call `company_product_launch` on their domain (1 credit) whenever a new started_at date appears, to tie the new creative to a shipped release.
  4. 4Append each run to a dated log and flag any headline that is new since the previous week.

Outcome: A running changelog of competitor messaging with the date each new campaign went live, so positioning shifts are caught in week one instead of in the next lost deal.

Prompts

Paste any of these into Claude once the skill is installed and the SyncGTM MCP is connected.

Pull the active Meta ads for https://www.facebook.com/hubspot with max_results 20, then summarise in one line each what promise the ads lead with.
Run meta_ads_analysis on these three competitor Facebook page URLs, max_results 20, one call per page: https://www.facebook.com/salesforce, https://www.facebook.com/asana, https://www.facebook.com/slack. Give me a table of page, ad count and the message they lead with.
Get the Meta ads for https://www.facebook.com/shopify with ad_type set to employment and max_results 20 — I want to know which roles they are paying to fill.
Run meta_ads_analysis on https://www.facebook.com/semrush with max_results 20, then run b2b_ads_search on semrush.com and tell me where the Meta message and the B2B message disagree.
Run check_credits first, then run meta_ads_analysis at max_results 20 on each of these five Facebook page URLs, one call per page: https://www.facebook.com/hubspot, https://www.facebook.com/salesforce, https://www.facebook.com/shopify, https://www.facebook.com/canva, https://www.facebook.com/mailchimp. Flag which pages returned zero active ads.

Best practices

  • Always set max_results to 20. The range is 10 to 20 and the default is 10 — requesting 50 is the most common error on this tool.

  • Pass the full Facebook page URL when you do not know the numeric Page ID. page_id accepts a URL directly, so there is nothing to look up first.

  • Run one page per call and ask for the positioning read — what they lead with, what they never mention. Bundling competitors into a single call muddles which ad belongs to whom and saves nothing: you are billed 0.5 credits per call either way.

  • Leave ad_type at "all ads" unless you specifically want one regulated category. Each of the other four filters to that category alone, so "employment" returns hiring ads and nothing else, and a wrong pick returns an empty list rather than a wider one.

  • Read an empty result as "no active ads today", never as "they do not advertise". Re-run in a week if you are tracking campaign cadence.

  • Use b2b_ads_search (0.5 credits) when you have a company domain rather than a Facebook page, and similarweb_insights (2 credits, domains is an array) when you want the traffic mix behind the spend. This tool covers Meta pages only.

Complementary skills

Explore more

Ready to run /meta-ads-analysis on your own data?