There's no Instagram RSS feed. Here's what actually works.
No official Instagram RSS. Monitors polls public posts, diffs, and delivers signed webhooks or pullable JSON events — no login, no scraper bridge.
What usually breaks first
Common failure modes after a DIY scraper or marketplace API hits production — schema drift, billing surprises, and pagination quirks.
Instagram has no official RSS. Third-party bridges scrape the site, break on redesigns, and often ask for your login.
No RSS/Atom here either. GET /v1/instagram/profiles/{handle}/posts reads public posts; Monitors diffs on a schedule and delivers signed webhooks or pullable JSON events. Metered per-check pricing; stable schema and retried delivery.
6 routes for this job
These are the Instagram and Monitors routes that replace what an RSS-bridge scraper did — reading posts, and getting notified of new ones.
GET /v1/instagram/profiles/{handle}Public profile lookup — bio, follower count, verification, privateAccount — before you commit to watching an account.
GET /v1/instagram/profiles/{handle}/postsRecent posts for a profile, cursor-paginated — the same feed a browser sees, the underlying source the RSS-feed workaround was trying to replicate.
GET /v1/monitors/sourcesDiscover the watchable operationId for Instagram posts (instagram.profile.posts.list), its minimum interval, and a sample event.
POST /v1/monitorsCreate a monitor on a profile's posts — the "subscribe to this feed" step, delivered as a signed webhook instead of an RSS entry.
POST /v1/webhook-endpointsCreate the delivery target: a real URL, or a hosted test inbox (kind: "sink") to see it work with nothing deployed yet.
GET /v1/monitors/{id}/eventsPull new-post events directly, cursor-paginated — the closest thing to polling an RSS feed, if you'd rather not run a webhook receiver at all.
How teams wire this
Typical order starts with “confirm the account is public and worth watching.” Adjust cadence, schema, and thresholds to your stack.
- 1
Confirm the account is public and worth watching
GET /v1/instagram/profiles/{handle} tells you privateAccount and lookupStatus before you schedule anything against it — private accounts won't produce new-post events.
- 2
Read the feed once, the normal way
GET /v1/instagram/profiles/{handle}/posts returns recent posts, cursor-paginated. This is the source of truth Monitors diffs against, so it's worth understanding the shape first.
- 3
"Subscribe" by creating a monitor
POST /v1/monitors with instagram.profile.posts.list, the handle, and a schedule. Creation runs a synchronous baseline, so posts already there don't fire a false new_items event.
- 4
Pick push or pull
Attach a webhook endpoint for push delivery, or leave webhookEndpointId unset and pull GET /v1/monitors/{id}/events on your own cadence — a valid pull-only monitor, the closest match to RSS polling behavior.
- 5
Verify signed deliveries over the raw body
If you're using webhooks, verify with verifySignature or constructEvent from @socialfetch/sdk/webhooks before parsing — the signature is computed over the exact request bytes.
- 6
See it work before you build a reader for it
A hosted test inbox or npx socialfetch listen --forward-to <local-url> lets you see a real signed new_items event before you've written any consumption code at all.
Read a profile's recent posts — the feed Monitors diffs against.
Swap YOUR_API_KEY for a dashboard key. The playground pre-fills auth for the same path.
Why Monitors over an RSS-bridge scraper
- Never asks for your Instagram login — reads public data the same way a signed-out browser would.
- A documented, versioned JSON schema instead of scraped HTML selectors that silently break on Instagram's next redesign.
- Push delivery is signed and retried — 8 attempts over roughly 21 hours on failure — instead of a bridge's fixed poll interval with no delivery guarantee at all.
- Would rather poll than run a webhook receiver? GET /v1/monitors/{id}/events is a cursor-paginated JSON feed you can treat exactly like an RSS reader treats a feed URL.
- A hosted test inbox and the socialfetch listen CLI let you see a real event before you've deployed anything.
- Transparent per-check credit pricing instead of a free bridge whose maintainer is quietly absorbing scraping risk you can't see.
Try the Instagram RSS alternative on free credits
100 free credits — read a profile's posts, then create a monitor and watch a signed webhook (or a pull feed) do the job RSS never could for Instagram.