We needed to know which brands a list of creators had worked with in the last 90 days, and how big those partners were. Scrolling each profile and squinting at the "Paid partnership with" line under the handle does not scale past a handful of creators, and the official API shows nothing for accounts you do not manage.
How we solved it
Instagram already stores the answer in structured form: the paid-partnership label names the brand, collab posts list their co-authors. We built the PRO Instagram Posts & Reels Scraper on Apify (disclosure: it's ours), which returns those as fields, with no Instagram login. The input per creator:
{
"usernames": ["natgeo"],
"maxPosts": 300,
"sinceDate": "2026-07-23",
"enrichPartners": true
}
maxPosts is one budget for the whole run, spent account by account in input order, so we run one creator per run and let sinceDate decide what comes back:
from apify_client import ApifyClient
import pandas as pd
client = ApifyClient("YOUR_APIFY_TOKEN")
posts = []
for creator in ["natgeo", "creator_two", "creator_three"]:
run = client.actor("intropix/instagram-posts-reels-scraper-pro").call(run_input={
"usernames": [creator], "maxPosts": 300,
"sinceDate": "2026-07-23", "enrichPartners": True})
posts += list(client.dataset(run["defaultDatasetId"]).iterate_items())
df = pd.DataFrame(posts)
deals = (df[df["is_paid_partnership"].eq(True)]
.explode("sponsor_usernames")
.groupby(["username", "sponsor_usernames"])["post_pk"].nunique())
print(deals.sort_values(ascending=False))
What came out
On each paid post, sponsor_usernames names the brand and partners profiles every co-author and sponsor. From the brand-deals example in the actor's README:
"sponsor_usernames": ["rolex"],
"partners": [
{"username": "chaivasarhelyi", "follower_count": 63358,
"category": "Film Director", "account_type": "creator"},
{"username": "imax", "follower_count": 1676536,
"category": null, "account_type": "business"}
]
The grouped table gives one row per creator and sponsor with the number of labelled posts. Next to it we kept view_count, share_count and engagement_rate per post, so the client could see which deals did anything.
Cost
A creator with 100 posts in the window costs $0.005 + $0.002 + 100 x $0.0039 = $0.397, plus $0.005 per distinct partner enriched in that run.
The caveat
Only labelled deals are visible. is_paid_partnership is Instagram's own label, so a creator who takes money and skips the label looks organic. mentions and an #ad in hashtags are a useful second signal, but a heuristic, not proof. Enrichment also needs a paid Apify plan, and tagged accounts are never enriched.
To try it without code, the Track Instagram brand deals and sponsored posts task runs the PRO Instagram Posts & Reels Scraper on one account with partner enrichment on. If captions, likes, comments, views and dates are all you need, the standard Instagram Posts & Reels Scraper returns those, plus the paid partnership flag, at $1.90 per 1,000 posts.
A ready-made command-line version, with CSV and markdown reports that rank sponsor brands, is in instagram-brand-deals-tracker.
The full field list, pricing and the n8n and MCP setup are in the PRO actor overview.












