Instagram Scraper API guides

Monitor Competitor Products on Instagram: Track Posts, Reels & Tags via API

Search Instagram posts and reels by product or brand name, pull the posts that tag a competitor, and turn them into a daily mention report - competitor and product monitoring in one Python script.

Competitors' launches, promos and creator deals show up on Instagram first. Three endpoints cover the ground: Instagram's own keyword search for the posts it ranks highest, a newest-first reels search for fresh mentions, and a brand's Tagged tab for the creators promoting it.

Try it free in your browser, no key needed →
Paste a URL, see the result as a table and export it. Come back here for the code when you want it automated.

Get your API key on RapidAPI

1. Search posts and reels by product name

/v1/search/keyword returns the posts and reels Instagram's search bar shows for a keyword, each with its caption, timestamp and like, comment and view counts - up to 1,000 per request.

2. Catch new reels as they're posted

/v1/reels/search lists reels matching a keyword newest first, each with a published_date. Ask for up to 2,000 in one call - pagination happens server-side. Run it daily and compare ids to get a new-mention alert.

3. See who promotes a competitor

/v1/profile/tagged on a competitor's handle returns the posts creators tagged it in - its ambassadors and UGC, with engagement for each post.

Tips

Full example (Python)

# Get an API key: https://rapidapi.com/goodstobkal-goodstobkal-default/api/instagram-scraper57
HOST = "YOUR-API-HOST.p.rapidapi.com"
HEADERS = {"x-rapidapi-key": "YOUR_RAPIDAPI_KEY", "x-rapidapi-host": HOST}
BASE = f"https://{HOST}"

from collections import Counter
import requests

def get(path, **params):
    r = requests.get(f"{BASE}{path}", params=params, headers=HEADERS, timeout=330)
    r.raise_for_status()
    return r.json()

product, competitor = "eufy camera", "eufy"

top_posts = get("/v1/search/keyword", q=product, count=50)["posts"]
new_reels = get("/v1/reels/search", q=product, count=200)["results"]
tagged = get("/v1/profile/tagged", channel_url=competitor, count=100)["posts"]

def engagement(p):
    return (p["like_count"] or 0) + (p["comment_count"] or 0)

print(f"Top posts for {product!r}:")
for p in sorted(top_posts, key=engagement, reverse=True)[:5]:
    print(f"  {engagement(p):>8,} likes+comments  {p['url']}")

print("New reels per day:")
per_day = Counter(r["published_date"] for r in new_reels if r["published_date"])
for day, n in sorted(per_day.items(), reverse=True)[:7]:
    print(f"  {day}  {n}")

print(f"Best posts tagging @{competitor}:")
for p in sorted(tagged, key=engagement, reverse=True)[:5]:
    print(f"  {engagement(p):>8,} likes+comments  {p['url']}")

Replace YOUR-API-HOST and YOUR_RAPIDAPI_KEY with the values from the listing's Endpoints tab on RapidAPI.

Frequently asked questions

How do I track competitor mentions on Instagram?

Search the competitor's brand and product names with /v1/search/keyword and /v1/reels/search, and pull its Tagged tab with /v1/profile/tagged. Store the post IDs and re-run daily to see what's new.

Can I search Instagram by keyword without logging in?

Yes. Both search endpoints take a plain keyword and your RapidAPI key - no Instagram account is involved on your side.

Are reels search results sorted by date?

Yes. /v1/reels/search returns reels newest first, and every result has a published_date.

More guides