Get All Reels From an Instagram Profile (Full List, No Login)
Download every reel a public account has posted - URL, caption, date, views, likes and comments - in one request, up to 1,000 at a time, and save the lot to CSV.
- /v1/profile/reels
- /v1/profile/posts
Instagram's Reels tab loads a dozen at a time, forgets your place when you open one, and gives you no way to sort or export. /v1/profile/reels does the scrolling for you: it opens the tab in a real browser, walks it until it has as many reels as you asked for, and returns the whole catalogue as JSON.
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. One request, up to 1,000 reels
Pass the profile URL, @handle or bare username and a count. The pagination happens server-side, so there are no cursors to follow and no second call to make - you get one posts array back. Large counts simply take longer, so give the request a generous timeout.
2. What each reel carries
url and type, taken_at (Unix seconds), view_count, like_count, comment_count, the caption, the cover image_url and the owner. That's everything you need for a spreadsheet, a dashboard or a content audit.
3. Reels tab vs the main grid
/v1/profile/reels is the dedicated Reels tab. /v1/profile/posts is the main grid - photos, carousels and the reels the creator also shared to it. If you want a complete content history, call both and de-duplicate on url; if you only care about video performance, the Reels tab alone is the cleaner list.
Tips
meta.exhaustedistruewhen the account simply has fewer reels than you asked for - that's the signal you got everything, not an error.- Identical requests are cached for an hour, so a re-run while you tweak your parsing is instant.
- Private accounts return an error by design; only public profiles are readable.
- Want views over time rather than a snapshot? See the reels views tracker.
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}"
import csv
import datetime as dt
import requests
data = requests.get(
f"{BASE}/v1/profile/reels",
params={"channel_url": "nasa", "count": 200},
headers=HEADERS,
timeout=330,
).json()
reels = data["posts"]
fields = ["url", "taken_at", "view_count", "like_count", "comment_count", "caption"]
with open("reels.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["url", "posted", "views", "likes", "comments", "caption"])
for r in reels:
posted = dt.datetime.fromtimestamp(r["taken_at"]).date() if r.get("taken_at") else ""
writer.writerow([r["url"], posted, r.get("view_count") or 0, r.get("like_count") or 0,
r.get("comment_count") or 0, (r.get("caption") or "").replace("\n", " ")])
print(f"{len(reels)} reels saved to reels.csv")
if data.get("meta", {}).get("exhausted"):
print("That's the whole Reels tab - the account has no more.")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 download all reels from an Instagram profile?
Call /v1/profile/reels with the username and a count of up to 1,000. It returns every reel's URL and metadata in one response; the example below writes them straight to a CSV. For the video files themselves, pass each reel's URL to /v1/post/media, which returns direct CDN links.
How many reels can I fetch in one request?
Up to 1,000, set with count. The default is 12.
Can I get reels from an account I don't own?
Yes, as long as it's public. No login, no follow and no relationship with the account is required, and the account is not notified.
Does it work on private accounts?
No. Private profiles are not readable and return an error.
Can I get the reel video files, not just the links?
Yes - feed each reel URL to /v1/post/media for direct CDN URLs to the video and its cover image, then download those.