Back to Blog
Influencer Marketing

How to Map a Competitor's Creator Roster (Paid Partnerships & Sponsored Posts)

July 16, 2026
8 min read
S
By SociaVault Team
Influencer MarketingCompetitive IntelligencePaid PartnershipAd LibraryInstagramTikTok

How to Map a Competitor's Creator Roster (Paid Partnerships & Sponsored Posts)

If a competitor is quietly outspending you on creators, you usually find out too late, when their product is suddenly all over your niche and you're wondering who's been posting about it. The good news: most of that spend leaves a public trail. Creators tag the brand, disclose the partnership, and the paid ads land in a public Ad Library. Put those together and you can reconstruct a decent map of who a brand is working with.

This isn't a magic "see every deal" button, undisclosed handshake deals won't show up, and I'll be honest about that below. But the disclosed and paid majority is very much visible, and that's enough to be useful.

The three trails a brand partnership leaves

Before code, the model. A brand-creator relationship shows up in three public places:

  1. The creator's disclosure flags. When a creator uses Instagram's branded-content tools, the post carries is_paid_partnership (and sometimes is_ad or is_affiliate). That's a self-reported but structured signal.
  2. Tagged and mention data. Creators tag the brand's handle or drop it in the caption. Search a brand's hashtag or its mentions and you find the posts talking about it.
  3. The Ad Library. If the brand ran a creator's post as a paid ad, or boosted it, it's logged publicly with run dates.

No single trail is complete. Together they cover most real partnerships.

Step 1: Find posts that mention the brand

Start wide. Search the brand's hashtag (and any branded campaign tags) to pull the public posts talking about it. We'll use SociaVault here, new accounts get 50 free credits.

const API_KEY = process.env.SOCIAVAULT_API_KEY;
const BASE = "https://api.sociavault.com/v1";

async function postsForTag(hashtag) {
  const res = await fetch(
    `${BASE}/scrape/instagram/search/hashtag?hashtag=${encodeURIComponent(hashtag)}`,
    { headers: { "x-api-key": API_KEY } },
  );
  const json = await res.json();
  if (!json.success) throw new Error(json.error);
  return Object.values(json.data.posts ?? {});
}

const posts = await postsForTag("gymsharkathlete");

Each post comes back with the creator's handle, follower count, and engagement, which is exactly the raw material for a roster. The hashtag search walkthrough goes deeper on the fields you get.

Step 2: Flag the ones that are actually sponsored

Now filter for the commercial signals. Instagram's public post data carries the partnership booleans when the creator used the official tools:

function flagPartnerships(posts) {
  return posts
    .map((p) => ({
      user: p.owner?.username,
      followers: p.owner?.follower_count ?? 0,
      likes: p.like_count ?? 0,
      url: p.url,
      paidPartnership: p.is_paid_partnership ?? false,
      isAd: p.is_ad ?? false,
      affiliate: p.is_affiliate ?? false,
    }))
    .filter((p) => p.paidPartnership || p.isAd || p.affiliate);
}

const roster = flagPartnerships(posts);
console.table(roster);

Read those flags defensively with ?? false, older responses may omit them, and treat a missing flag as "unknown," not "no." A creator who took the money but posted with no official tag won't light up here, which is why step 3 exists. We covered the mechanics of these flags in detail in telling if a post is an ad.

Step 3: Cross-reference the Ad Library

The Ad Library is the trail a brand can't quietly omit. If the brand ran a creator's content as a paid ad, it's there:

// Meta (Instagram + Facebook) ads for a brand
async function metaAds(brand) {
  const res = await fetch(
    `${BASE}/scrape/facebook-ad-library/search?query=${encodeURIComponent(brand)}`,
    { headers: { "x-api-key": API_KEY } },
  );
  return res.json();
}

// TikTok ads for the same brand
async function tiktokAds(brand, region = "US") {
  const res = await fetch(
    `${BASE}/scrape/tiktok-ad-library/search?query=${encodeURIComponent(brand)}&region=${region}`,
    { headers: { "x-api-key": API_KEY } },
  );
  return res.json();
}

Now you can separate two kinds of relationship: organic-but-paid partnerships (disclosed on the creator's feed) and creative the brand is actively running as ads. A creator who appears in both, disclosed partnership and their post running as an ad, is almost certainly a core roster member, not a one-off. The competitor ad research guide has more on reading the Ad Library.

Step 4: Turn it into an actual roster

Merge the mention data with the Ad Library hits and you get a table worth looking at:

function buildRoster(partnerships) {
  const byUser = new Map();
  for (const p of partnerships) {
    const key = p.user;
    if (!key) continue;
    const cur = byUser.get(key) ?? { user: key, followers: p.followers, posts: 0, totalLikes: 0 };
    cur.posts += 1;
    cur.totalLikes += p.likes;
    byUser.set(key, cur);
  }
  return [...byUser.values()].sort((a, b) => b.posts - a.posts);
}

Sort by post count and you can see who's posting about the brand repeatedly (a sign of an ongoing deal) versus a single gifted post. Cross that with follower tier and you can estimate the shape of their program: are they betting on a few mega-creators or spreading budget across dozens of micro-creators? That single insight often tells you more about a competitor's strategy than their own marketing page does.

What this can't do (read before you trust it)

  • Undisclosed deals are invisible. If a creator was paid and never tagged or disclosed it, no public dataset flags it. That's a rules problem on their end, not a gap you can code around.
  • You see spend signals, not dollar amounts. You can count posts, tiers, and ad runs. You cannot read the contract value. Any "estimated spend" is a proxy, label it as one.
  • Platform coverage is uneven. Instagram's partnership flags are solid; TikTok leans harder on the Ad Library and caption disclosure. Handle the difference instead of assuming symmetry.
  • This is competitive research, not surveillance. You're mapping public, disclosed brand relationships, not profiling individuals. Keep it to that.

Even with those limits, you end up with a defensible map of the disclosed-and-paid majority, which is the part that actually moves budget.

Who uses this

  • Brand and growth teams sizing up a competitor's influencer program before setting their own budget.
  • Agencies pitching a client by showing exactly who the competition is paying and where the gaps are.
  • Creators checking which brands in their niche run active partnership programs, i.e. who to pitch. Pair it with a way to find creator contact details and you've got outreach.

Frequently Asked Questions

Can you see which influencers a brand is paying?

You can see the disclosed and paid ones. Instagram exposes is_paid_partnership flags on branded content, creators tag the brand in posts you can search, and paid ads appear in the public Ad Library. Undisclosed deals won't show up anywhere public.

How do I find all the creators promoting a competitor?

Search the brand's hashtags and campaign tags to gather posts, filter for the partnership flags, then cross-reference the Ad Library for paid creative. Merging those sources gives you a roster ranked by how often each creator posts about the brand.

Is there an API for influencer partnership data?

You can read Instagram's partnership flags and query the Meta and TikTok Ad Libraries programmatically. There's no single endpoint that returns "every creator this brand pays," because undisclosed deals aren't in any dataset, but combining the public sources covers most active partnerships.

Can I estimate how much a brand spends on creators?

Only as a proxy. You can count sponsored posts, the follower tiers involved, and active ad runs, then infer scale. You can't read the actual contract values, so treat any spend figure as an estimate, not a fact.

Does this work for TikTok too?

Partly. TikTok's per-post sponsorship signals are thinner than Instagram's, so you lean more on the TikTok Ad Library and caption disclosures (#ad, #sponsored). It's still workable, just with the Ad Library doing more of the heavy lifting.

How many credits does mapping a roster cost?

One credit per request, whether that's a hashtag search or an Ad Library lookup. Mapping a mid-size brand might take a few dozen calls. New accounts start with 50 free credits, so you can build a first map at no cost.

Wrapping up

You don't need a leak to know who your competitor is paying, most of it is disclosed in public, if you know where to look. Gather the mentions, filter for the partnership flags, cross-reference the Ad Library, and you've got a roster that shows their strategy in outline. The undisclosed tail will always exist, but the visible part is usually enough to plan against.

Want to map a competitor's roster yourself? Start free with SociaVault, 50 credits, no card, and flag your first partnerships in a couple of minutes.


Found this helpful?

Share it with others who might benefit

Ready to Try SociaVault?

Start extracting social media data with our powerful API. No credit card required.