Instagram Brand Prospector — Find Companies Ready to Advertise avatar

Instagram Brand Prospector — Find Companies Ready to Advertise

Pricing

from $10.00 / 1,000 result delivereds

Go to Apify Store
Instagram Brand Prospector — Find Companies Ready to Advertise

Instagram Brand Prospector — Find Companies Ready to Advertise

Discover brands on Instagram with active ad budgets. Content strategy, partnership signals, and B2B contact info.

Pricing

from $10.00 / 1,000 result delivereds

Rating

0.0

(0)

Developer

Creator Fusion

Creator Fusion

Maintained by Community

Actor stats

1

Bookmarked

26

Total users

1

Monthly active users

11 days ago

Last modified

Share

Instagram Brand Prospector — Creator Vetting & Sponsorship Pricing API for Influencer Marketing

Brand-partnership prospecting data from Instagram for influencer-marketing agents. Give it Instagram usernames; it returns typed JSON rows — schema below — with follower counts, engagement rate, audience tier, detected niche, content mix, posting cadence, and an estimated sponsorship price range per creator. Built for influencer discovery, creator vetting, and brand collaboration automation. Resilient by design: seven extraction sources (Google, Social Blade, Instagram direct, Ninjalitics, Bing, DuckDuckGo, Wayback Machine) with automatic fallback, so a single blocked source never kills the run.

Why agents use this Instagram brand-prospecting actor

  • Deterministic typed output — every dataset row conforms to the published dataset schema; fields are stable and typed, safe to parse programmatically.
  • Clear error semantics — invalid input or zero successful profiles exits non-zero with a status message; per-profile failures are listed in the SUMMARY key-value record, never as junk dataset rows. No silent empty successes.
  • No auth or cookies needed — no Instagram login, no session cookies; primary sources are public search and aggregator pages.
  • Cost-predictable — you are billed only for dataset rows that contain real extracted data; failed profiles produce no billed items.
  • Rate-limit aware — randomized delays between profiles and between sources, rotating user agents, and multi-source fallback when one source throttles.

Input schema

FieldTypeRequiredDefaultDescription
usernamesarray of stringsyesInstagram usernames or profile URLs to analyze (e.g. "natgeo", "https://instagram.com/cristiano", "@handle").
includeRecentPostsbooleannotrueAnalyze recent posts for engagement metrics when post data is available from the extraction sources.
maxPostsPerProfileintegerno12Maximum number of recent posts to analyze (1-12).
proxyConfigurationobjectnoOptional proxy settings. Most sources work without a proxy. A residential proxy (billed to your Apify account) improves the Instagram-direct method.

Minimal input:

{ "usernames": ["natgeo", "cristiano"] }

Output schema

One dataset row per successfully analyzed profile, with three top-level objects. Depth of post-level metrics (engagement, content mix, posting) depends on which sources returned post data; profile-level fields (followers, tier, niche, sponsorship estimate) are available in nearly all runs.

profile — raw merged profile data

FieldTypeNullableDescription
profile.usernamestringnoInstagram handle (lowercase, no @). Always present.
profile.idstringyesInstagram internal user ID.
profile.fullNamestringyesDisplay name.
profile.biographystringyesBio text (may be truncated when sourced from search snippets).
profile.externalUrlstringyesLink-in-bio URL.
profile.externalUrlsarrayyesAll external links: { title, url }.
profile.followersCountnumberyesFollower count — cross-source consensus (median, outliers rejected).
profile.followsCountnumberyesAccounts followed.
profile.postsCountnumberyesTotal posts (max across sources).
profile.isBusinessAccountbooleanyesBusiness account flag.
profile.businessCategoryNamestringyesInstagram business category.
profile.isPrivatebooleanyesPrivate account flag.
profile.isVerifiedbooleanyesVerified badge flag.
profile.profilePicUrlstringyesProfile picture URL.
profile.profilePicUrlHDstringyesHigh-res profile picture URL.
profile.relatedProfilesarrayyesRelated profiles: { username, fullName, isVerified } (Instagram-direct source only).
profile.latestPostsarrayyesUp to 12 recent posts: { id, shortCode, type, caption, hashtags, mentions, likesCount, commentsCount, videoViewCount, videoDuration, timestamp, displayUrl }. Search-derived posts may contain only shortCode and type.

analysis — derived partnership analytics

FieldTypeNullableDescription
analysis.audienceTierstringnonano (1K-10K), micro (10K-100K), mid (100K-500K), macro (500K-1M), mega (1M-5M), celebrity (5M+).
analysis.engagement.ratenumberno(avg likes + avg comments) / followers × 100. Zero when no post data.
analysis.engagement.avgLikesPerPostnumbernoAverage likes per analyzed post.
analysis.engagement.avgCommentsPerPostnumbernoAverage comments per analyzed post.
analysis.engagement.avgViewsPerReelnumberyesAverage reel/video views, when video data exists.
analysis.engagement.likeToCommentRationumbernoAvg likes / avg comments.
analysis.contentMixobjectnoPercent split: { images, videos, reels, carousels }.
analysis.posting.frequencystringnodaily, every_few_days, weekly, biweekly, monthly, or inactive.
analysis.posting.avgPostsPerWeeknumbernoPosts per week over the analyzed window.
analysis.posting.lastPostDatestringyesISO 8601 timestamp of latest analyzed post.
analysis.posting.daysSinceLastPostnumberyesDays since latest analyzed post.
analysis.nichearraynoUp to 3 detected niches (fitness, beauty, fashion, food, travel, tech, gaming, music, photography, lifestyle, business, education, parenting, pets, art).
analysis.shortsFocusedbooleannoTrue when >50% of content is reels/short video.
analysis.sponsorshipEstimateobjectno{ low, medium, high, currency: "USD", adjustments } — estimated per-post sponsorship price range, adjusted for tier, engagement, niche, and content mix, with the applied adjustments listed as strings.

meta — extraction metadata

FieldTypeNullableDescription
meta.scrapedAtstringnoISO 8601 processing timestamp.
meta.methodsUsedarraynoSources that succeeded: google, socialblade, instagram_direct, ninjalitics, bing, duckduckgo, wayback.
meta.methodResultsarraynoPer-source attempt log: { method, success, data, error, latencyMs } — includes failed attempts with error reasons.
meta.dataCompletenessnumberno0-100 data quality score. Pushed rows always score above 0.
meta.warningsarraynoNon-fatal warnings from extraction.

Example item

{
"profile": {
"username": "natgeo",
"fullName": "National Geographic",
"followersCount": 279000000,
"followsCount": 133,
"postsCount": 27856,
"isVerified": true,
"profilePicUrl": "https://...",
"latestPosts": [
{ "shortCode": "C3xYz12", "type": "Image", "likesCount": 412000, "commentsCount": 1830, "timestamp": "2026-08-10T14:03:00.000Z" }
]
},
"analysis": {
"audienceTier": "celebrity",
"engagement": { "rate": 0.15, "avgLikesPerPost": 412000, "avgCommentsPerPost": 1830, "likeToCommentRatio": 225.1 },
"contentMix": { "images": 67, "videos": 8, "reels": 17, "carousels": 8 },
"posting": { "frequency": "daily", "avgPostsPerWeek": 9.5, "lastPostDate": "2026-08-10T14:03:00.000Z", "daysSinceLastPost": 3 },
"niche": ["photography", "travel"],
"shortsFocused": false,
"sponsorshipEstimate": { "low": 21250, "medium": 63750, "high": 127500, "currency": "USD", "adjustments": ["low engagement (<2%): -15%"] }
},
"meta": {
"scrapedAt": "2026-08-13T18:22:41.000Z",
"methodsUsed": ["google", "socialblade"],
"methodResults": [
{ "method": "google", "success": true, "latencyMs": 2140 },
{ "method": "socialblade", "success": true, "latencyMs": 1830 }
],
"dataCompleteness": 74,
"warnings": []
}
}

Error semantics

  • Invalid input (missing/empty usernames, wrong types): the actor fails fast with exit code 1 and a status message starting with Invalid input:. No items are produced.
  • Per-profile failure (unresolvable username, all seven sources failed): the profile produces no dataset row. It is recorded in the SUMMARY key-value record as { username, error }, and the run's status message reports the failed count. Successful profiles in the same run are unaffected.
  • Zero successful profiles: the run exits with code 1 and status message All N profile(s) failed — 0 items extracted, never a silent SUCCEEDED with an empty dataset. Retry logic: a non-zero exit with zero items means retry later or with a proxy; a succeeded run's dataset contains only valid rows.
  • SUMMARY record (default key-value store, key SUMMARY): { totalProfiles, successful, failed, avgDataCompleteness, failures: [{ username, error }], finishedAt } — written on every completed run.

Use from AI agents (MCP)

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=apricot_blackberry/instagram-brand-prospector",
"headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
}
}
}

Works in Claude, Cursor, ChatGPT deep research connectors, and any MCP client; the input schema above is the tool's parameter schema.

Use from code

curl (synchronous run, returns dataset items):

curl -X POST "https://api.apify.com/v2/acts/apricot_blackberry~instagram-brand-prospector/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "usernames": ["natgeo", "cristiano"] }'

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('apricot_blackberry/instagram-brand-prospector').call({
usernames: ['natgeo', 'cristiano'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python (apify_client):

from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("apricot_blackberry/instagram-brand-prospector").call(
run_input={"usernames": ["natgeo", "cristiano"]}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items

Use from automation platforms

  • n8n / Make / Zapier: use the native Apify integration and choose the actor by name (instagram-brand-prospector).
  • LangChain / LlamaIndex: use the Apify tool wrappers (ApifyActorsTool / Apify reader) with the same input JSON.
  • Webhooks: Apify can fire a webhook when a run finishes (or on other run-lifecycle events), so a CRM or outreach tool can pick up new prospect rows automatically — configure one from the actor's Integrations tab or the API.

Pricing

Pay-per-event, billed by the Apify platform:

EventPriceCharged
Actor start$0.05Once per run
Result delivered$0.01Per creator profile in the dataset

A batch of 100 creators costs roughly $0.05 + 100 × $0.01 = $1.05. A residential proxy, if enabled in proxyConfiguration, is billed separately to your Apify account.

FAQ

Does it need an Instagram login? No. It never logs in and uses no cookies; primary data comes from public search and aggregator pages.

Why do some rows have engagement rate 0? Post-level data (likes/comments) was not available from the sources that succeeded for that profile. Profile-level fields (followers, tier, niche, sponsorship estimate) are still populated.

What about private accounts? They are analyzed with limited public data; profile.isPrivate is set to true when detected.

How accurate is the sponsorship estimate? It is a heuristic price band from audience tier base rates adjusted by engagement rate, niche, and content mix — a prospecting signal, not a quote.

Does it respect Instagram's terms? Only public-facing information is collected; no private data, no authentication.

Changelog

  • 2026-08-14 — Output dataset schema published (.actor/dataset_schema.json); agent-first README and MCP integration docs; fail-loud error semantics (exit 1 on invalid input or zero successful profiles); per-profile failures moved from billed dataset rows to the SUMMARY key-value record; proxy documentation corrected (optional, residential improves Instagram-direct only).