Discover related Instagram profiles via Instagram's Suggested for You algorithm. Expand from 1-5 seed accounts to find similar creators, qualify leads, and grow your network. Filter by engagement, contact info, language, business category, and more.
Test runs that used the default demo seed now also write a USER_MESSAGE storage record (in addition to the existing console banner). API-origin runs that never open the run console will now see — wherever they read run output — that the run used the example seed (openai), the output was capped at 10 profiles for cheap testing, and the canonical input field for their own seeds is startUsernames. Previously the only signal was the console banner, so customers who started the actor programmatically with the example seed could end up with 10 unrelated test profiles and assume that's what the actor returned for their input.
Runs that returned 0 profiles because Instagram had no «Suggested for You» suggestions for the seed now show a distinct Stop Reason: "No related profiles found for seed account(s)" instead of completing identically to a successful run, and write a USER_MESSAGE storage record explaining what happened with three concrete next steps (try a more popular seed in the same niche, try the sibling Instagram Profile Scraper's keywordDiscovery mode, or add multiple seeds). Each affected seed is also recorded in SKIPPED_ACCOUNTS under a new category no_related_profiles. This is the most common failure mode for small / niche / non-English / very new seed accounts.
Unknown input field names now surface a warning in the run log and a USER_MESSAGE storage record instead of being silently dropped. Common typos and field names imported from sibling actors — e.g. profileUrls, seedAccounts, usernames, accounts, maxItems, maxResults, maxProfiles — are detected and mapped back to their canonical names (startUsernames, maxCountExpansion). Previously a run configured with the wrong field name would still execute but ignore the customer's intended values without any indication.
[0.0.20] - 2026-05-06
Changed
The "Estimated run time" log line is now closer to typical real-world durations. After the 0.0.19 retry-pacing + concurrency speedup, an 80-account run on this actor now typically finishes in about a minute on a clean upstream — the previous estimate of "~2m 30s" was over-predicting by 2× because it still carried the old retry-overhead buffer. The estimate now reflects the post-fix baseline. (On a slower upstream day the run can still take longer than the estimate — live progress is in the "Status:" heartbeat printed every 60s.)
[0.0.19] - 2026-05-06
Changed
Faster recovery from transient upstream errors. The retry-pacing wait between attempts on 5xx was reduced from 5s/10s/15s to 2s/4s/6s, so brief upstream wobbles no longer add minutes to a run. Successful retry rate is unchanged — observed runs already recovered within the first two attempts.
Higher concurrency ceiling (8 → 16 parallel requests). Until now, runs on plans with high upstream rate were capped at 8 concurrent requests by the actor itself; the new ceiling lets larger upstream rate plans translate into faster runs immediately.
The "Estimated run time" buffer was tightened from 1.5× to 1.25× to reflect the lower pacing overhead.
[0.0.18] - 2026-05-06
Changed
Phone-number extraction is now off by default. Most lead-gen workflows rely on email and website; phone-number availability on Instagram profiles is low. Toggle "Extract Phone Number" on in the input form if you need phones. Users who already had it enabled keep getting phone numbers as before.
The "Estimated run time" log line now factors in a 1.5× buffer for upstream retries, so the printed ETA matches real-world durations more closely on long runs.
[0.0.17] - 2026-05-06
Changed
The "All target accounts unreachable" diagnostic now spells out all common causes for a 404 — the account may be private, deleted, banned, or the username is misspelled — instead of only "deleted or username changed", so users have a clearer first-pass checklist when a target fails.
[0.0.16] - 2026-05-05
Fixed
"No profiles matched filters" is no longer reported on small runs that fetched zero expansion candidates upstream — it now fires only when at least one candidate was actually evaluated against your filters. Previously, a run with maxCountExpansion=1 could trip this diagnostic incorrectly when the fetch returned no candidates at all (a different root cause that should surface as "Completed successfully" with 0 saved, not as filter rejection).
[0.0.15] - 2026-05-05
Fixed
Dataset rows again land normally when a profile is missing follower / engagement metrics. Previously the dataset schema declared Followers Count, Following Count, Reels Count, Avg Likes, Avg Comments, Posts in Last 30 Days, Posts per Month, Total Posts, and Last Post Within (Days) as strict integers/numbers, but the actor emits the string "N/A" for these fields when the underlying value is unavailable — causing the platform to reject every push with "Schema validation failed" and the run to complete with 0 saved profiles. The 9 affected fields now accept either a number or the "N/A" sentinel.
[0.0.14] - 2026-05-05
Changed
Improved diagnostics when every expansion candidate is rejected by the configured filters. Runs now show Stop Reason: No profiles matched filters (instead of completing silently with 0 saved profiles or showing the misleading "User profile limit reached") and write a USER_MESSAGE storage record listing the top 3 filter rejections so it's easier to see which filter to relax.
[0.0.13] - 2026-05-05
Changed
Improved diagnostics when every seed account in a run is deleted, renamed, or private. Runs now show Stop Reason: All target accounts unreachable (instead of "Completed successfully") and write a USER_MESSAGE storage record explaining what happened, so paid runs against accounts that no longer exist surface a clear message rather than completing silently with 0 profiles.
Unreachable seed accounts (404 / private) are now recorded in the SKIPPED_ACCOUNTS storage record with category not_found / private / error. Previously seed-fetch failures were logged to console but absent from the storage record.
[0.0.12] - 2026-05-04
Maintenance build — no user-facing changes.
[0.0.11] - 2026-05-04
Fixed
Dataset rows again land normally. The 0.0.10 dataset-schema rollout introduced strict per-field validation (required-fields list + enum-locked Source / Email Source / Quality columns) that rejected real rows in some configurations and re-queued them indefinitely. Schema retained as documentation; the strict validators are removed.
[0.0.10] - 2026-05-04
Changed
README expanded with a full output sample, pricing math examples, three filter recipes (nano-influencer / B2B partnership / local market), an FAQ section, and a comparison table vs the other Instagram actors in this family.
Every output column now has a per-field description, type, and example available in the Apify Console's dataset view and to clients that read the actor schema programmatically.
Input field help text rewritten throughout — each field now leads with what it does and any prerequisites (e.g. "requires extractPosts=true"), so it's clearer what to set before running.
SEO title / description tightened on the Apify Store page (no functional change).
[0.0.9] - 2026-05-03
Fixed
"Last Post Within (Days)" now reflects the actual most-recent post date. Profiles with pinned posts (Instagram pins up to 3 to the top of the grid regardless of age) were reporting the pinned post's age instead of the latest activity, sometimes by hundreds of days. Affects both the column value and the lastPostDays filter.
"Median Views" and "Views/Followers Ratio" populate correctly for accounts that post Reels. Previously, these came back as 0 / 0.00% on most profiles because the calculation was reading from the feed-posts list (photos / carousels — no view counts) instead of the Reels list. Fixes the false-zero on the column and the corresponding viewFollowerRatioMin/viewFollowerRatioMax filter.
Accounts with no Reels at all now show "Median Views: N/A" instead of "0" — the prior 0 was misleading and made these profiles look like dead Reels accounts when really there were no Reels to measure.
Added
New SKIPPED_ACCOUNTS Storage record listing every username skipped during the run, with reason and category (filter, not_found, private, error). Open the Storage tab → SKIPPED_ACCOUNTS to see exactly which usernames hit which filter, and which ones errored (re-run those — most errors are transient). The Log also prints up to 3 examples per category at the end of the run.
[0.0.8] - 2026-05-01
Fixed
First-paid-run welcome banner referenced features that don't exist in this actor (Modes 1/2/3/4) and an incorrect free-plan cap (50 — actual is 5). Message rewritten to reflect what paid plan actually unlocks here: uncapped profiles per run, Search Depth 2, Reels-analytics filters, and Reels view metrics in the output. Message ID bumped to paid_first_run_v2.
[0.0.7] - 2026-05-01
Changed
Documentation: added a "Other Instagram Tools" section to the README, with one-line descriptions of the sibling Instagram actors.
[0.0.6] - 2026-04-30
Fixed
TEST RUN banner showed an incorrect "50, free-plan limit" cap that did not actually exist.
Changed
Demo-input runs (when start usernames are left at the example value) are now capped at 10 discovered profiles on any plan. This keeps the cost of trying the actor under ~$0.10. Custom seed inputs are unaffected — default "Max profiles" stays 0 (unlimited).
[0.0.5] - 2026-04-30
Fixed
Init slowdown under restricted permissions: switched named storage to actor-scoped names so brand-new runs no longer stall on cross-actor resource lookups.
Removed defensive 5-second timeout on dataset opens — calls now complete in under 200 ms under normal conditions.
[0.0.1] - 2026-04-30
Added
Initial release of Instagram Related Profiles Scraper.
Discover similar profiles via Instagram's Suggested for You algorithm starting from 1–5 seed accounts.
Configurable per-profile filters: minimum/maximum followers, language, business category, contact info type, verification status, website availability, account type.
Free plan limit: up to 5 discovered profiles per run.
Live status page (HTML) and run summary KVS record.
Resume from checkpoint for interrupted runs.
Pay-per-event pricing: $0.01 per profile analyzed (one event per discovered profile that was successfully retrieved and analyzed, regardless of whether it passed your filters).