🌟Instagram Scraper Pro
Pricing
from $0.00005 / actor start
One per line: profile (instagram.com/nike/ or @nike), profile ID, post or reel URL (shortcode or numeric ID), hashtag (instagram.com/explore/tags/travel/ or #travel), place (instagram.com/explore/locations/7538318/), share links and story links. Each URL's type decides what it can return. URLs take priority over Search.
One content type per run. Profiles → posts, reels, mentions or details. Posts/reels → details or comments. Hashtags and places → posts, reels or details. Note: Instagram currently shows profile posts and reels to logged-out visitors; comments, mentions, hashtags, places and full profile details are often behind its login wall (those inputs get a free login_required row).
How many results to save for each URL or search hit. Comment replies (when turned on) are extra.
Stop the whole run after this many saved (and charged) results. 0 = no limit.
Comma-separated, e.g. "travel, fitness" for hashtags, "nike, adidas" for profiles, or "vintage shop copenhagen" for places. Hashtags without the #.
What to search for. Found items are scraped with the "Content to scrape" setting.
How many hashtags, profiles or places to take from each search term.
Relative ("3 days", "2 weeks", "6 months") or a date ("2024-09-05", "2024-09-05T13:22:04Z"). UTC. Leave empty for all posts. Profile scraping stops paging once it reaches older posts.
Leave out posts pinned to the top of a profile (often old).
Skip posts with fewer likes. Posts with hidden like counts are skipped when this is set. 0 = off.
Skip posts with fewer comments. 0 = off.
Fetch comments newest-first instead of Instagram's default "most relevant" order.
Also save replies to comments, each as its own row with parentCommentId. Replies don't count toward "Max results per URL".
Adds a parentData object to every row (the profile, hashtag, place or post it came from).
Adds one row per input that returned nothing (status = login_required / blocked / not_found / private / no_results / duplicate_input / invalid_input) with the reason and how to fix it. Never charged.
Remembers saved post, comment and profile IDs in a named key-value store, so scheduled runs only save (and charge) new items.
Name of the key-value store that remembers saved IDs. Lowercase letters, numbers and hyphens.
Saves the first 2 raw Instagram responses per method to the key-value store (RAW_* records). Turn on only when the developer asks for it.
If Instagram keeps blocking the chosen proxy, switch automatically to Apify datacenter proxy and then to the Apify server's own IP. The routes used are listed in RUN_SUMMARY.
Apify Proxy (datacenter, the default) works well for posts and reels. Instagram often rate-limits shared residential IPs, so RESIDENTIAL is not always better. With "Automatic proxy fallback" on, a blocked proxy is replaced automatically.
{ "useApifyProxy": true}