ClipLatch

Developers

Instagram Parse API

POST a public Instagram post URL, get back JSON with direct media URLs and metadata — the same pipeline that powers this site, exposed as an endpoint. Subscriptions and quotas run through our RapidAPI listing.

Found /api/parse in DevTools?

That endpoint is the website's own internal API. It is rate-limited per visitor IP, its response shape can change without notice, and calling it from your code will start failing the moment we tune either. The integration surface is POST /api/v1/parse — versioned, authenticated through RapidAPI, and stable: we treat its schema as a contract.

Request

One endpoint, JSON in, JSON out. Your exact gateway host, key header and ready-to-paste snippets in nine languages are generated on the RapidAPI listing page after subscribing (the free tier needs no card).

POST /api/v1/parse
Content-Type: application/json

{ "url": "https://www.instagram.com/reel/DbB4is3D0GM" }

Response

{
  "ok": true,
  "cached": false,
  "type": "reel",
  "notice": "Media URLs are signed by Instagram, expire roughly 108 hours after issue…",
  "medias": [
    {
      "url": "https://scontent-…cdninstagram.com/…mp4?…",
      "kind": "video_only",
      "quality": "1080p",
      "format": "mp4",
      "width": 1080,
      "height": 1920,
      "bitrate": 3374.3,
      "hasAudio": true,
      "audioUrl": "https://scontent-…cdninstagram.com/…m4a?…"
    }
  ],
  "metadata": {
    "author": "nasa",
    "caption": "…",
    "thumbnail": "https://…",
    "timestamp": "2026-07-18T14:02:11.000Z"
  }
}

Two things integrators trip on. First: video_only items carry a separate audioUrl — Instagram serves Reels as split DASH streams, so you mux the pair (ffmpeg -c copy is enough) or you ship silent video. Why, in detail. Second: the returned URLs are signed by Instagram, lapse roughly 108 hours after issue, and can be refused when fetched from a different network than the one that requested them — download promptly and re-parse rather than caching URLs. The signature, decoded.

Coverage, with measured numbers

Publishing our own success rates is unusual for this category; we'd rather you price retries on real numbers than discover them in production. Measured on live traffic, 2026-07-29 to 08-03:

URL shapeSupportedObserved success
/reel/ · /reels/yes~89%
/p/yes~50% — Instagram declines anonymous post requests far more often than reels
/tv/yes~20%, low volume
/stories/ · highlights · profilesrejected0 of 24 observed — expired or auth-gated; we refuse rather than bill you for it

Errors

Every failure carries retryable so your client knows whether another call can possibly help.

errorHTTPretryablemeaning
CONTENT_UNAVAILABLE422noPrivate, deleted, or no downloadable media. A retry cannot change this.
UNKNOWN / PARSE_ERROR422yesInstagram declined this anonymous request. The same URL often resolves on a later attempt.
RATE_LIMITED422yesInstagram-side throttling on the exit pool. Back off before retrying.
UNSUPPORTED_SHAPE422noStories, Highlights and profile URLs are rejected up front rather than billed for a near-certain failure.
SERVICE_BUSY429yesOur upstream capacity is saturated. Honour the Retry-After header.
INVALID_URL / INVALID_JSON400noMalformed body, or not an instagram.com URL.
UNAUTHORIZED401noRequest did not arrive through RapidAPI.

Limits we keep on purpose

Public content only — the API holds no Instagram session and never will, which is exactly why private accounts, Stories and Highlights are out of scope. We parse and return URLs; media bytes flow from Instagram's CDN to you, not through us. Not affiliated with Instagram or Meta.