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.
- /v1/search/keyword
- /v1/reels/search
- /v1/profile/tagged
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.
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
- Search the product name and the brand name separately - people often mention one without the other.
- Rank by likes plus comments to find the posts that actually moved people.
- Keyword search follows Instagram's relevance order; use reels search when recency matters.
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.