`n
← Back to Opterik.com

Quick start

  1. Open the video on Pinterest and tap ••• → Copy link. On a computer you can copy the address bar instead.
  2. Go to PinGrab, paste the link and press Get video.
  3. Check the preview, choose a quality if there is more than one, and press Download MP4.

PinGrab reads the public pin page, finds the direct file on Pinterest's media servers and hands it to your browser. No account is needed and nothing is stored on our side.

Using the Pinterest app? The in-app browser can block downloads. Copy the link, then open Chrome or Safari and paste it there.

iPhone and iPad (Safari)

  1. Copy the pin link from the Pinterest app or website.
  2. Open Safari (not the Pinterest in-app browser) and go to PinGrab.
  3. Paste the link, press Get video, then Download MP4.
  4. Safari asks whether to download. Confirm, then open the Files app → Downloads.

On iOS 13 and newer downloads are saved in Files. To keep a video in Photos, open it from Files and use Share → Save Video (the Photos app accepts MP4 files).

Android (Chrome)

  1. Copy the link from Pinterest.
  2. Open Chrome, go to PinGrab and paste the link.
  3. Tap Get video then Download MP4.
  4. Chrome shows a download notification. The file is in Downloads, or in your Files app.

Windows, Mac, Linux

Paste the link in your browser, press Get video, then Download MP4. The file goes to your normal Downloads folder. The direct link button also copies the video URL if you prefer to use a download manager.

Common errors and fixes

MessageWhat it meansFix
That link is not from Pinterest The text is not a pin URL, or a board / profile link was pasted. Open one pin, tap ••• → Copy link, and use that.
That link does not contain a pin ID The URL is a short profile link or a search page. Use the full pin URL, for example pinterest.com/pin/123.../.
This pin does not exist The pin was deleted or the ID is wrong. Check the link in a browser; if Pinterest shows 404, the pin is gone.
Could not find a video on this pin The pin is private, region-restricted, or only has an image. Try a different pin, or use the image download if offered.
Pinterest is blocking requests Pinterest rate-limited the server for a moment. Wait a minute and press Get video again.
The download starts but the file will not play A few pins only exist as HEVC/AV1, which older players cannot decode. Try VLC or your phone's gallery app, or pick another quality.
Downloading does nothing You are in an in-app browser, or a pop-up blocker stopped it. Open the page in Safari or Chrome and allow downloads for the site.
The downloader API is not available The site is being served as plain static files without server.py. Start the API locally or deploy it (see below).

Quality, formats and limits

  • Video: MP4 (H.264) up to 720p, with the original audio and no watermark.
  • Cover: the original poster JPG, usually 1080 px wide or larger.
  • Photo pins: full-size JPG.
  • One pin at a time: boards, profiles and searches are not supported.
  • Public pins only: private boards and region-locked pins cannot be read.
  • Sizes: usually 2-20 MB. The exact size is shown before you download.

Some pins are published as adaptive HLS streams at 1080p. Those streams split video and audio into separate tracks that a browser cannot merge into a normal file, so PinGrab always offers the best ready-to-play MP4 instead.

Run PinGrab yourself

The website is static HTML, CSS and JavaScript. The downloader needs the small API in server.py because Pinterest does not allow browsers to read pin pages directly (no CORS headers).

On your own computer

  1. Install Python 3.9 or newer.
  2. Open a terminal in the project folder.
  3. Run python server.py and open http://localhost:8787.

On Windows you can also double-click serve.ps1 or run powershell -ExecutionPolicy Bypass -File serve.ps1.

Free / cheap hosting

  • Render, Railway, Fly.io: deploy the folder, set the start command to python server.py, and use the port from the PORT environment variable.
  • PythonAnywhere: upload the folder, create a Flask/WSGI wrapper or use their "Always-on" web app with a simple WSGI adapter. Python's built-in server is fine for light traffic.
  • VPS / cPanel with Python: run python server.py behind Nginx or Apache as a reverse proxy.
  • Static hosts (Netlify, Cloudflare Pages, GitHub Pages): the pages will load, but downloads need the API. Host the API on a subdomain and set api.base in js/config.js, then add that subdomain's origin to ALLOWED_ORIGINS on the server.

Configuration

Edit js/config.js for your domain, email and AdSense IDs. Server options are environment variables: PORT, HOST, ALLOWED_ORIGINS, RATE_LIMIT and RATE_WINDOW. The in-memory cache and rate limiter reset when the server restarts.

Privacy and safety

PinGrab does not ask for an account and does not keep your downloads. The server sees the pin URL and your IP address while it processes the request, and uses the IP only for rate limiting. See the privacy policy for details.

Still stuck?

Send the pin link, your device and the exact message to hello@opterik.com. Please do not send private or copyrighted videos.

Last updated: 29 October 2026.