Download a competitor's Instagram
Runs the Intropix
PRO Instagram Posts & Reels Scraper on Apify
(
intropix/instagram-posts-reels-scraper-pro
), saves the posts, and writes a
short audit of the account.
Rules
- Public business, creator and brand accounts only. If the user asks for a
private person's account, say the scraper's terms do not allow it and stop.
- Tagged accounts, mentions and partners in the results can be private people:
do not scrape them in turn or build profiles of them.
- Keep the results only as long as the user's purpose needs them (the terms
suggest at most 30 days), and do not republish them as a dataset.
1. Build the input
json
{"usernames": ["nike"], "maxPosts": 50, "includeOffGridReels": true}
| Field | Use |
|---|
| The competitor's handle, without , or several to compare. |
| How many of the newest posts to read. 50 covers a few weeks for most brands. |
| Instead of when comparing several accounts: up to this many of EACH account's newest posts. |
| , | Optional (UTC) bounds, e.g. last quarter. |
| also counts reels shown only on the reels tab. |
| adds follower counts and categories for every co-author and sponsor brand ($0.005 per profile, paid Apify plans only). |
Several competitors: one run with
(e.g. 50) gives
each account the same depth; split the results by
and compare.
alone is one shared total spent in input order, so the first
account can use it all. A run holds at most 1,000 posts on a paid plan (10
on the free plan), filled account by account.
A free Apify plan delivers at most 10 posts per run and 40 results per day,
enough for a first look; a real audit needs a paid plan.
If the user needs only dates, captions, likes, comments and views, the standard
scraper
intropix/instagram-posts-reels-scraper
takes the same input at about
half the price.
2. Run the scraper
Use the first path that is available.
A. Apify tools are connected (tools named
and
, from the Apify connector or
):
call
with actor
intropix/instagram-posts-reels-scraper-pro
and
the input. If the run is not finished when the call returns, poll
until it is. Then read the results with
using the run's dataset id, and set
to the run's item count (the
default is 20). With a shell, write the returned items, as one JSON array, to
for step 3.
B. A shell with the Apify CLI (
prints 1.5 or later):
write the input to
, then run
bash
apify actors call intropix/instagram-posts-reels-scraper-pro --input-file input.json --json 2>/dev/null
Take
and
storage.defaultKeyValueStoreId
from the
printed JSON (do not add
: together with
it prints nothing).
Then save the results:
bash
apify datasets get-items <defaultDatasetId> --format json > items.json
apify datasets get-items <defaultDatasetId> --format csv > posts.csv
If the CLI says you are not logged in, ask the user to run
themselves (it opens a browser). Never ask the user to paste an API token into
the conversation.
C. Neither is available: tell the user to either connect Apify
(
) or install the CLI (
, then
). An Apify account is free to create. Stop there.
3. Save the media (if asked)
Media links expire within days. If the user wants the images and videos too,
with a shell and Python 3:
bash
python3 ${CLAUDE_SKILL_DIR}/scripts/save_media.py items.json instagram
(
is this skill's folder; use its real path if the variable
is not set.) Files land in
, each post recorded once in
.
4. Write the audit
From the items, report in plain language:
- Volume and rhythm: posts per week, the most common weekday and hour (UTC,
from ), share of reels vs photos vs carousels ().
- What performs: median and top , top 5 posts by
engagement and by with their . Leave out posts with
from rankings and say how many were left out.
- Content: most used , recurring caption themes, licensed tracks
vs original audio (, ), tagged places
(, ).
- Collaborations: , and posts with
; with , the partners' follower counts
from .
- The account: followers, , , post count.
Null means "not available", never zero. For several competitors, put the key
numbers side by side in one table.
If the run returned fewer posts than expected, read the run's
record
(
apify key-value-stores get-value <defaultKeyValueStoreId> OUTPUT
, or
get-key-value-store-record
with key
) and explain its
.
Cost
Paid by the user's own Apify account: $0.005 per run, $0.002 per account
scanned, $0.0039 per delivered post ($3.90 per 1,000), plus $0.005 per enriched
partner profile when
is on. Failed lookups are not charged.
Example: 50 posts of one competitor cost about $0.20.