AudioGrab is a two-part project:
- Frontend β Next.js + TypeScript app (ideal for Vercel) that provides a modern UI and proxies audio download requests.
- Backend β FastAPI service that uses Instaloader and ffmpeg to download a reel and convert the video to MP3.
Both services are designed to run independently so you can deploy them to different platforms.
AudioGrab/
βββ backend/ # FastAPI service
β βββ main.py
β βββ requirements.txt
β βββ README.md
βββ frontend/ # Next.js application
β βββ pages/
β β βββ api/grab.ts
β β βββ index.tsx
β βββ package.json
β βββ tsconfig.json
β βββ README.md
βββ render.yaml # Render deployment config (installs ffmpeg)
βββ README.md
- Node.js 18+ (or use
nvm install 20for local work) - Python 3.11+ with
pip ffmpeginstalled locally (brew install ffmpegon macOS,sudo apt install ffmpegon Ubuntu)- Public Instagram reels must be accessible without authentication (Instaloader requirement)
cd backend
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
ffmpeg -version # ensure ffmpeg is on PATH
uvicorn main:app --reload --host 0.0.0.0 --port 8000The FastAPI docs will be served at http://127.0.0.1:8000/docs.
cd frontend
npm install
echo "AUDIOGRAB_BACKEND_URL=http://127.0.0.1:8000" > .env.local
npm run devVisit http://localhost:3000 and paste a public reel URL to download the MP3.
Frontend (/frontend):
npm run devβ start local Next.js dev servernpm run buildβ create a production buildnpm run startβ run production build locally
Backend (/backend):
uvicorn main:app --reloadβ run FastAPI with live reload
Enjoy the sounds! π§