Instagram Brand Prospector — Find Companies Ready to Advertise
Pricing
from $10.00 / 1,000 result delivereds
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
Maintained by CommunityActor stats
1
Bookmarked
26
Total users
1
Monthly active users
11 days ago
Last modified
Categories
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
SUMMARYkey-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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
usernames | array of strings | yes | — | Instagram usernames or profile URLs to analyze (e.g. "natgeo", "https://instagram.com/cristiano", "@handle"). |
includeRecentPosts | boolean | no | true | Analyze recent posts for engagement metrics when post data is available from the extraction sources. |
maxPostsPerProfile | integer | no | 12 | Maximum number of recent posts to analyze (1-12). |
proxyConfiguration | object | no | — | Optional 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
| Field | Type | Nullable | Description |
|---|---|---|---|
profile.username | string | no | Instagram handle (lowercase, no @). Always present. |
profile.id | string | yes | Instagram internal user ID. |
profile.fullName | string | yes | Display name. |
profile.biography | string | yes | Bio text (may be truncated when sourced from search snippets). |
profile.externalUrl | string | yes | Link-in-bio URL. |
profile.externalUrls | array | yes | All external links: { title, url }. |
profile.followersCount | number | yes | Follower count — cross-source consensus (median, outliers rejected). |
profile.followsCount | number | yes | Accounts followed. |
profile.postsCount | number | yes | Total posts (max across sources). |
profile.isBusinessAccount | boolean | yes | Business account flag. |
profile.businessCategoryName | string | yes | Instagram business category. |
profile.isPrivate | boolean | yes | Private account flag. |
profile.isVerified | boolean | yes | Verified badge flag. |
profile.profilePicUrl | string | yes | Profile picture URL. |
profile.profilePicUrlHD | string | yes | High-res profile picture URL. |
profile.relatedProfiles | array | yes | Related profiles: { username, fullName, isVerified } (Instagram-direct source only). |
profile.latestPosts | array | yes | Up 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
| Field | Type | Nullable | Description |
|---|---|---|---|
analysis.audienceTier | string | no | nano (1K-10K), micro (10K-100K), mid (100K-500K), macro (500K-1M), mega (1M-5M), celebrity (5M+). |
analysis.engagement.rate | number | no | (avg likes + avg comments) / followers × 100. Zero when no post data. |
analysis.engagement.avgLikesPerPost | number | no | Average likes per analyzed post. |
analysis.engagement.avgCommentsPerPost | number | no | Average comments per analyzed post. |
analysis.engagement.avgViewsPerReel | number | yes | Average reel/video views, when video data exists. |
analysis.engagement.likeToCommentRatio | number | no | Avg likes / avg comments. |
analysis.contentMix | object | no | Percent split: { images, videos, reels, carousels }. |
analysis.posting.frequency | string | no | daily, every_few_days, weekly, biweekly, monthly, or inactive. |
analysis.posting.avgPostsPerWeek | number | no | Posts per week over the analyzed window. |
analysis.posting.lastPostDate | string | yes | ISO 8601 timestamp of latest analyzed post. |
analysis.posting.daysSinceLastPost | number | yes | Days since latest analyzed post. |
analysis.niche | array | no | Up to 3 detected niches (fitness, beauty, fashion, food, travel, tech, gaming, music, photography, lifestyle, business, education, parenting, pets, art). |
analysis.shortsFocused | boolean | no | True when >50% of content is reels/short video. |
analysis.sponsorshipEstimate | object | no | { 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
| Field | Type | Nullable | Description |
|---|---|---|---|
meta.scrapedAt | string | no | ISO 8601 processing timestamp. |
meta.methodsUsed | array | no | Sources that succeeded: google, socialblade, instagram_direct, ninjalitics, bing, duckduckgo, wayback. |
meta.methodResults | array | no | Per-source attempt log: { method, success, data, error, latencyMs } — includes failed attempts with error reasons. |
meta.dataCompleteness | number | no | 0-100 data quality score. Pushed rows always score above 0. |
meta.warnings | array | no | Non-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 withInvalid 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
SUMMARYkey-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. SUMMARYrecord (default key-value store, keySUMMARY):{ 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 ApifyClientclient = 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:
| Event | Price | Charged |
|---|---|---|
| Actor start | $0.05 | Once per run |
| Result delivered | $0.01 | Per 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 theSUMMARYkey-value record; proxy documentation corrected (optional, residential improves Instagram-direct only).
